Repository: protocolbuffers/protobuf (language: python)

Issue:
Fix includes for rust-related cpp files
Many include paths pointed to files supposedly relative to `google/protobuf/` that were actually relative to the repository root.



Discussion / hints:
Hi Zoey, could you confirm if this [commit](https://github.com/protocolbuffers/protobuf/commit/cb86ccd7a1606d10b842ca40def21af0b9cd2e02) fixes your issue? It seems very similar to PR #18247 
That commit by itself still results in the following build failures:

```
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:199:14: Generating Descriptor Set proto_library //rust/test:import_public_primary_src_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //rust/test:import_public_primary_src_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies rust/test/import_public_grandparent.proto:rust/test/import_public_primary_src.proto ... (remaining 4 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_grandparent.proto: File not found.
rust/test/import_public_primary_src.proto:12:1: Import "google/protobuf/rust/test/import_public_grandparent.proto" was not found or had errors.

ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:216:14: Generating Rust proto_library //rust/test:import_public_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:import_public_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/import_public.proto rust/test/import_public2.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_primary_src.proto: File not found.
rust/test/import_public.proto:12:1: Import "google/protobuf/rust/test/import_public_primary_src.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:216:14: Generating Rust proto_library //rust/test:import_public_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:import_public_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/import_public.proto rust/test/import_public2.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_primary_src.proto: File not found.
rust/test/import_public.proto:12:1: Import "google/protobuf/rust/test/import_public_primary_src.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:253:14: Generating Rust proto_library //rust/test:no_package_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:no_package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/no_package.proto rust/test/no_package_other.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/no_package_import.proto: File not found.
rust/test/no_package.proto:10:1: Import "google/protobuf/rust/test/no_package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:253:14: Generating Descriptor Set proto_library //rust/test:no_package_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //rust/test:no_package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies rust/test/no_package_import.proto:rust/test/no_package.proto:rust/test/no_package_other.proto ... (remaining 5 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/no_package_import.proto: File not found.
rust/test/no_package.proto:10:1: Import "google/protobuf/rust/test/no_package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/editions/codegen_tests/BUILD:127:14: Generating Descriptor Set proto_library //editions/codegen_tests:proto2_proto3_enum_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //editions/codegen_tests:proto2_proto3_enum_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies ... (remaining 7 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
editions/codegen_tests/proto3_enum.proto: File not found.
google/protobuf/editions/codegen_tests/proto2_proto3_enum.proto:12:1: Import "editions/codegen_tests/proto3_enum.proto" was not found or had errors.
google/protobuf/editions/codegen_tests/proto2_proto3_enum.proto:15:12: "protobuf_editions_test.proto3.Proto3Enum" is not defined.
google/protobuf/editions/codegen_tests/proto2_proto3_enum.proto:16:12: "protobuf_editions_test.proto3.Proto3Enum" is not defined.
ERROR: /home/zoey/src/software/protobuf/editions/codegen_tests/BUILD:140:14: Generating Descriptor Set proto_library //editions/codegen_tests:proto3_import_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //editions/codegen_tests:proto3_import_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies ... (remaining 7 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
editions/codegen_tests/proto3_implicit.proto: File not found.
google/protobuf/editions/codegen_tests/proto3_import.proto:12:1: Import "editions/codegen_tests/proto3_implicit.proto" was not found or had errors.
google/protobuf/editions/codegen_tests/proto3_import.proto:15:3: "Proto3Implicit" is not defined.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:199:14: Generating upb minitables failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:import_public_primary_src_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--upb_minitable_out=bazel-out/k8-fastbuild/bin' ... (remaining 3 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_grandparent.proto: File not found.
rust/test/import_public_primary_src.proto:12:1: Import "google/protobuf/rust/test/import_public_grandparent.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:199:14: Generating Rust proto_library //rust/test:import_public_primary_src_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:import_public_primary_src_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/import_public_primary_src.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_grandparent.proto: File not found.
rust/test/import_public_primary_src.proto:12:1: Import "google/protobuf/rust/test/import_public_grandparent.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:423:14: Generating Rust proto_library //rust/test:fields-with-imported-types_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:fields-with-imported-types_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/fields_with_imported_types.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/imported_types.proto: File not found.
rust/test/fields_with_imported_types.proto:12:1: Import "google/protobuf/rust/test/imported_types.proto" was not found or had errors.
rust/test/fields_with_imported_types.proto:15:12: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:16:12: "imported_types.ImportedEnum" is not defined.
rust/test/fields_with_imported_types.proto:19:5: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:20:5: "imported_types.ImportedEnum" is not defined.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:216:14: Generating upb minitables failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:import_public_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--upb_minitable_out=bazel-out/k8-fastbuild/bin' ... (remaining 4 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/import_public_primary_src.proto: File not found.
rust/test/import_public.proto:12:1: Import "google/protobuf/rust/test/import_public_primary_src.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:253:14: Generating Rust proto_library //rust/test:no_package_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:no_package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/no_package.proto rust/test/no_package_other.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/no_package_import.proto: File not found.
rust/test/no_package.proto:10:1: Import "google/protobuf/rust/test/no_package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:253:14: Generating upb minitables failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:no_package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--upb_minitable_out=bazel-out/k8-fastbuild/bin' ... (remaining 4 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/no_package_import.proto: File not found.
rust/test/no_package.proto:10:1: Import "google/protobuf/rust/test/no_package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:286:14: Generating upb minitables failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--upb_minitable_out=bazel-out/k8-fastbuild/bin' ... (remaining 5 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/package_import.proto: File not found.
rust/test/package.proto:12:1: Import "google/protobuf/rust/test/package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:286:14: Generating Rust proto_library //rust/test:package_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/package.proto rust/test/package_other.proto ... (remaining 2 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/package_import.proto: File not found.
rust/test/package.proto:12:1: Import "google/protobuf/rust/test/package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:423:14: Generating Rust proto_library //rust/test:fields-with-imported-types_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:fields-with-imported-types_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/fields_with_imported_types.proto ... (remaining 1 argument skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/imported_types.proto: File not found.
rust/test/fields_with_imported_types.proto:12:1: Import "google/protobuf/rust/test/imported_types.proto" was not found or had errors.
rust/test/fields_with_imported_types.proto:15:12: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:16:12: "imported_types.ImportedEnum" is not defined.
rust/test/fields_with_imported_types.proto:19:5: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:20:5: "imported_types.ImportedEnum" is not defined.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:423:14: Generating upb minitables failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:fields-with-imported-types_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--upb_minitable_out=bazel-out/k8-fastbuild/bin' ... (remaining 3 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/imported_types.proto: File not found.
rust/test/fields_with_imported_types.proto:12:1: Import "google/protobuf/rust/test/imported_types.proto" was not found or had errors.
rust/test/fields_with_imported_types.proto:15:12: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:16:12: "imported_types.ImportedEnum" is not defined.
rust/test/fields_with_imported_types.proto:19:5: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:20:5: "imported_types.ImportedEnum" is not defined.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:286:14: Generating Rust proto_library //rust/test:package_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //rust/test:package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--rust_out=bazel-out/k8-fastbuild/bin/.' -I. rust/test/package.proto rust/test/package_other.proto ... (remaining 2 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/package_import.proto: File not found.
rust/test/package.proto:12:1: Import "google/protobuf/rust/test/package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:286:14: Generating Descriptor Set proto_library //rust/test:package_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //rust/test:package_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies ... (remaining 7 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/package_import.proto: File not found.
rust/test/package.proto:12:1: Import "google/protobuf/rust/test/package_import.proto" was not found or had errors.
ERROR: /home/zoey/src/software/protobuf/editions/codegen_tests/BUILD:140:14: Generating proto_library //editions/codegen_tests:proto3_import_proto failed: (Exit 1): protoc failed: error executing GenProto command (from target //editions/codegen_tests:proto3_import_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc '--cpp_out=bazel-out/k8-fastbuild/bin/editions/codegen_tests/_virtual_imports/proto3_import_proto' ... (remaining 4 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
editions/codegen_tests/proto3_implicit.proto: File not found.
google/protobuf/editions/codegen_tests/proto3_import.proto:12:1: Import "editions/codegen_tests/proto3_implicit.proto" was not found or had errors.
google/protobuf/editions/codegen_tests/proto3_import.proto:15:3: "Proto3Implicit" is not defined.
INFO: Analyzed 1980 targets (0 packages loaded, 0 targets configured).
ERROR: /home/zoey/src/software/protobuf/rust/test/BUILD:423:14: Generating Descriptor Set proto_library //rust/test:fields-with-imported-types_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //rust/test:fields-with-imported-types_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies rust/test/imported_types.proto:rust/test/fields_with_imported_types.proto ... (remaining 4 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
google/protobuf/rust/test/imported_types.proto: File not found.
rust/test/fields_with_imported_types.proto:12:1: Import "google/protobuf/rust/test/imported_types.proto" was not found or had errors.
rust/test/fields_with_imported_types.proto:15:12: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:16:12: "imported_types.ImportedEnum" is not defined.
rust/test/fields_with_imported_types.proto:19:5: "imported_types.ImportedMessage" is not defined.
rust/test/fields_with_imported_types.proto:20:5: "imported_types.ImportedEnum" is not defined.
ERROR: /home/zoey/src/software/protobuf/editions/codegen_tests/BUILD:98:14: Generating Descriptor Set proto_library //editions/codegen_tests:proto2_import_proto failed: (Exit 1): protoc failed: error executing GenProtoDescriptorSet command (from target //editions/codegen_tests:proto2_import_proto) bazel-out/k8-opt-exec-ST-a828a81199fe/bin/external/com_google_protobuf/protoc --direct_dependencies ... (remaining 7 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
editions/codegen_tests/proto2_optional.proto: File not found.
google/protobuf/editions/codegen_tests/proto2_import.proto:12:1: Import "editions/codegen_tests/proto2_optional.proto" was not found or had errors.
google/protobuf/editions/codegen_tests/proto2_import.proto:15:12: "Proto2Optional" is not defined.
ERROR: /home/zoey/src/software/protobuf/rust/test/benchmarks/BUILD:118:11: Compiling rust/test/benchmarks/benchmark_thunks.cc failed: (Exit 1): gcc failed: error executing CppCompile command (from target //rust/test/benchmarks:benchmark_thunks) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++14' -MD -MF ... (remaining 54 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
rust/test/benchmarks/benchmark_thunks.cc:3:10: fatal error: google/protobuf/rust/test/benchmarks/bench_data.pb.h: No such file or directory
    3 | #include "google/protobuf/rust/test/benchmarks/bench_data.pb.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
ERROR: /home/zoey/src/software/protobuf/rust/test/shared/utf8/BUILD:38:8: Compiling rust/test/shared/utf8/utf8_test.cc failed: (Exit 1): gcc failed: error executing CppCompile command (from target //rust/test/shared/utf8:utf8_pure_cc_test) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++14' -MD -MF ... (remaining 78 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
rust/test/shared/utf8/utf8_test.cc:6:10: fatal error: google/protobuf/rust/test/shared/utf8/feature_verify.pb.h: No such file or directory
    6 | #include "google/protobuf/rust/test/shared/utf8/feature_verify.pb.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
```
It looks like the `benchmark_thunks.cc` failure is due to files that have since been removed, but I believe the rest are still valid.
I rebased my changes on `main`; the current PR reflects the changes I still have to make to fix the build errors.
SGTM. Let me reach out to @mkruskal-google. It looks like a similar issue.
This is a similar problem to the one fixed by that commit, but it requires an additional fix.  This can only be fixed internally, as the issue is with our copybara transforms

Fix patch:
diff --git a/php/ext/google/protobuf/wkt.inc b/php/ext/google/protobuf/wkt.inc
index a093995a61d3..6902c4f0f039 100644
--- a/php/ext/google/protobuf/wkt.inc
+++ b/php/ext/google/protobuf/wkt.inc
@@ -1622,12 +1622,12 @@ static void google_protobuf_Timestamp_ModuleInit() {
 
 zend_class_entry* GPBMetadata_Google_Protobuf_Type_ce;
 
-const char google_protobuf_type_proto_descriptor [1647] = {
+const char google_protobuf_type_proto_descriptor [1592] = {
 '\n', '\032', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'y', 'p', 'e', '.', 'p', 'r', 
 'o', 't', 'o', '\022', '\017', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '\032', '\031', 'g', 'o', 'o', 
 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'g', 
 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 's', 'o', 'u', 'r', 'c', 'e', '_', 'c', 'o', 'n', 
-'t', 'e', 'x', 't', '.', 'p', 'r', 'o', 't', 'o', '\"', '\350', '\001', '\n', '\004', 'T', 'y', 'p', 'e', '\022', '\014', '\n', '\004', 'n', 'a', 
+'t', 'e', 'x', 't', '.', 'p', 'r', 'o', 't', 'o', '\"', '\327', '\001', '\n', '\004', 'T', 'y', 'p', 'e', '\022', '\014', '\n', '\004', 'n', 'a', 
 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', '\022', '&', '\n', '\006', 'f', 'i', 'e', 'l', 'd', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', 
 '\026', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', '\022', '\016', 
 '\n', '\006', 'o', 'n', 'e', 'o', 'f', 's', '\030', '\003', ' ', '\003', '(', '\t', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', 
@@ -1636,59 +1636,57 @@ const char google_protobuf_type_proto_descriptor [1647] = {
 '\005', ' ', '\001', '(', '\013', '2', '\036', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 
 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\'', '\n', '\006', 's', 'y', 'n', 't', 'a', 'x', '\030', '\006', ' ', 
 '\001', '(', '\016', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'y', 'n', 
-'t', 'a', 'x', '\022', '\017', '\n', '\007', 'e', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\t', '\"', '\325', '\005', '\n', '\005', 
-'F', 'i', 'e', 'l', 'd', '\022', ')', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\033', '.', 'g', 'o', 'o', 
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', '.', 'K', 'i', 'n', 'd', '\022', '7', 
-'\n', '\013', 'c', 'a', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\030', '\002', ' ', '\001', '(', '\016', '2', '\"', '.', 'g', 'o', 'o', 
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', '.', 'C', 'a', 'r', 'd', 'i', 'n', 
-'a', 'l', 'i', 't', 'y', '\022', '\016', '\n', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\005', '\022', '\014', '\n', '\004', 
-'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', '\022', '\020', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\006', ' ', 
-'\001', '(', '\t', '\022', '\023', '\n', '\013', 'o', 'n', 'e', 'o', 'f', '_', 'i', 'n', 'd', 'e', 'x', '\030', '\007', ' ', '\001', '(', '\005', '\022', 
-'\016', '\n', '\006', 'p', 'a', 'c', 'k', 'e', 'd', '\030', '\010', ' ', '\001', '(', '\010', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 
-'s', '\030', '\t', ' ', '\003', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 
-'.', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\021', '\n', '\t', 'j', 's', 'o', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', 
-'\t', '\022', '\025', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\013', ' ', '\001', '(', '\t', '\"', 
-'\310', '\002', '\n', '\004', 'K', 'i', 'n', 'd', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', 
-'\000', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'D', 'O', 'U', 'B', 'L', 'E', '\020', '\001', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 
-'E', '_', 'F', 'L', 'O', 'A', 'T', '\020', '\002', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'I', 'N', 'T', '6', '4', '\020', '\003', 
-'\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'U', 'I', 'N', 'T', '6', '4', '\020', '\004', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', 
-'_', 'I', 'N', 'T', '3', '2', '\020', '\005', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 'F', 'I', 'X', 'E', 'D', '6', '4', '\020', 
-'\006', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 'F', 'I', 'X', 'E', 'D', '3', '2', '\020', '\007', '\022', '\r', '\n', '\t', 'T', 'Y', 
-'P', 'E', '_', 'B', 'O', 'O', 'L', '\020', '\010', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', 
-'\t', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'G', 'R', 'O', 'U', 'P', '\020', '\n', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', 
-'_', 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\020', '\013', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'B', 'Y', 'T', 'E', 'S', '\020', 
-'\014', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'U', 'I', 'N', 'T', '3', '2', '\020', '\r', '\022', '\r', '\n', '\t', 'T', 'Y', 'P', 
-'E', '_', 'E', 'N', 'U', 'M', '\020', '\016', '\022', '\021', '\n', '\r', 'T', 'Y', 'P', 'E', '_', 'S', 'F', 'I', 'X', 'E', 'D', '3', '2', 
-'\020', '\017', '\022', '\021', '\n', '\r', 'T', 'Y', 'P', 'E', '_', 'S', 'F', 'I', 'X', 'E', 'D', '6', '4', '\020', '\020', '\022', '\017', '\n', '\013', 
-'T', 'Y', 'P', 'E', '_', 'S', 'I', 'N', 'T', '3', '2', '\020', '\021', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'S', 'I', 'N', 
-'T', '6', '4', '\020', '\022', '\"', 't', '\n', '\013', 'C', 'a', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\022', '\027', '\n', '\023', 'C', 
-'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\030', '\n', '\024', 'C', 
-'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'O', 'P', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\001', '\022', '\030', '\n', '\024', 
-'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'R', 'E', 'Q', 'U', 'I', 'R', 'E', 'D', '\020', '\002', '\022', '\030', '\n', 
-'\024', 'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'R', 'E', 'P', 'E', 'A', 'T', 'E', 'D', '\020', '\003', '\"', '\337', 
-'\001', '\n', '\004', 'E', 'n', 'u', 'm', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', '\022', '-', '\n', '\t', 
-'e', 'n', 'u', 'm', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'E', 'n', 'u', 'm', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 
-'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 
-'b', 'u', 'f', '.', 'O', 'p', 't', 'i', 'o', 'n', '\022', '6', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'c', 'o', 'n', 't', 
-'e', 'x', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 
-'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\'', '\n', '\006', 's', 'y', 'n', 't', 'a', 
-'x', '\030', '\005', ' ', '\001', '(', '\016', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 
-'.', 'S', 'y', 'n', 't', 'a', 'x', '\022', '\017', '\n', '\007', 'e', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', '(', '\t', '\"', 
-'S', '\n', '\t', 'E', 'n', 'u', 'm', 'V', 'a', 'l', 'u', 'e', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', 
-'\t', '\022', '\016', '\n', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\005', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 
-'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 
-'u', 'f', '.', 'O', 'p', 't', 'i', 'o', 'n', '\"', ';', '\n', '\006', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\014', '\n', '\004', 'n', 'a', 
-'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', '\022', '#', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', 
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', '*', 'C', '\n', '\006', 'S', 
-'y', 'n', 't', 'a', 'x', '\022', '\021', '\n', '\r', 'S', 'Y', 'N', 'T', 'A', 'X', '_', 'P', 'R', 'O', 'T', 'O', '2', '\020', '\000', '\022', 
-'\021', '\n', '\r', 'S', 'Y', 'N', 'T', 'A', 'X', '_', 'P', 'R', 'O', 'T', 'O', '3', '\020', '\001', '\022', '\023', '\n', '\017', 'S', 'Y', 'N', 
-'T', 'A', 'X', '_', 'E', 'D', 'I', 'T', 'I', 'O', 'N', 'S', '\020', '\002', 'B', '{', '\n', '\023', 'c', 'o', 'm', '.', 'g', 'o', 'o', 
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\t', 'T', 'y', 'p', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 
-'Z', '-', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n', 'g', '.', 'o', 'r', 'g', '/', 'p', 'r', 'o', 't', 'o', 
-'b', 'u', 'f', '/', 't', 'y', 'p', 'e', 's', '/', 'k', 'n', 'o', 'w', 'n', '/', 't', 'y', 'p', 'e', 'p', 'b', '\370', '\001', '\001', 
-'\242', '\002', '\003', 'G', 'P', 'B', '\252', '\002', '\036', 'G', 'o', 'o', 'g', 'l', 'e', '.', 'P', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 
-'W', 'e', 'l', 'l', 'K', 'n', 'o', 'w', 'n', 'T', 'y', 'p', 'e', 's', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', 
+'t', 'a', 'x', '\"', '\325', '\005', '\n', '\005', 'F', 'i', 'e', 'l', 'd', '\022', ')', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', 
+'(', '\016', '2', '\033', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 
+'d', '.', 'K', 'i', 'n', 'd', '\022', '7', '\n', '\013', 'c', 'a', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\030', '\002', ' ', '\001', 
+'(', '\016', '2', '\"', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 
+'d', '.', 'C', 'a', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\022', '\016', '\n', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\003', 
+' ', '\001', '(', '\005', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', '\022', '\020', '\n', '\010', 't', 'y', 'p', 
+'e', '_', 'u', 'r', 'l', '\030', '\006', ' ', '\001', '(', '\t', '\022', '\023', '\n', '\013', 'o', 'n', 'e', 'o', 'f', '_', 'i', 'n', 'd', 'e', 
+'x', '\030', '\007', ' ', '\001', '(', '\005', '\022', '\016', '\n', '\006', 'p', 'a', 'c', 'k', 'e', 'd', '\030', '\010', ' ', '\001', '(', '\010', '\022', '(', 
+'\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\021', '\n', '\t', 'j', 's', 'o', 'n', '_', 'n', 
+'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', '\t', '\022', '\025', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 
+'e', '\030', '\013', ' ', '\001', '(', '\t', '\"', '\310', '\002', '\n', '\004', 'K', 'i', 'n', 'd', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 
+'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'D', 'O', 'U', 'B', 'L', 'E', '\020', 
+'\001', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'F', 'L', 'O', 'A', 'T', '\020', '\002', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', 
+'_', 'I', 'N', 'T', '6', '4', '\020', '\003', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'U', 'I', 'N', 'T', '6', '4', '\020', '\004', 
+'\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'I', 'N', 'T', '3', '2', '\020', '\005', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 
+'F', 'I', 'X', 'E', 'D', '6', '4', '\020', '\006', '\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 'F', 'I', 'X', 'E', 'D', '3', '2', 
+'\020', '\007', '\022', '\r', '\n', '\t', 'T', 'Y', 'P', 'E', '_', 'B', 'O', 'O', 'L', '\020', '\010', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', 
+'_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\t', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 'E', '_', 'G', 'R', 'O', 'U', 'P', '\020', '\n', 
+'\022', '\020', '\n', '\014', 'T', 'Y', 'P', 'E', '_', 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\020', '\013', '\022', '\016', '\n', '\n', 'T', 'Y', 'P', 
+'E', '_', 'B', 'Y', 'T', 'E', 'S', '\020', '\014', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'U', 'I', 'N', 'T', '3', '2', '\020', 
+'\r', '\022', '\r', '\n', '\t', 'T', 'Y', 'P', 'E', '_', 'E', 'N', 'U', 'M', '\020', '\016', '\022', '\021', '\n', '\r', 'T', 'Y', 'P', 'E', '_', 
+'S', 'F', 'I', 'X', 'E', 'D', '3', '2', '\020', '\017', '\022', '\021', '\n', '\r', 'T', 'Y', 'P', 'E', '_', 'S', 'F', 'I', 'X', 'E', 'D', 
+'6', '4', '\020', '\020', '\022', '\017', '\n', '\013', 'T', 'Y', 'P', 'E', '_', 'S', 'I', 'N', 'T', '3', '2', '\020', '\021', '\022', '\017', '\n', '\013', 
+'T', 'Y', 'P', 'E', '_', 'S', 'I', 'N', 'T', '6', '4', '\020', '\022', '\"', 't', '\n', '\013', 'C', 'a', 'r', 'd', 'i', 'n', 'a', 'l', 
+'i', 't', 'y', '\022', '\027', '\n', '\023', 'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 
+'N', '\020', '\000', '\022', '\030', '\n', '\024', 'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'O', 'P', 'T', 'I', 'O', 'N', 
+'A', 'L', '\020', '\001', '\022', '\030', '\n', '\024', 'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'R', 'E', 'Q', 'U', 'I', 
+'R', 'E', 'D', '\020', '\002', '\022', '\030', '\n', '\024', 'C', 'A', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '_', 'R', 'E', 'P', 'E', 
+'A', 'T', 'E', 'D', '\020', '\003', '\"', '\316', '\001', '\n', '\004', 'E', 'n', 'u', 'm', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', 
+' ', '\001', '(', '\t', '\022', '-', '\n', '\t', 'e', 'n', 'u', 'm', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\032', 
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'E', 'n', 'u', 'm', 'V', 'a', 'l', 'u', 
+'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'O', 'p', 't', 'i', 'o', 'n', '\022', '6', '\n', '\016', 's', 'o', 'u', 
+'r', 'c', 'e', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'g', 'o', 'o', 'g', 'l', 
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 
+'\'', '\n', '\006', 's', 'y', 'n', 't', 'a', 'x', '\030', '\005', ' ', '\001', '(', '\016', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'y', 'n', 't', 'a', 'x', '\"', 'S', '\n', '\t', 'E', 'n', 'u', 'm', 'V', 'a', 
+'l', 'u', 'e', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', '\022', '\016', '\n', '\006', 'n', 'u', 'm', 'b', 
+'e', 'r', '\030', '\002', ' ', '\001', '(', '\005', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', 
+'2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'O', 'p', 't', 'i', 'o', 'n', 
+'\"', ';', '\n', '\006', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\014', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', '\022', 
+'#', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', '*', '.', '\n', '\006', 'S', 'y', 'n', 't', 'a', 'x', '\022', '\021', '\n', '\r', 
+'S', 'Y', 'N', 'T', 'A', 'X', '_', 'P', 'R', 'O', 'T', 'O', '2', '\020', '\000', '\022', '\021', '\n', '\r', 'S', 'Y', 'N', 'T', 'A', 'X', 
+'_', 'P', 'R', 'O', 'T', 'O', '3', '\020', '\001', 'B', '{', '\n', '\023', 'c', 'o', 'm', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 
+'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\t', 'T', 'y', 'p', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '-', 'g', 'o', 'o', 
+'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n', 'g', '.', 'o', 'r', 'g', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 
+'y', 'p', 'e', 's', '/', 'k', 'n', 'o', 'w', 'n', '/', 't', 'y', 'p', 'e', 'p', 'b', '\370', '\001', '\001', '\242', '\002', '\003', 'G', 'P', 
+'B', '\252', '\002', '\036', 'G', 'o', 'o', 'g', 'l', 'e', '.', 'P', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'W', 'e', 'l', 'l', 'K', 
+'n', 'o', 'w', 'n', 'T', 'y', 'p', 'e', 's', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', 
 };
 
 static void google_protobuf_type_proto_AddDescriptor() {
@@ -1858,28 +1856,6 @@ static PHP_METHOD(google_protobuf_Type, setSyntax) {
   RETURN_COPY(getThis());
 }
 
-static PHP_METHOD(google_protobuf_Type, getEdition) {
-  Message* intern = (Message*)Z_OBJ_P(getThis());
-  const upb_FieldDef *f = upb_MessageDef_FindFieldByName(
-      intern->desc->msgdef, "edition");
-  zval ret;
-  Message_get(intern, f, &ret);
-  RETURN_COPY_VALUE(&ret);
-}
-
-static PHP_METHOD(google_protobuf_Type, setEdition) {
-  Message* intern = (Message*)Z_OBJ_P(getThis());
-  const upb_FieldDef *f = upb_MessageDef_FindFieldByName(
-      intern->desc->msgdef, "edition");
-  zval *val;
-  if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &val)
-      == FAILURE) {
-    return;
-  }
-  Message_set(intern, f, val);
-  RETURN_COPY(getThis());
-}
-
 static zend_function_entry google_protobuf_Type_phpmethods[] = {
   PHP_ME(google_protobuf_Type, __construct, arginfo_construct, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Type, getName, arginfo_void, ZEND_ACC_PUBLIC)
@@ -1894,8 +1870,6 @@ static zend_function_entry google_protobuf_Type_phpmethods[] = {
   PHP_ME(google_protobuf_Type, setSourceContext, arginfo_setter, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Type, getSyntax, arginfo_void, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Type, setSyntax, arginfo_setter, ZEND_ACC_PUBLIC)
-  PHP_ME(google_protobuf_Type, getEdition, arginfo_void, ZEND_ACC_PUBLIC)
-  PHP_ME(google_protobuf_Type, setEdition, arginfo_setter, ZEND_ACC_PUBLIC)
   ZEND_FE_END
 };
 
@@ -2466,28 +2440,6 @@ static PHP_METHOD(google_protobuf_Enum, setSyntax) {
   RETURN_COPY(getThis());
 }
 
-static PHP_METHOD(google_protobuf_Enum, getEdition) {
-  Message* intern = (Message*)Z_OBJ_P(getThis());
-  const upb_FieldDef *f = upb_MessageDef_FindFieldByName(
-      intern->desc->msgdef, "edition");
-  zval ret;
-  Message_get(intern, f, &ret);
-  RETURN_COPY_VALUE(&ret);
-}
-
-static PHP_METHOD(google_protobuf_Enum, setEdition) {
-  Message* intern = (Message*)Z_OBJ_P(getThis());
-  const upb_FieldDef *f = upb_MessageDef_FindFieldByName(
-      intern->desc->msgdef, "edition");
-  zval *val;
-  if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &val)
-      == FAILURE) {
-    return;
-  }
-  Message_set(intern, f, val);
-  RETURN_COPY(getThis());
-}
-
 static zend_function_entry google_protobuf_Enum_phpmethods[] = {
   PHP_ME(google_protobuf_Enum, __construct, arginfo_construct, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Enum, getName, arginfo_void, ZEND_ACC_PUBLIC)
@@ -2500,8 +2452,6 @@ static zend_function_entry google_protobuf_Enum_phpmethods[] = {
   PHP_ME(google_protobuf_Enum, setSourceContext, arginfo_setter, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Enum, getSyntax, arginfo_void, ZEND_ACC_PUBLIC)
   PHP_ME(google_protobuf_Enum, setSyntax, arginfo_setter, ZEND_ACC_PUBLIC)
-  PHP_ME(google_protobuf_Enum, getEdition, arginfo_void, ZEND_ACC_PUBLIC)
-  PHP_ME(google_protobuf_Enum, setEdition, arginfo_setter, ZEND_ACC_PUBLIC)
   ZEND_FE_END
 };
 
@@ -2753,8 +2703,6 @@ static void google_protobuf_Syntax_ModuleInit() {
                                    strlen("SYNTAX_PROTO2"), 0);
   zend_declare_class_constant_long(google_protobuf_Syntax_ce, "SYNTAX_PROTO3",
                                    strlen("SYNTAX_PROTO3"), 1);
-  zend_declare_class_constant_long(google_protobuf_Syntax_ce, "SYNTAX_EDITIONS",
-                                   strlen("SYNTAX_EDITIONS"), 2);
 }
 
 /* google/protobuf/wrappers.proto */
diff --git a/php/src/GPBMetadata/Google/Protobuf/Any.php b/php/src/GPBMetadata/Google/Protobuf/Any.php
index c9a295201073..fbce4bfdb10f 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Any.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Any.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/any.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,13 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xD4\x01\x0A\x19google/protobuf/any.proto\x12\x0Fgoogle.protobuf\"&\x0A\x03Any\x12\x10\x0A\x08type_url\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x0CBv\x0A\x13com.google.protobufB\x08AnyProtoP\x01Z,google.golang.org/protobuf/types/known/anypb\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/any.protogoogle.protobuf"&
+Any
+type_url (	
+value (Bv
+com.google.protobufBAnyProtoPZ,google.golang.org/protobuf/types/known/anypb�GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/Api.php b/php/src/GPBMetadata/Google/Protobuf/Api.php
index 4485d3d0b340..75e0ec631805 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Api.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Api.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/api.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -18,7 +17,29 @@ public static function initOnce() {
         \GPBMetadata\Google\Protobuf\SourceContext::initOnce();
         \GPBMetadata\Google\Protobuf\Type::initOnce();
         $pool->internalAddGeneratedFile(
-            "\x0A\xC9\x05\x0A\x19google/protobuf/api.proto\x12\x0Fgoogle.protobuf\x1A\x1Agoogle/protobuf/type.proto\"\x81\x02\x0A\x03Api\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12(\x0A\x07methods\x18\x02 \x03(\x0B2\x17.google.protobuf.Method\x12(\x0A\x07options\x18\x03 \x03(\x0B2\x17.google.protobuf.Option\x12\x0F\x0A\x07version\x18\x04 \x01(\x09\x126\x0A\x0Esource_context\x18\x05 \x01(\x0B2\x1E.google.protobuf.SourceContext\x12&\x0A\x06mixins\x18\x06 \x03(\x0B2\x16.google.protobuf.Mixin\x12'\x0A\x06syntax\x18\x07 \x01(\x0E2\x17.google.protobuf.Syntax\"\xD5\x01\x0A\x06Method\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x18\x0A\x10request_type_url\x18\x02 \x01(\x09\x12\x19\x0A\x11request_streaming\x18\x03 \x01(\x08\x12\x19\x0A\x11response_type_url\x18\x04 \x01(\x09\x12\x1A\x0A\x12response_streaming\x18\x05 \x01(\x08\x12(\x0A\x07options\x18\x06 \x03(\x0B2\x17.google.protobuf.Option\x12'\x0A\x06syntax\x18\x07 \x01(\x0E2\x17.google.protobuf.Syntax\"#\x0A\x05Mixin\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x0C\x0A\x04root\x18\x02 \x01(\x09Bv\x0A\x13com.google.protobufB\x08ApiProtoP\x01Z,google.golang.org/protobuf/types/known/apipb\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/api.protogoogle.protobufgoogle/protobuf/type.proto"�
+Api
+name (	(
+methods (2.google.protobuf.Method(
+options (2.google.protobuf.Option
+version (	6
+source_context (2.google.protobuf.SourceContext&
+mixins (2.google.protobuf.Mixin\'
+syntax (2.google.protobuf.Syntax"�
+Method
+name (	
+request_type_url (	
+request_streaming (
+response_type_url (	
+response_streaming ((
+options (2.google.protobuf.Option\'
+syntax (2.google.protobuf.Syntax"#
+Mixin
+name (	
+root (	Bv
+com.google.protobufBApiProtoPZ,google.golang.org/protobuf/types/known/apipb�GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/Duration.php b/php/src/GPBMetadata/Google/Protobuf/Duration.php
index 29e02a84517a..5d8023e4db9e 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Duration.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Duration.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/duration.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,13 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xEB\x01\x0A\x1Egoogle/protobuf/duration.proto\x12\x0Fgoogle.protobuf\"*\x0A\x08Duration\x12\x0F\x0A\x07seconds\x18\x01 \x01(\x03\x12\x0D\x0A\x05nanos\x18\x02 \x01(\x05B\x83\x01\x0A\x13com.google.protobufB\x0DDurationProtoP\x01Z1google.golang.org/protobuf/types/known/durationpb\xF8\x01\x01\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/duration.protogoogle.protobuf"*
+Duration
+seconds (
+nanos (B�
+com.google.protobufBDurationProtoPZ1google.golang.org/protobuf/types/known/durationpb��GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/FieldMask.php b/php/src/GPBMetadata/Google/Protobuf/FieldMask.php
index 394e41043a75..f31bcc001245 100644
--- a/php/src/GPBMetadata/Google/Protobuf/FieldMask.php
+++ b/php/src/GPBMetadata/Google/Protobuf/FieldMask.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/field_mask.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,12 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xDF\x01\x0A google/protobuf/field_mask.proto\x12\x0Fgoogle.protobuf\"\x1A\x0A\x09FieldMask\x12\x0D\x0A\x05paths\x18\x01 \x03(\x09B\x85\x01\x0A\x13com.google.protobufB\x0EFieldMaskProtoP\x01Z2google.golang.org/protobuf/types/known/fieldmaskpb\xF8\x01\x01\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+ google/protobuf/field_mask.protogoogle.protobuf"
+	FieldMask
+paths (	B�
+com.google.protobufBFieldMaskProtoPZ2google.golang.org/protobuf/types/known/fieldmaskpb��GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php b/php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php
index 2842d0e9928e..5e42536f270c 100644
--- a/php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php
+++ b/php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/empty.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,12 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xBE\x01\x0A\x1Bgoogle/protobuf/empty.proto\x12\x0Fgoogle.protobuf\"\x07\x0A\x05EmptyB}\x0A\x13com.google.protobufB\x0AEmptyProtoP\x01Z.google.golang.org/protobuf/types/known/emptypb\xF8\x01\x01\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/empty.protogoogle.protobuf"
+EmptyB}
+com.google.protobufB
+EmptyProtoPZ.google.golang.org/protobuf/types/known/emptypb��GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php b/php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php
index c2af953db2f7..4247c09546d3 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace GPBMetadata\Google\Protobuf\Internal;
@@ -32,7 +31,7 @@ public static function initOnce() {
             ->optional('options', \Google\Protobuf\Internal\GPBType::MESSAGE, 8, 'google.protobuf.internal.FileOptions')
             ->optional('source_code_info', \Google\Protobuf\Internal\GPBType::MESSAGE, 9, 'google.protobuf.internal.SourceCodeInfo')
             ->optional('syntax', \Google\Protobuf\Internal\GPBType::STRING, 12)
-            ->optional('edition', \Google\Protobuf\Internal\GPBType::ENUM, 14, 'google.protobuf.internal.Edition')
+            ->optional('edition', \Google\Protobuf\Internal\GPBType::STRING, 13)
             ->finalizeToPool();
 
         $pool->addMessage('google.protobuf.internal.DescriptorProto', \Google\Protobuf\Internal\DescriptorProto::class)
@@ -61,22 +60,6 @@ public static function initOnce() {
 
         $pool->addMessage('google.protobuf.internal.ExtensionRangeOptions', \Google\Protobuf\Internal\ExtensionRangeOptions::class)
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
-            ->repeated('declaration', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.ExtensionRangeOptions.Declaration')
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 50, 'google.protobuf.internal.FeatureSet')
-            ->optional('verification', \Google\Protobuf\Internal\GPBType::ENUM, 3, 'google.protobuf.internal.ExtensionRangeOptions.VerificationState')
-            ->finalizeToPool();
-
-        $pool->addMessage('google.protobuf.internal.ExtensionRangeOptions.Declaration', \Google\Protobuf\Internal\ExtensionRangeOptions\Declaration::class)
-            ->optional('number', \Google\Protobuf\Internal\GPBType::INT32, 1)
-            ->optional('full_name', \Google\Protobuf\Internal\GPBType::STRING, 2)
-            ->optional('type', \Google\Protobuf\Internal\GPBType::STRING, 3)
-            ->optional('reserved', \Google\Protobuf\Internal\GPBType::BOOL, 5)
-            ->optional('repeated', \Google\Protobuf\Internal\GPBType::BOOL, 6)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.ExtensionRangeOptions.VerificationState', \Google\Protobuf\Internal\VerificationState::class)
-            ->value("DECLARATION", 0)
-            ->value("UNVERIFIED", 1)
             ->finalizeToPool();
 
         $pool->addMessage('google.protobuf.internal.FieldDescriptorProto', \Google\Protobuf\Internal\FieldDescriptorProto::class)
@@ -116,8 +99,8 @@ public static function initOnce() {
 
         $pool->addEnum('google.protobuf.internal.FieldDescriptorProto.Label', \Google\Protobuf\Internal\Label::class)
             ->value("LABEL_OPTIONAL", 1)
-            ->value("LABEL_REPEATED", 3)
             ->value("LABEL_REQUIRED", 2)
+            ->value("LABEL_REPEATED", 3)
             ->finalizeToPool();
 
         $pool->addMessage('google.protobuf.internal.OneofDescriptorProto', \Google\Protobuf\Internal\OneofDescriptorProto::class)
@@ -170,6 +153,7 @@ public static function initOnce() {
             ->optional('cc_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 16)
             ->optional('java_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 17)
             ->optional('py_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 18)
+            ->optional('php_generic_services', \Google\Protobuf\Internal\GPBType::BOOL, 42)
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 23)
             ->optional('cc_enable_arenas', \Google\Protobuf\Internal\GPBType::BOOL, 31)
             ->optional('objc_class_prefix', \Google\Protobuf\Internal\GPBType::STRING, 36)
@@ -179,7 +163,6 @@ public static function initOnce() {
             ->optional('php_namespace', \Google\Protobuf\Internal\GPBType::STRING, 41)
             ->optional('php_metadata_namespace', \Google\Protobuf\Internal\GPBType::STRING, 44)
             ->optional('ruby_package', \Google\Protobuf\Internal\GPBType::STRING, 45)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 50, 'google.protobuf.internal.FeatureSet')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
@@ -195,7 +178,6 @@ public static function initOnce() {
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
             ->optional('map_entry', \Google\Protobuf\Internal\GPBType::BOOL, 7)
             ->optional('deprecated_legacy_json_field_conflicts', \Google\Protobuf\Internal\GPBType::BOOL, 11)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 12, 'google.protobuf.internal.FeatureSet')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
@@ -207,27 +189,9 @@ public static function initOnce() {
             ->optional('unverified_lazy', \Google\Protobuf\Internal\GPBType::BOOL, 15)
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
             ->optional('weak', \Google\Protobuf\Internal\GPBType::BOOL, 10)
-            ->optional('debug_redact', \Google\Protobuf\Internal\GPBType::BOOL, 16)
-            ->optional('retention', \Google\Protobuf\Internal\GPBType::ENUM, 17, 'google.protobuf.internal.FieldOptions.OptionRetention')
-            ->repeated('targets', \Google\Protobuf\Internal\GPBType::ENUM, 19, 'google.protobuf.internal.FieldOptions.OptionTargetType')
-            ->repeated('edition_defaults', \Google\Protobuf\Internal\GPBType::MESSAGE, 20, 'google.protobuf.internal.FieldOptions.EditionDefault')
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 21, 'google.protobuf.internal.FeatureSet')
-            ->optional('feature_support', \Google\Protobuf\Internal\GPBType::MESSAGE, 22, 'google.protobuf.internal.FieldOptions.FeatureSupport')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
-        $pool->addMessage('google.protobuf.internal.FieldOptions.EditionDefault', \Google\Protobuf\Internal\FieldOptions\EditionDefault::class)
-            ->optional('edition', \Google\Protobuf\Internal\GPBType::ENUM, 3, 'google.protobuf.internal.Edition')
-            ->optional('value', \Google\Protobuf\Internal\GPBType::STRING, 2)
-            ->finalizeToPool();
-
-        $pool->addMessage('google.protobuf.internal.FieldOptions.FeatureSupport', \Google\Protobuf\Internal\FieldOptions\FeatureSupport::class)
-            ->optional('edition_introduced', \Google\Protobuf\Internal\GPBType::ENUM, 1, 'google.protobuf.internal.Edition')
-            ->optional('edition_deprecated', \Google\Protobuf\Internal\GPBType::ENUM, 2, 'google.protobuf.internal.Edition')
-            ->optional('deprecation_warning', \Google\Protobuf\Internal\GPBType::STRING, 3)
-            ->optional('edition_removed', \Google\Protobuf\Internal\GPBType::ENUM, 4, 'google.protobuf.internal.Edition')
-            ->finalizeToPool();
-
         $pool->addEnum('google.protobuf.internal.FieldOptions.CType', \Google\Protobuf\Internal\CType::class)
             ->value("STRING", 0)
             ->value("CORD", 1)
@@ -240,27 +204,7 @@ public static function initOnce() {
             ->value("JS_NUMBER", 2)
             ->finalizeToPool();
 
-        $pool->addEnum('google.protobuf.internal.FieldOptions.OptionRetention', \Google\Protobuf\Internal\OptionRetention::class)
-            ->value("RETENTION_UNKNOWN", 0)
-            ->value("RETENTION_RUNTIME", 1)
-            ->value("RETENTION_SOURCE", 2)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FieldOptions.OptionTargetType', \Google\Protobuf\Internal\OptionTargetType::class)
-            ->value("TARGET_TYPE_UNKNOWN", 0)
-            ->value("TARGET_TYPE_FILE", 1)
-            ->value("TARGET_TYPE_EXTENSION_RANGE", 2)
-            ->value("TARGET_TYPE_MESSAGE", 3)
-            ->value("TARGET_TYPE_FIELD", 4)
-            ->value("TARGET_TYPE_ONEOF", 5)
-            ->value("TARGET_TYPE_ENUM", 6)
-            ->value("TARGET_TYPE_ENUM_ENTRY", 7)
-            ->value("TARGET_TYPE_SERVICE", 8)
-            ->value("TARGET_TYPE_METHOD", 9)
-            ->finalizeToPool();
-
         $pool->addMessage('google.protobuf.internal.OneofOptions', \Google\Protobuf\Internal\OneofOptions::class)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.FeatureSet')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
@@ -268,20 +212,15 @@ public static function initOnce() {
             ->optional('allow_alias', \Google\Protobuf\Internal\GPBType::BOOL, 2)
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 3)
             ->optional('deprecated_legacy_json_field_conflicts', \Google\Protobuf\Internal\GPBType::BOOL, 6)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 7, 'google.protobuf.internal.FeatureSet')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
         $pool->addMessage('google.protobuf.internal.EnumValueOptions', \Google\Protobuf\Internal\EnumValueOptions::class)
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 1)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 2, 'google.protobuf.internal.FeatureSet')
-            ->optional('debug_redact', \Google\Protobuf\Internal\GPBType::BOOL, 3)
-            ->optional('feature_support', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.FieldOptions.FeatureSupport')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
         $pool->addMessage('google.protobuf.internal.ServiceOptions', \Google\Protobuf\Internal\ServiceOptions::class)
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 34, 'google.protobuf.internal.FeatureSet')
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 33)
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
@@ -289,7 +228,6 @@ public static function initOnce() {
         $pool->addMessage('google.protobuf.internal.MethodOptions', \Google\Protobuf\Internal\MethodOptions::class)
             ->optional('deprecated', \Google\Protobuf\Internal\GPBType::BOOL, 33)
             ->optional('idempotency_level', \Google\Protobuf\Internal\GPBType::ENUM, 34, 'google.protobuf.internal.MethodOptions.IdempotencyLevel')
-            ->optional('features', \Google\Protobuf\Internal\GPBType::MESSAGE, 35, 'google.protobuf.internal.FeatureSet')
             ->repeated('uninterpreted_option', \Google\Protobuf\Internal\GPBType::MESSAGE, 999, 'google.protobuf.internal.UninterpretedOption')
             ->finalizeToPool();
 
@@ -314,64 +252,6 @@ public static function initOnce() {
             ->required('is_extension', \Google\Protobuf\Internal\GPBType::BOOL, 2)
             ->finalizeToPool();
 
-        $pool->addMessage('google.protobuf.internal.FeatureSet', \Google\Protobuf\Internal\FeatureSet::class)
-            ->optional('field_presence', \Google\Protobuf\Internal\GPBType::ENUM, 1, 'google.protobuf.internal.FeatureSet.FieldPresence')
-            ->optional('enum_type', \Google\Protobuf\Internal\GPBType::ENUM, 2, 'google.protobuf.internal.FeatureSet.EnumType')
-            ->optional('repeated_field_encoding', \Google\Protobuf\Internal\GPBType::ENUM, 3, 'google.protobuf.internal.FeatureSet.RepeatedFieldEncoding')
-            ->optional('utf8_validation', \Google\Protobuf\Internal\GPBType::ENUM, 4, 'google.protobuf.internal.FeatureSet.Utf8Validation')
-            ->optional('message_encoding', \Google\Protobuf\Internal\GPBType::ENUM, 5, 'google.protobuf.internal.FeatureSet.MessageEncoding')
-            ->optional('json_format', \Google\Protobuf\Internal\GPBType::ENUM, 6, 'google.protobuf.internal.FeatureSet.JsonFormat')
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.FieldPresence', \Google\Protobuf\Internal\FieldPresence::class)
-            ->value("FIELD_PRESENCE_UNKNOWN", 0)
-            ->value("EXPLICIT", 1)
-            ->value("IMPLICIT", 2)
-            ->value("LEGACY_REQUIRED", 3)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.EnumType', \Google\Protobuf\Internal\EnumType::class)
-            ->value("ENUM_TYPE_UNKNOWN", 0)
-            ->value("OPEN", 1)
-            ->value("CLOSED", 2)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.RepeatedFieldEncoding', \Google\Protobuf\Internal\RepeatedFieldEncoding::class)
-            ->value("REPEATED_FIELD_ENCODING_UNKNOWN", 0)
-            ->value("PACKED", 1)
-            ->value("EXPANDED", 2)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.Utf8Validation', \Google\Protobuf\Internal\Utf8Validation::class)
-            ->value("UTF8_VALIDATION_UNKNOWN", 0)
-            ->value("VERIFY", 2)
-            ->value("NONE", 3)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.MessageEncoding', \Google\Protobuf\Internal\MessageEncoding::class)
-            ->value("MESSAGE_ENCODING_UNKNOWN", 0)
-            ->value("LENGTH_PREFIXED", 1)
-            ->value("DELIMITED", 2)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.FeatureSet.JsonFormat', \Google\Protobuf\Internal\JsonFormat::class)
-            ->value("JSON_FORMAT_UNKNOWN", 0)
-            ->value("ALLOW", 1)
-            ->value("LEGACY_BEST_EFFORT", 2)
-            ->finalizeToPool();
-
-        $pool->addMessage('google.protobuf.internal.FeatureSetDefaults', \Google\Protobuf\Internal\FeatureSetDefaults::class)
-            ->repeated('defaults', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.FeatureSetDefaults.FeatureSetEditionDefault')
-            ->optional('minimum_edition', \Google\Protobuf\Internal\GPBType::ENUM, 4, 'google.protobuf.internal.Edition')
-            ->optional('maximum_edition', \Google\Protobuf\Internal\GPBType::ENUM, 5, 'google.protobuf.internal.Edition')
-            ->finalizeToPool();
-
-        $pool->addMessage('google.protobuf.internal.FeatureSetDefaults.FeatureSetEditionDefault', \Google\Protobuf\Internal\FeatureSetDefaults\FeatureSetEditionDefault::class)
-            ->optional('edition', \Google\Protobuf\Internal\GPBType::ENUM, 3, 'google.protobuf.internal.Edition')
-            ->optional('overridable_features', \Google\Protobuf\Internal\GPBType::MESSAGE, 4, 'google.protobuf.internal.FeatureSet')
-            ->optional('fixed_features', \Google\Protobuf\Internal\GPBType::MESSAGE, 5, 'google.protobuf.internal.FeatureSet')
-            ->finalizeToPool();
-
         $pool->addMessage('google.protobuf.internal.SourceCodeInfo', \Google\Protobuf\Internal\SourceCodeInfo::class)
             ->repeated('location', \Google\Protobuf\Internal\GPBType::MESSAGE, 1, 'google.protobuf.internal.SourceCodeInfo.Location')
             ->finalizeToPool();
@@ -393,28 +273,6 @@ public static function initOnce() {
             ->optional('source_file', \Google\Protobuf\Internal\GPBType::STRING, 2)
             ->optional('begin', \Google\Protobuf\Internal\GPBType::INT32, 3)
             ->optional('end', \Google\Protobuf\Internal\GPBType::INT32, 4)
-            ->optional('semantic', \Google\Protobuf\Internal\GPBType::ENUM, 5, 'google.protobuf.internal.GeneratedCodeInfo.Annotation.Semantic')
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.GeneratedCodeInfo.Annotation.Semantic', \Google\Protobuf\Internal\Semantic::class)
-            ->value("NONE", 0)
-            ->value("SET", 1)
-            ->value("ALIAS", 2)
-            ->finalizeToPool();
-
-        $pool->addEnum('google.protobuf.internal.Edition', \Google\Protobuf\Internal\Edition::class)
-            ->value("EDITION_UNKNOWN", 0)
-            ->value("EDITION_LEGACY", 900)
-            ->value("EDITION_PROTO2", 998)
-            ->value("EDITION_PROTO3", 999)
-            ->value("EDITION_2023", 1000)
-            ->value("EDITION_2024", 1001)
-            ->value("EDITION_1_TEST_ONLY", 1)
-            ->value("EDITION_2_TEST_ONLY", 2)
-            ->value("EDITION_99997_TEST_ONLY", 99997)
-            ->value("EDITION_99998_TEST_ONLY", 99998)
-            ->value("EDITION_99999_TEST_ONLY", 99999)
-            ->value("EDITION_MAX", 2147483647)
             ->finalizeToPool();
 
         $pool->finish();
diff --git a/php/src/GPBMetadata/Google/Protobuf/SourceContext.php b/php/src/GPBMetadata/Google/Protobuf/SourceContext.php
index 8d1566c05a83..797732d9f326 100644
--- a/php/src/GPBMetadata/Google/Protobuf/SourceContext.php
+++ b/php/src/GPBMetadata/Google/Protobuf/SourceContext.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/source_context.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,12 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xF0\x01\x0A\$google/protobuf/source_context.proto\x12\x0Fgoogle.protobuf\"\"\x0A\x0DSourceContext\x12\x11\x0A\x09file_name\x18\x01 \x01(\x09B\x8A\x01\x0A\x13com.google.protobufB\x12SourceContextProtoP\x01Z6google.golang.org/protobuf/types/known/sourcecontextpb\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+$google/protobuf/source_context.protogoogle.protobuf""
+SourceContext
+	file_name (	B�
+com.google.protobufBSourceContextProtoPZ6google.golang.org/protobuf/types/known/sourcecontextpb�GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/Struct.php b/php/src/GPBMetadata/Google/Protobuf/Struct.php
index 6fad5d9a8346..888a81adee40 100644
Binary files a/php/src/GPBMetadata/Google/Protobuf/Struct.php and b/php/src/GPBMetadata/Google/Protobuf/Struct.php differ
diff --git a/php/src/GPBMetadata/Google/Protobuf/Timestamp.php b/php/src/GPBMetadata/Google/Protobuf/Timestamp.php
index fd4eaacc9d0b..09437271a91c 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Timestamp.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Timestamp.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/timestamp.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,13 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xEF\x01\x0A\x1Fgoogle/protobuf/timestamp.proto\x12\x0Fgoogle.protobuf\"+\x0A\x09Timestamp\x12\x0F\x0A\x07seconds\x18\x01 \x01(\x03\x12\x0D\x0A\x05nanos\x18\x02 \x01(\x05B\x85\x01\x0A\x13com.google.protobufB\x0ETimestampProtoP\x01Z2google.golang.org/protobuf/types/known/timestamppb\xF8\x01\x01\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/timestamp.protogoogle.protobuf"+
+	Timestamp
+seconds (
+nanos (B�
+com.google.protobufBTimestampProtoPZ2google.golang.org/protobuf/types/known/timestamppb��GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/GPBMetadata/Google/Protobuf/Type.php b/php/src/GPBMetadata/Google/Protobuf/Type.php
index 6bec20ded3c2..7d0bfbb533a2 100644
Binary files a/php/src/GPBMetadata/Google/Protobuf/Type.php and b/php/src/GPBMetadata/Google/Protobuf/Type.php differ
diff --git a/php/src/GPBMetadata/Google/Protobuf/Wrappers.php b/php/src/GPBMetadata/Google/Protobuf/Wrappers.php
index 49f84252b687..e7ea1a3b9516 100644
--- a/php/src/GPBMetadata/Google/Protobuf/Wrappers.php
+++ b/php/src/GPBMetadata/Google/Protobuf/Wrappers.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace GPBMetadata\Google\Protobuf;
@@ -16,7 +15,32 @@ public static function initOnce() {
           return;
         }
         $pool->internalAddGeneratedFile(
-            "\x0A\xC7\x03\x0A\x1Egoogle/protobuf/wrappers.proto\x12\x0Fgoogle.protobuf\"\x1C\x0A\x0BDoubleValue\x12\x0D\x0A\x05value\x18\x01 \x01(\x01\"\x1B\x0A\x0AFloatValue\x12\x0D\x0A\x05value\x18\x01 \x01(\x02\"\x1B\x0A\x0AInt64Value\x12\x0D\x0A\x05value\x18\x01 \x01(\x03\"\x1C\x0A\x0BUInt64Value\x12\x0D\x0A\x05value\x18\x01 \x01(\x04\"\x1B\x0A\x0AInt32Value\x12\x0D\x0A\x05value\x18\x01 \x01(\x05\"\x1C\x0A\x0BUInt32Value\x12\x0D\x0A\x05value\x18\x01 \x01(\x0D\"\x1A\x0A\x09BoolValue\x12\x0D\x0A\x05value\x18\x01 \x01(\x08\"\x1C\x0A\x0BStringValue\x12\x0D\x0A\x05value\x18\x01 \x01(\x09\"\x1B\x0A\x0ABytesValue\x12\x0D\x0A\x05value\x18\x01 \x01(\x0CB\x83\x01\x0A\x13com.google.protobufB\x0DWrappersProtoP\x01Z1google.golang.org/protobuf/types/known/wrapperspb\xF8\x01\x01\xA2\x02\x03GPB\xAA\x02\x1EGoogle.Protobuf.WellKnownTypesb\x06proto3"
+            '
+�
+google/protobuf/wrappers.protogoogle.protobuf"
+DoubleValue
+value ("
+
+FloatValue
+value ("
+
+Int64Value
+value ("
+UInt64Value
+value ("
+
+Int32Value
+value ("
+UInt32Value
+value ("
+	BoolValue
+value ("
+StringValue
+value (	"
+
+BytesValue
+value (B�
+com.google.protobufBWrappersProtoPZ1google.golang.org/protobuf/types/known/wrapperspb��GPB�Google.Protobuf.WellKnownTypesbproto3'
         , true);
 
         static::$is_initialized = true;
diff --git a/php/src/Google/Protobuf/Any.php b/php/src/Google/Protobuf/Any.php
index 2f245ca2f613..feea41aad9c3 100644
--- a/php/src/Google/Protobuf/Any.php
+++ b/php/src/Google/Protobuf/Any.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/any.proto
 
 namespace Google\Protobuf;
@@ -33,7 +32,7 @@
  *     if (any.isSameTypeAs(Foo.getDefaultInstance())) {
  *       foo = any.unpack(Foo.getDefaultInstance());
  *     }
- *  Example 3: Pack and unpack a message in Python.
+ * Example 3: Pack and unpack a message in Python.
  *     foo = Foo(...)
  *     any = Any()
  *     any.Pack(foo)
@@ -41,7 +40,7 @@
  *     if any.Is(Foo.DESCRIPTOR):
  *       any.Unpack(foo)
  *       ...
- *  Example 4: Pack and unpack a message in Go
+ * Example 4: Pack and unpack a message in Go
  *      foo := &pb.Foo{...}
  *      any, err := anypb.New(foo)
  *      if err != nil {
@@ -58,26 +57,25 @@
  * in the type URL, for example "foo.bar.com/x/y.z" will yield type
  * name "y.z".
  * JSON
- * ====
  * The JSON representation of an `Any` value uses the regular
  * representation of the deserialized, embedded message, with an
- * additional field `\@type` which contains the type URL. Example:
+ * additional field `&#64;type` which contains the type URL. Example:
  *     package google.profile;
  *     message Person {
  *       string first_name = 1;
  *       string last_name = 2;
  *     }
  *     {
- *       "\@type": "type.googleapis.com/google.profile.Person",
+ *       "&#64;type": "type.googleapis.com/google.profile.Person",
  *       "firstName": <string>,
  *       "lastName": <string>
  *     }
  * If the embedded message type is well-known and has a custom JSON
  * representation, that representation will be embedded adding a field
- * `value` which holds the custom JSON in addition to the `\@type`
+ * `value` which holds the custom JSON in addition to the `&#64;type`
  * field. Example (for message [google.protobuf.Duration][]):
  *     {
- *       "\@type": "type.googleapis.com/google.protobuf.Duration",
+ *       "&#64;type": "type.googleapis.com/google.protobuf.Duration",
  *       "value": "1.212s"
  *     }
  *
@@ -106,8 +104,7 @@ class Any extends \Google\Protobuf\Internal\AnyBase
      *   breaking changes.)
      * Note: this functionality is not currently available in the official
      * protobuf release, and it is not used for type URLs beginning with
-     * type.googleapis.com. As of May 2023, there are no widely used type server
-     * implementations and no plans to implement one.
+     * type.googleapis.com.
      * Schemes other than `http`, `https` (or the empty scheme) might be
      * used with implementation specific semantics.
      *
@@ -148,8 +145,7 @@ class Any extends \Google\Protobuf\Internal\AnyBase
      *             breaking changes.)
      *           Note: this functionality is not currently available in the official
      *           protobuf release, and it is not used for type URLs beginning with
-     *           type.googleapis.com. As of May 2023, there are no widely used type server
-     *           implementations and no plans to implement one.
+     *           type.googleapis.com.
      *           Schemes other than `http`, `https` (or the empty scheme) might be
      *           used with implementation specific semantics.
      *     @type string $value
@@ -182,8 +178,7 @@ public function __construct($data = NULL) {
      *   breaking changes.)
      * Note: this functionality is not currently available in the official
      * protobuf release, and it is not used for type URLs beginning with
-     * type.googleapis.com. As of May 2023, there are no widely used type server
-     * implementations and no plans to implement one.
+     * type.googleapis.com.
      * Schemes other than `http`, `https` (or the empty scheme) might be
      * used with implementation specific semantics.
      *
@@ -216,8 +211,7 @@ public function getTypeUrl()
      *   breaking changes.)
      * Note: this functionality is not currently available in the official
      * protobuf release, and it is not used for type URLs beginning with
-     * type.googleapis.com. As of May 2023, there are no widely used type server
-     * implementations and no plans to implement one.
+     * type.googleapis.com.
      * Schemes other than `http`, `https` (or the empty scheme) might be
      * used with implementation specific semantics.
      *
diff --git a/php/src/Google/Protobuf/Api.php b/php/src/Google/Protobuf/Api.php
index f39e81aab63f..3784263cbf8d 100644
--- a/php/src/Google/Protobuf/Api.php
+++ b/php/src/Google/Protobuf/Api.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/api.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/BoolValue.php b/php/src/Google/Protobuf/BoolValue.php
index 5c750a3cd33d..ecdbf4dcc265 100644
--- a/php/src/Google/Protobuf/BoolValue.php
+++ b/php/src/Google/Protobuf/BoolValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/BytesValue.php b/php/src/Google/Protobuf/BytesValue.php
index bf83507e214b..1582e14acd90 100644
--- a/php/src/Google/Protobuf/BytesValue.php
+++ b/php/src/Google/Protobuf/BytesValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/DoubleValue.php b/php/src/Google/Protobuf/DoubleValue.php
index 0b88e282750c..b72399f460d6 100644
--- a/php/src/Google/Protobuf/DoubleValue.php
+++ b/php/src/Google/Protobuf/DoubleValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Duration.php b/php/src/Google/Protobuf/Duration.php
index f63169b121de..531cd50b5791 100644
--- a/php/src/Google/Protobuf/Duration.php
+++ b/php/src/Google/Protobuf/Duration.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/duration.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Enum.php b/php/src/Google/Protobuf/Enum.php
index 4befa14de5cb..185e54e03c3e 100644
--- a/php/src/Google/Protobuf/Enum.php
+++ b/php/src/Google/Protobuf/Enum.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
@@ -46,12 +45,6 @@ class Enum extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>.google.protobuf.Syntax syntax = 5;</code>
      */
     protected $syntax = 0;
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 6;</code>
-     */
-    protected $edition = '';
 
     /**
      * Constructor.
@@ -69,8 +62,6 @@ class Enum extends \Google\Protobuf\Internal\Message
      *           The source context.
      *     @type int $syntax
      *           The source syntax.
-     *     @type string $edition
-     *           The source edition string, only valid when syntax is SYNTAX_EDITIONS.
      * }
      */
     public function __construct($data = NULL) {
@@ -218,31 +209,5 @@ public function setSyntax($var)
         return $this;
     }
 
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 6;</code>
-     * @return string
-     */
-    public function getEdition()
-    {
-        return $this->edition;
-    }
-
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 6;</code>
-     * @param string $var
-     * @return $this
-     */
-    public function setEdition($var)
-    {
-        GPBUtil::checkString($var, True);
-        $this->edition = $var;
-
-        return $this;
-    }
-
 }
 
diff --git a/php/src/Google/Protobuf/EnumValue.php b/php/src/Google/Protobuf/EnumValue.php
index 3914d285d47d..93c20f967c23 100644
--- a/php/src/Google/Protobuf/EnumValue.php
+++ b/php/src/Google/Protobuf/EnumValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Field.php b/php/src/Google/Protobuf/Field.php
index c2b635c60d95..ddae570c2b27 100644
--- a/php/src/Google/Protobuf/Field.php
+++ b/php/src/Google/Protobuf/Field.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Field/Cardinality.php b/php/src/Google/Protobuf/Field/Cardinality.php
index 72a11e37f672..a42219957696 100644
--- a/php/src/Google/Protobuf/Field/Cardinality.php
+++ b/php/src/Google/Protobuf/Field/Cardinality.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf\Field;
@@ -67,3 +66,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Cardinality::class, \Google\Protobuf\Field_Cardinality::class);
+
diff --git a/php/src/Google/Protobuf/Field/Kind.php b/php/src/Google/Protobuf/Field/Kind.php
index bcbfcdd19b22..2d8dd77c1cb4 100644
--- a/php/src/Google/Protobuf/Field/Kind.php
+++ b/php/src/Google/Protobuf/Field/Kind.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf\Field;
@@ -172,3 +171,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Kind::class, \Google\Protobuf\Field_Kind::class);
+
diff --git a/php/src/Google/Protobuf/FieldMask.php b/php/src/Google/Protobuf/FieldMask.php
index 2661c307046b..a8e5243f8307 100644
--- a/php/src/Google/Protobuf/FieldMask.php
+++ b/php/src/Google/Protobuf/FieldMask.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/field_mask.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/FloatValue.php b/php/src/Google/Protobuf/FloatValue.php
index 90c79156c0dd..4285358d5e8c 100644
--- a/php/src/Google/Protobuf/FloatValue.php
+++ b/php/src/Google/Protobuf/FloatValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/GPBEmpty.php b/php/src/Google/Protobuf/GPBEmpty.php
index 24db6dc6770f..4db69238bf61 100644
--- a/php/src/Google/Protobuf/GPBEmpty.php
+++ b/php/src/Google/Protobuf/GPBEmpty.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/empty.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Int32Value.php b/php/src/Google/Protobuf/Int32Value.php
index 98791408f344..cfd73cdc90f5 100644
--- a/php/src/Google/Protobuf/Int32Value.php
+++ b/php/src/Google/Protobuf/Int32Value.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Int64Value.php b/php/src/Google/Protobuf/Int64Value.php
index cb83ba485470..143474fcd7cf 100644
--- a/php/src/Google/Protobuf/Int64Value.php
+++ b/php/src/Google/Protobuf/Int64Value.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto.php b/php/src/Google/Protobuf/Internal/DescriptorProto.php
index 6ce36334f9e5..2937c5a7c5da 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php b/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
index 387c6c78b143..43c33c4a9103 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\DescriptorProto;
@@ -157,3 +156,6 @@ public function setOptions($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(ExtensionRange::class, \Google\Protobuf\Internal\DescriptorProto_ExtensionRange::class);
+
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php b/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
index 63ff8604810c..f099cc345abe 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\DescriptorProto;
@@ -124,3 +123,6 @@ public function setEnd($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(ReservedRange::class, \Google\Protobuf\Internal\DescriptorProto_ReservedRange::class);
+
diff --git a/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php b/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
index d0d22a2022da..cb2a42ae3751 100644
--- a/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php b/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
index 8c33acc3d51c..7282fccb0788 100644
--- a/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
+++ b/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\EnumDescriptorProto;
@@ -126,3 +125,6 @@ public function setEnd($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(EnumReservedRange::class, \Google\Protobuf\Internal\EnumDescriptorProto_EnumReservedRange::class);
+
diff --git a/php/src/Google/Protobuf/Internal/EnumOptions.php b/php/src/Google/Protobuf/Internal/EnumOptions.php
index b7d20596060e..80cb7f275a28 100644
--- a/php/src/Google/Protobuf/Internal/EnumOptions.php
+++ b/php/src/Google/Protobuf/Internal/EnumOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -44,12 +43,6 @@ class EnumOptions extends \Google\Protobuf\Internal\Message
      * @deprecated
      */
     protected $deprecated_legacy_json_field_conflicts = null;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 7;</code>
-     */
-    protected $features = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -78,8 +71,6 @@ class EnumOptions extends \Google\Protobuf\Internal\Message
      *           well.
      *           TODO Remove this legacy behavior once downstream teams have
      *           had time to migrate.
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -183,17 +174,13 @@ public function setDeprecated($var)
      */
     public function getDeprecatedLegacyJsonFieldConflicts()
     {
-        if (isset($this->deprecated_legacy_json_field_conflicts)) {
-            @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
         return isset($this->deprecated_legacy_json_field_conflicts) ? $this->deprecated_legacy_json_field_conflicts : false;
     }
 
     public function hasDeprecatedLegacyJsonFieldConflicts()
     {
-        if (isset($this->deprecated_legacy_json_field_conflicts)) {
-            @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
         return isset($this->deprecated_legacy_json_field_conflicts);
     }
 
@@ -225,42 +212,6 @@ public function setDeprecatedLegacyJsonFieldConflicts($var)
         return $this;
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 7;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 7;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php b/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
index 822e1de59bdd..0feaea6f182f 100644
--- a/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/EnumValueOptions.php b/php/src/Google/Protobuf/Internal/EnumValueOptions.php
index f99234bd2f52..2db7fceea640 100644
--- a/php/src/Google/Protobuf/Internal/EnumValueOptions.php
+++ b/php/src/Google/Protobuf/Internal/EnumValueOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -25,26 +24,6 @@ class EnumValueOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>optional bool deprecated = 1 [default = false];</code>
      */
     protected $deprecated = null;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 2;</code>
-     */
-    protected $features = null;
-    /**
-     * Indicate that fields annotated with this enum value should not be printed
-     * out when using debug formats, e.g. when the field contains sensitive
-     * credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 3 [default = false];</code>
-     */
-    protected $debug_redact = null;
-    /**
-     * Information about the support window of a feature value.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 4;</code>
-     */
-    protected $feature_support = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -63,14 +42,6 @@ class EnumValueOptions extends \Google\Protobuf\Internal\Message
      *           Depending on the target platform, this can emit Deprecated annotations
      *           for the enum value, or it will be completely ignored; in the very least,
      *           this is a formalization for deprecating enum values.
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
-     *     @type bool $debug_redact
-     *           Indicate that fields annotated with this enum value should not be printed
-     *           out when using debug formats, e.g. when the field contains sensitive
-     *           credentials.
-     *     @type \Google\Protobuf\Internal\FieldOptions\FeatureSupport $feature_support
-     *           Information about the support window of a feature value.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -122,118 +93,6 @@ public function setDeprecated($var)
         return $this;
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 2;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 2;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
-    /**
-     * Indicate that fields annotated with this enum value should not be printed
-     * out when using debug formats, e.g. when the field contains sensitive
-     * credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 3 [default = false];</code>
-     * @return bool
-     */
-    public function getDebugRedact()
-    {
-        return isset($this->debug_redact) ? $this->debug_redact : false;
-    }
-
-    public function hasDebugRedact()
-    {
-        return isset($this->debug_redact);
-    }
-
-    public function clearDebugRedact()
-    {
-        unset($this->debug_redact);
-    }
-
-    /**
-     * Indicate that fields annotated with this enum value should not be printed
-     * out when using debug formats, e.g. when the field contains sensitive
-     * credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 3 [default = false];</code>
-     * @param bool $var
-     * @return $this
-     */
-    public function setDebugRedact($var)
-    {
-        GPBUtil::checkBool($var);
-        $this->debug_redact = $var;
-
-        return $this;
-    }
-
-    /**
-     * Information about the support window of a feature value.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 4;</code>
-     * @return \Google\Protobuf\Internal\FieldOptions\FeatureSupport|null
-     */
-    public function getFeatureSupport()
-    {
-        return $this->feature_support;
-    }
-
-    public function hasFeatureSupport()
-    {
-        return isset($this->feature_support);
-    }
-
-    public function clearFeatureSupport()
-    {
-        unset($this->feature_support);
-    }
-
-    /**
-     * Information about the support window of a feature value.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 4;</code>
-     * @param \Google\Protobuf\Internal\FieldOptions\FeatureSupport $var
-     * @return $this
-     */
-    public function setFeatureSupport($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FieldOptions\FeatureSupport::class);
-        $this->feature_support = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php b/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
index 2a969afb4773..245173c3d0e5 100644
--- a/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
+++ b/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -22,28 +21,6 @@ class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     private $uninterpreted_option;
-    /**
-     * For external users: DO NOT USE. We are in the process of open sourcing
-     * extension declaration and executing internal cleanups before it can be
-     * used externally.
-     *
-     * Generated from protobuf field <code>repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [retention = RETENTION_SOURCE];</code>
-     */
-    private $declaration;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     */
-    protected $features = null;
-    /**
-     * The verification state of the range.
-     * TODO: flip the default to DECLARATION once all empty ranges
-     * are marked as UNVERIFIED.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, retention = RETENTION_SOURCE];</code>
-     */
-    protected $verification = null;
 
     /**
      * Constructor.
@@ -53,16 +30,6 @@ class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message
      *
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
-     *     @type array<\Google\Protobuf\Internal\ExtensionRangeOptions\Declaration>|\Google\Protobuf\Internal\RepeatedField $declaration
-     *           For external users: DO NOT USE. We are in the process of open sourcing
-     *           extension declaration and executing internal cleanups before it can be
-     *           used externally.
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
-     *     @type int $verification
-     *           The verification state of the range.
-     *           TODO: flip the default to DECLARATION once all empty ranges
-     *           are marked as UNVERIFIED.
      * }
      */
     public function __construct($data = NULL) {
@@ -96,111 +63,5 @@ public function setUninterpretedOption($var)
         return $this;
     }
 
-    /**
-     * For external users: DO NOT USE. We are in the process of open sourcing
-     * extension declaration and executing internal cleanups before it can be
-     * used externally.
-     *
-     * Generated from protobuf field <code>repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [retention = RETENTION_SOURCE];</code>
-     * @return \Google\Protobuf\Internal\RepeatedField
-     */
-    public function getDeclaration()
-    {
-        return $this->declaration;
-    }
-
-    /**
-     * For external users: DO NOT USE. We are in the process of open sourcing
-     * extension declaration and executing internal cleanups before it can be
-     * used externally.
-     *
-     * Generated from protobuf field <code>repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [retention = RETENTION_SOURCE];</code>
-     * @param array<\Google\Protobuf\Internal\ExtensionRangeOptions\Declaration>|\Google\Protobuf\Internal\RepeatedField $var
-     * @return $this
-     */
-    public function setDeclaration($var)
-    {
-        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\ExtensionRangeOptions\Declaration::class);
-        $this->declaration = $arr;
-
-        return $this;
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
-    /**
-     * The verification state of the range.
-     * TODO: flip the default to DECLARATION once all empty ranges
-     * are marked as UNVERIFIED.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, retention = RETENTION_SOURCE];</code>
-     * @return int
-     */
-    public function getVerification()
-    {
-        return isset($this->verification) ? $this->verification : 0;
-    }
-
-    public function hasVerification()
-    {
-        return isset($this->verification);
-    }
-
-    public function clearVerification()
-    {
-        unset($this->verification);
-    }
-
-    /**
-     * The verification state of the range.
-     * TODO: flip the default to DECLARATION once all empty ranges
-     * are marked as UNVERIFIED.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, retention = RETENTION_SOURCE];</code>
-     * @param int $var
-     * @return $this
-     */
-    public function setVerification($var)
-    {
-        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\ExtensionRangeOptions\VerificationState::class);
-        $this->verification = $var;
-
-        return $this;
-    }
-
 }
 
diff --git a/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php b/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
index e493f53eb4db..5e99bff173c9 100644
--- a/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -86,12 +85,12 @@ class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
     /**
      * If true, this is a proto3 "optional". When a proto3 field is optional, it
      * tracks presence regardless of field type.
-     * When proto3_optional is true, this field must belong to a oneof to signal
-     * to old proto3 clients that presence is tracked for this field. This oneof
-     * is known as a "synthetic" oneof, and this field must be its sole member
-     * (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
-     * exist in the descriptor only, and do not generate any API. Synthetic oneofs
-     * must be ordered after all "real" oneofs.
+     * When proto3_optional is true, this field must be belong to a oneof to
+     * signal to old proto3 clients that presence is tracked for this field. This
+     * oneof is known as a "synthetic" oneof, and this field must be its sole
+     * member (each proto3 optional field gets its own synthetic oneof). Synthetic
+     * oneofs exist in the descriptor only, and do not generate any API. Synthetic
+     * oneofs must be ordered after all "real" oneofs.
      * For message fields, proto3_optional doesn't create any semantic change,
      * since non-repeated message fields always track presence. However it still
      * indicates the semantic detail of whether the user wrote "optional" or not.
@@ -145,12 +144,12 @@ class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
      *     @type bool $proto3_optional
      *           If true, this is a proto3 "optional". When a proto3 field is optional, it
      *           tracks presence regardless of field type.
-     *           When proto3_optional is true, this field must belong to a oneof to signal
-     *           to old proto3 clients that presence is tracked for this field. This oneof
-     *           is known as a "synthetic" oneof, and this field must be its sole member
-     *           (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
-     *           exist in the descriptor only, and do not generate any API. Synthetic oneofs
-     *           must be ordered after all "real" oneofs.
+     *           When proto3_optional is true, this field must be belong to a oneof to
+     *           signal to old proto3 clients that presence is tracked for this field. This
+     *           oneof is known as a "synthetic" oneof, and this field must be its sole
+     *           member (each proto3 optional field gets its own synthetic oneof). Synthetic
+     *           oneofs exist in the descriptor only, and do not generate any API. Synthetic
+     *           oneofs must be ordered after all "real" oneofs.
      *           For message fields, proto3_optional doesn't create any semantic change,
      *           since non-repeated message fields always track presence. However it still
      *           indicates the semantic detail of whether the user wrote "optional" or not.
@@ -541,12 +540,12 @@ public function setOptions($var)
     /**
      * If true, this is a proto3 "optional". When a proto3 field is optional, it
      * tracks presence regardless of field type.
-     * When proto3_optional is true, this field must belong to a oneof to signal
-     * to old proto3 clients that presence is tracked for this field. This oneof
-     * is known as a "synthetic" oneof, and this field must be its sole member
-     * (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
-     * exist in the descriptor only, and do not generate any API. Synthetic oneofs
-     * must be ordered after all "real" oneofs.
+     * When proto3_optional is true, this field must be belong to a oneof to
+     * signal to old proto3 clients that presence is tracked for this field. This
+     * oneof is known as a "synthetic" oneof, and this field must be its sole
+     * member (each proto3 optional field gets its own synthetic oneof). Synthetic
+     * oneofs exist in the descriptor only, and do not generate any API. Synthetic
+     * oneofs must be ordered after all "real" oneofs.
      * For message fields, proto3_optional doesn't create any semantic change,
      * since non-repeated message fields always track presence. However it still
      * indicates the semantic detail of whether the user wrote "optional" or not.
@@ -579,12 +578,12 @@ public function clearProto3Optional()
     /**
      * If true, this is a proto3 "optional". When a proto3 field is optional, it
      * tracks presence regardless of field type.
-     * When proto3_optional is true, this field must belong to a oneof to signal
-     * to old proto3 clients that presence is tracked for this field. This oneof
-     * is known as a "synthetic" oneof, and this field must be its sole member
-     * (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
-     * exist in the descriptor only, and do not generate any API. Synthetic oneofs
-     * must be ordered after all "real" oneofs.
+     * When proto3_optional is true, this field must be belong to a oneof to
+     * signal to old proto3 clients that presence is tracked for this field. This
+     * oneof is known as a "synthetic" oneof, and this field must be its sole
+     * member (each proto3 optional field gets its own synthetic oneof). Synthetic
+     * oneofs exist in the descriptor only, and do not generate any API. Synthetic
+     * oneofs must be ordered after all "real" oneofs.
      * For message fields, proto3_optional doesn't create any semantic change,
      * since non-repeated message fields always track presence. However it still
      * indicates the semantic detail of whether the user wrote "optional" or not.
diff --git a/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php b/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php
index eb091e397f04..a54b228f1bfb 100644
--- a/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php
+++ b/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\FieldDescriptorProto;
@@ -19,22 +18,18 @@ class Label
      */
     const LABEL_OPTIONAL = 1;
     /**
-     * Generated from protobuf enum <code>LABEL_REPEATED = 3;</code>
-     */
-    const LABEL_REPEATED = 3;
-    /**
-     * The required label is only allowed in google.protobuf.  In proto3 and Editions
-     * it's explicitly prohibited.  In Editions, the `field_presence` feature
-     * can be used to get this behavior.
-     *
      * Generated from protobuf enum <code>LABEL_REQUIRED = 2;</code>
      */
     const LABEL_REQUIRED = 2;
+    /**
+     * Generated from protobuf enum <code>LABEL_REPEATED = 3;</code>
+     */
+    const LABEL_REPEATED = 3;
 
     private static $valueToName = [
         self::LABEL_OPTIONAL => 'LABEL_OPTIONAL',
-        self::LABEL_REPEATED => 'LABEL_REPEATED',
         self::LABEL_REQUIRED => 'LABEL_REQUIRED',
+        self::LABEL_REPEATED => 'LABEL_REPEATED',
     ];
 
     public static function name($value)
@@ -58,3 +53,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Label::class, \Google\Protobuf\Internal\FieldDescriptorProto_Label::class);
+
diff --git a/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php b/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php
index 80c8395ba4ab..6072e9990fb3 100644
--- a/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php
+++ b/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\FieldDescriptorProto;
@@ -59,10 +58,9 @@ class Type
     const TYPE_STRING = 9;
     /**
      * Tag-delimited aggregate.
-     * Group type is deprecated and not supported after google.protobuf. However, Proto3
+     * Group type is deprecated and not supported in proto3. However, Proto3
      * implementations should still be able to parse the group wire format and
-     * treat group fields as unknown fields.  In Editions, the group wire format
-     * can be enabled via the `message_encoding` feature.
+     * treat group fields as unknown fields.
      *
      * Generated from protobuf enum <code>TYPE_GROUP = 10;</code>
      */
@@ -150,3 +148,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Type::class, \Google\Protobuf\Internal\FieldDescriptorProto_Type::class);
+
diff --git a/php/src/Google/Protobuf/Internal/FieldOptions.php b/php/src/Google/Protobuf/Internal/FieldOptions.php
index efde73f69510..6f1d54b7ee24 100644
--- a/php/src/Google/Protobuf/Internal/FieldOptions.php
+++ b/php/src/Google/Protobuf/Internal/FieldOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -17,13 +16,10 @@
 class FieldOptions extends \Google\Protobuf\Internal\Message
 {
     /**
-     * NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
      * The ctype option instructs the C++ code generator to use a different
      * representation of the field than it normally would.  See the specific
-     * options below.  This option is only implemented to support use of
-     * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
-     * type "bytes" in the open source release.
-     * TODO: make ctype actually deprecated.
+     * options below.  This option is not yet implemented in the open source
+     * release -- sorry, we'll try to include it in a future version!
      *
      * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
      */
@@ -32,10 +28,8 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob. In proto3, only explicit setting it to
-     * false will avoid using packed encoding.  This option is prohibited in
-     * Editions, but the `repeated_field_encoding` feature can be used to control
-     * the behavior.
+     * a single length-prefixed blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      *
      * Generated from protobuf field <code>optional bool packed = 2;</code>
      */
@@ -70,11 +64,18 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      * interface is not affected by this option; const methods remain safe to
      * call from multiple threads concurrently, while non-const methods continue
      * to require exclusive access.
-     * Note that lazy message fields are still eagerly verified to check
-     * ill-formed wireformat or missing required fields. Calling IsInitialized()
-     * on the outer message would fail if the inner message has missing required
-     * fields. Failed verification would result in parsing failure (except when
-     * uninitialized messages are acceptable).
+     * Note that implementations may choose not to check required fields within
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
+     * may return true even if the inner message has missing required fields.
+     * This is necessary because otherwise the inner message would have to be
+     * parsed in order to perform the check, defeating the purpose of lazy
+     * parsing.  An implementation which chooses not to check required fields
+     * must be consistent about it.  That is, for any particular sub-message, the
+     * implementation must either *always* check its required fields, or *never*
+     * check its required fields, regardless of whether or not the message has
+     * been parsed.
+     * As of May 2022, lazy verifies the contents of the byte stream during
+     * parsing.  An invalid byte stream will cause the overall parsing to fail.
      *
      * Generated from protobuf field <code>optional bool lazy = 5 [default = false];</code>
      */
@@ -102,35 +103,6 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>optional bool weak = 10 [default = false];</code>
      */
     protected $weak = null;
-    /**
-     * Indicate that the field value should not be printed out when using debug
-     * formats, e.g. when the field contains sensitive credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 16 [default = false];</code>
-     */
-    protected $debug_redact = null;
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.OptionRetention retention = 17;</code>
-     */
-    protected $retention = null;
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.OptionTargetType targets = 19;</code>
-     */
-    private $targets;
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.EditionDefault edition_defaults = 20;</code>
-     */
-    private $edition_defaults;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 21;</code>
-     */
-    protected $features = null;
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 22;</code>
-     */
-    protected $feature_support = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -145,21 +117,16 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      *     Optional. Data for populating the Message object.
      *
      *     @type int $ctype
-     *           NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
      *           The ctype option instructs the C++ code generator to use a different
      *           representation of the field than it normally would.  See the specific
-     *           options below.  This option is only implemented to support use of
-     *           [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
-     *           type "bytes" in the open source release.
-     *           TODO: make ctype actually deprecated.
+     *           options below.  This option is not yet implemented in the open source
+     *           release -- sorry, we'll try to include it in a future version!
      *     @type bool $packed
      *           The packed option can be enabled for repeated primitive fields to enable
      *           a more efficient representation on the wire. Rather than repeatedly
      *           writing the tag and type for each element, the entire array is encoded as
-     *           a single length-delimited blob. In proto3, only explicit setting it to
-     *           false will avoid using packed encoding.  This option is prohibited in
-     *           Editions, but the `repeated_field_encoding` feature can be used to control
-     *           the behavior.
+     *           a single length-prefixed blob. In proto3, only explicit setting it to
+     *           false will avoid using packed encoding.
      *     @type int $jstype
      *           The jstype option determines the JavaScript type used for values of the
      *           field.  The option is permitted only for 64 bit integral and fixed types
@@ -186,11 +153,18 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      *           interface is not affected by this option; const methods remain safe to
      *           call from multiple threads concurrently, while non-const methods continue
      *           to require exclusive access.
-     *           Note that lazy message fields are still eagerly verified to check
-     *           ill-formed wireformat or missing required fields. Calling IsInitialized()
-     *           on the outer message would fail if the inner message has missing required
-     *           fields. Failed verification would result in parsing failure (except when
-     *           uninitialized messages are acceptable).
+     *           Note that implementations may choose not to check required fields within
+     *           a lazy sub-message.  That is, calling IsInitialized() on the outer message
+     *           may return true even if the inner message has missing required fields.
+     *           This is necessary because otherwise the inner message would have to be
+     *           parsed in order to perform the check, defeating the purpose of lazy
+     *           parsing.  An implementation which chooses not to check required fields
+     *           must be consistent about it.  That is, for any particular sub-message, the
+     *           implementation must either *always* check its required fields, or *never*
+     *           check its required fields, regardless of whether or not the message has
+     *           been parsed.
+     *           As of May 2022, lazy verifies the contents of the byte stream during
+     *           parsing.  An invalid byte stream will cause the overall parsing to fail.
      *     @type bool $unverified_lazy
      *           unverified_lazy does no correctness checks on the byte stream. This should
      *           only be used where lazy with verification is prohibitive for performance
@@ -202,15 +176,6 @@ class FieldOptions extends \Google\Protobuf\Internal\Message
      *           is a formalization for deprecating fields.
      *     @type bool $weak
      *           For Google-internal migration only. Do not use.
-     *     @type bool $debug_redact
-     *           Indicate that the field value should not be printed out when using debug
-     *           formats, e.g. when the field contains sensitive credentials.
-     *     @type int $retention
-     *     @type array<int>|\Google\Protobuf\Internal\RepeatedField $targets
-     *     @type array<\Google\Protobuf\Internal\FieldOptions\EditionDefault>|\Google\Protobuf\Internal\RepeatedField $edition_defaults
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
-     *     @type \Google\Protobuf\Internal\FieldOptions\FeatureSupport $feature_support
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -221,13 +186,10 @@ public function __construct($data = NULL) {
     }
 
     /**
-     * NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
      * The ctype option instructs the C++ code generator to use a different
      * representation of the field than it normally would.  See the specific
-     * options below.  This option is only implemented to support use of
-     * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
-     * type "bytes" in the open source release.
-     * TODO: make ctype actually deprecated.
+     * options below.  This option is not yet implemented in the open source
+     * release -- sorry, we'll try to include it in a future version!
      *
      * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
      * @return int
@@ -248,13 +210,10 @@ public function clearCtype()
     }
 
     /**
-     * NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
      * The ctype option instructs the C++ code generator to use a different
      * representation of the field than it normally would.  See the specific
-     * options below.  This option is only implemented to support use of
-     * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
-     * type "bytes" in the open source release.
-     * TODO: make ctype actually deprecated.
+     * options below.  This option is not yet implemented in the open source
+     * release -- sorry, we'll try to include it in a future version!
      *
      * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
      * @param int $var
@@ -272,10 +231,8 @@ public function setCtype($var)
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob. In proto3, only explicit setting it to
-     * false will avoid using packed encoding.  This option is prohibited in
-     * Editions, but the `repeated_field_encoding` feature can be used to control
-     * the behavior.
+     * a single length-prefixed blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      *
      * Generated from protobuf field <code>optional bool packed = 2;</code>
      * @return bool
@@ -300,9 +257,7 @@ public function clearPacked()
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
      * a single length-delimited blob. In proto3, only explicit setting it to
-     * false will avoid using packed encoding.  This option is prohibited in
-     * Editions, but the `repeated_field_encoding` feature can be used to control
-     * the behavior.
+     * false will avoid using packed encoding.
      *
      * Generated from protobuf field <code>optional bool packed = 2;</code>
      * @param bool $var
@@ -385,11 +340,18 @@ public function setJstype($var)
      * interface is not affected by this option; const methods remain safe to
      * call from multiple threads concurrently, while non-const methods continue
      * to require exclusive access.
-     * Note that lazy message fields are still eagerly verified to check
-     * ill-formed wireformat or missing required fields. Calling IsInitialized()
-     * on the outer message would fail if the inner message has missing required
-     * fields. Failed verification would result in parsing failure (except when
-     * uninitialized messages are acceptable).
+     * Note that implementations may choose not to check required fields within
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
+     * may return true even if the inner message has missing required fields.
+     * This is necessary because otherwise the inner message would have to be
+     * parsed in order to perform the check, defeating the purpose of lazy
+     * parsing.  An implementation which chooses not to check required fields
+     * must be consistent about it.  That is, for any particular sub-message, the
+     * implementation must either *always* check its required fields, or *never*
+     * check its required fields, regardless of whether or not the message has
+     * been parsed.
+     * As of May 2022, lazy verifies the contents of the byte stream during
+     * parsing.  An invalid byte stream will cause the overall parsing to fail.
      *
      * Generated from protobuf field <code>optional bool lazy = 5 [default = false];</code>
      * @return bool
@@ -424,11 +386,18 @@ public function clearLazy()
      * interface is not affected by this option; const methods remain safe to
      * call from multiple threads concurrently, while non-const methods continue
      * to require exclusive access.
-     * Note that lazy message fields are still eagerly verified to check
-     * ill-formed wireformat or missing required fields. Calling IsInitialized()
-     * on the outer message would fail if the inner message has missing required
-     * fields. Failed verification would result in parsing failure (except when
-     * uninitialized messages are acceptable).
+     * Note that implementations may choose not to check required fields within
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
+     * may return true even if the inner message has missing required fields.
+     * This is necessary because otherwise the inner message would have to be
+     * parsed in order to perform the check, defeating the purpose of lazy
+     * parsing.  An implementation which chooses not to check required fields
+     * must be consistent about it.  That is, for any particular sub-message, the
+     * implementation must either *always* check its required fields, or *never*
+     * check its required fields, regardless of whether or not the message has
+     * been parsed.
+     * As of May 2022, lazy verifies the contents of the byte stream during
+     * parsing.  An invalid byte stream will cause the overall parsing to fail.
      *
      * Generated from protobuf field <code>optional bool lazy = 5 [default = false];</code>
      * @param bool $var
@@ -560,188 +529,6 @@ public function setWeak($var)
         return $this;
     }
 
-    /**
-     * Indicate that the field value should not be printed out when using debug
-     * formats, e.g. when the field contains sensitive credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 16 [default = false];</code>
-     * @return bool
-     */
-    public function getDebugRedact()
-    {
-        return isset($this->debug_redact) ? $this->debug_redact : false;
-    }
-
-    public function hasDebugRedact()
-    {
-        return isset($this->debug_redact);
-    }
-
-    public function clearDebugRedact()
-    {
-        unset($this->debug_redact);
-    }
-
-    /**
-     * Indicate that the field value should not be printed out when using debug
-     * formats, e.g. when the field contains sensitive credentials.
-     *
-     * Generated from protobuf field <code>optional bool debug_redact = 16 [default = false];</code>
-     * @param bool $var
-     * @return $this
-     */
-    public function setDebugRedact($var)
-    {
-        GPBUtil::checkBool($var);
-        $this->debug_redact = $var;
-
-        return $this;
-    }
-
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.OptionRetention retention = 17;</code>
-     * @return int
-     */
-    public function getRetention()
-    {
-        return isset($this->retention) ? $this->retention : 0;
-    }
-
-    public function hasRetention()
-    {
-        return isset($this->retention);
-    }
-
-    public function clearRetention()
-    {
-        unset($this->retention);
-    }
-
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.OptionRetention retention = 17;</code>
-     * @param int $var
-     * @return $this
-     */
-    public function setRetention($var)
-    {
-        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\FieldOptions\OptionRetention::class);
-        $this->retention = $var;
-
-        return $this;
-    }
-
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.OptionTargetType targets = 19;</code>
-     * @return \Google\Protobuf\Internal\RepeatedField
-     */
-    public function getTargets()
-    {
-        return $this->targets;
-    }
-
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.OptionTargetType targets = 19;</code>
-     * @param array<int>|\Google\Protobuf\Internal\RepeatedField $var
-     * @return $this
-     */
-    public function setTargets($var)
-    {
-        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Protobuf\Internal\FieldOptions\OptionTargetType::class);
-        $this->targets = $arr;
-
-        return $this;
-    }
-
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.EditionDefault edition_defaults = 20;</code>
-     * @return \Google\Protobuf\Internal\RepeatedField
-     */
-    public function getEditionDefaults()
-    {
-        return $this->edition_defaults;
-    }
-
-    /**
-     * Generated from protobuf field <code>repeated .google.protobuf.FieldOptions.EditionDefault edition_defaults = 20;</code>
-     * @param array<\Google\Protobuf\Internal\FieldOptions\EditionDefault>|\Google\Protobuf\Internal\RepeatedField $var
-     * @return $this
-     */
-    public function setEditionDefaults($var)
-    {
-        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Internal\FieldOptions\EditionDefault::class);
-        $this->edition_defaults = $arr;
-
-        return $this;
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 21;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 21;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 22;</code>
-     * @return \Google\Protobuf\Internal\FieldOptions\FeatureSupport|null
-     */
-    public function getFeatureSupport()
-    {
-        return $this->feature_support;
-    }
-
-    public function hasFeatureSupport()
-    {
-        return isset($this->feature_support);
-    }
-
-    public function clearFeatureSupport()
-    {
-        unset($this->feature_support);
-    }
-
-    /**
-     * Generated from protobuf field <code>optional .google.protobuf.FieldOptions.FeatureSupport feature_support = 22;</code>
-     * @param \Google\Protobuf\Internal\FieldOptions\FeatureSupport $var
-     * @return $this
-     */
-    public function setFeatureSupport($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FieldOptions\FeatureSupport::class);
-        $this->feature_support = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/FieldOptions/CType.php b/php/src/Google/Protobuf/Internal/FieldOptions/CType.php
index a248777291ff..ba9eb4adb8f9 100644
--- a/php/src/Google/Protobuf/Internal/FieldOptions/CType.php
+++ b/php/src/Google/Protobuf/Internal/FieldOptions/CType.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\FieldOptions;
@@ -19,13 +18,6 @@ class CType
      */
     const STRING = 0;
     /**
-     * The option [ctype=CORD] may be applied to a non-repeated field of type
-     * "bytes". It indicates that in C++, the data should be stored in a Cord
-     * instead of a string.  For very large strings, this may reduce memory
-     * fragmentation. It may also allow better performance when parsing from a
-     * Cord, or when parsing with aliasing enabled, as the parsed Cord may then
-     * alias the original buffer.
-     *
      * Generated from protobuf enum <code>CORD = 1;</code>
      */
     const CORD = 1;
@@ -61,3 +53,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(CType::class, \Google\Protobuf\Internal\FieldOptions_CType::class);
+
diff --git a/php/src/Google/Protobuf/Internal/FieldOptions/JSType.php b/php/src/Google/Protobuf/Internal/FieldOptions/JSType.php
index 5ecc06bd9884..175a4330bbc1 100644
--- a/php/src/Google/Protobuf/Internal/FieldOptions/JSType.php
+++ b/php/src/Google/Protobuf/Internal/FieldOptions/JSType.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\FieldOptions;
@@ -58,3 +57,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(JSType::class, \Google\Protobuf\Internal\FieldOptions_JSType::class);
+
diff --git a/php/src/Google/Protobuf/Internal/FileDescriptorProto.php b/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
index 659d3b367516..d4c7f6bb8dd9 100644
--- a/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -89,9 +88,9 @@ class FileDescriptorProto extends \Google\Protobuf\Internal\Message
      */
     protected $syntax = null;
     /**
-     * The edition of the proto file.
+     * The edition of the proto file, which is an opaque string.
      *
-     * Generated from protobuf field <code>optional .google.protobuf.Edition edition = 14;</code>
+     * Generated from protobuf field <code>optional string edition = 13;</code>
      */
     protected $edition = null;
 
@@ -127,8 +126,8 @@ class FileDescriptorProto extends \Google\Protobuf\Internal\Message
      *           The syntax of the proto file.
      *           The supported values are "proto2", "proto3", and "editions".
      *           If `edition` is present, this value must be "editions".
-     *     @type int $edition
-     *           The edition of the proto file.
+     *     @type string $edition
+     *           The edition of the proto file, which is an opaque string.
      * }
      */
     public function __construct($data = NULL) {
@@ -495,14 +494,14 @@ public function setSyntax($var)
     }
 
     /**
-     * The edition of the proto file.
+     * The edition of the proto file, which is an opaque string.
      *
-     * Generated from protobuf field <code>optional .google.protobuf.Edition edition = 14;</code>
-     * @return int
+     * Generated from protobuf field <code>optional string edition = 13;</code>
+     * @return string
      */
     public function getEdition()
     {
-        return isset($this->edition) ? $this->edition : 0;
+        return isset($this->edition) ? $this->edition : '';
     }
 
     public function hasEdition()
@@ -516,15 +515,15 @@ public function clearEdition()
     }
 
     /**
-     * The edition of the proto file.
+     * The edition of the proto file, which is an opaque string.
      *
-     * Generated from protobuf field <code>optional .google.protobuf.Edition edition = 14;</code>
-     * @param int $var
+     * Generated from protobuf field <code>optional string edition = 13;</code>
+     * @param string $var
      * @return $this
      */
     public function setEdition($var)
     {
-        GPBUtil::checkEnum($var, \Google\Protobuf\Internal\Edition::class);
+        GPBUtil::checkString($var, True);
         $this->edition = $var;
 
         return $this;
diff --git a/php/src/Google/Protobuf/Internal/FileDescriptorSet.php b/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
index 6337846661b1..1dae6fb3e364 100644
--- a/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
+++ b/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/FileOptions.php b/php/src/Google/Protobuf/Internal/FileOptions.php
index 9d2c2ab01085..43931be80977 100644
--- a/php/src/Google/Protobuf/Internal/FileOptions.php
+++ b/php/src/Google/Protobuf/Internal/FileOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -54,14 +53,12 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      */
     protected $java_generate_equals_and_hash = null;
     /**
-     * A proto2 file can set this to true to opt in to UTF-8 checking for Java,
-     * which will throw an exception if invalid UTF-8 is parsed from the wire or
-     * assigned to a string field.
-     * TODO: clarify exactly what kinds of field types this option
-     * applies to, and update these docs accordingly.
-     * Proto3 files already perform these checks. Setting the option explicitly to
-     * false has no effect: it cannot be used to opt proto3 files out of UTF-8
-     * checks.
+     * If set true, then the Java2 code generator will generate code that
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
      *
      * Generated from protobuf field <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
      */
@@ -102,6 +99,10 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>optional bool py_generic_services = 18 [default = false];</code>
      */
     protected $py_generic_services = null;
+    /**
+     * Generated from protobuf field <code>optional bool php_generic_services = 42 [default = false];</code>
+     */
+    protected $php_generic_services = null;
     /**
      * Is this file deprecated?
      * Depending on the target platform, this can emit Deprecated annotations
@@ -171,12 +172,6 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>optional string ruby_package = 45;</code>
      */
     protected $ruby_package = null;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     */
-    protected $features = null;
     /**
      * The parser stores options it doesn't recognize here.
      * See the documentation for the "Options" section above.
@@ -212,14 +207,12 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      *     @type bool $java_generate_equals_and_hash
      *           This option does nothing.
      *     @type bool $java_string_check_utf8
-     *           A proto2 file can set this to true to opt in to UTF-8 checking for Java,
-     *           which will throw an exception if invalid UTF-8 is parsed from the wire or
-     *           assigned to a string field.
-     *           TODO: clarify exactly what kinds of field types this option
-     *           applies to, and update these docs accordingly.
-     *           Proto3 files already perform these checks. Setting the option explicitly to
-     *           false has no effect: it cannot be used to opt proto3 files out of UTF-8
-     *           checks.
+     *           If set true, then the Java2 code generator will generate code that
+     *           throws an exception whenever an attempt is made to assign a non-UTF-8
+     *           byte sequence to a string field.
+     *           Message reflection will do the same.
+     *           However, an extension field still accepts non-UTF-8 byte sequences.
+     *           This option has no effect on when used with the lite runtime.
      *     @type int $optimize_for
      *     @type string $go_package
      *           Sets the Go package where structs generated from this .proto will be
@@ -239,6 +232,7 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      *           explicitly set them to true.
      *     @type bool $java_generic_services
      *     @type bool $py_generic_services
+     *     @type bool $php_generic_services
      *     @type bool $deprecated
      *           Is this file deprecated?
      *           Depending on the target platform, this can emit Deprecated annotations
@@ -272,8 +266,6 @@ class FileOptions extends \Google\Protobuf\Internal\Message
      *           Use this option to change the package of ruby generated classes. Default
      *           is empty. When this option is not set, the package name will be used for
      *           determining the ruby package.
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here.
      *           See the documentation for the "Options" section above.
@@ -425,17 +417,13 @@ public function setJavaMultipleFiles($var)
      */
     public function getJavaGenerateEqualsAndHash()
     {
-        if (isset($this->java_generate_equals_and_hash)) {
-            @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED);
         return isset($this->java_generate_equals_and_hash) ? $this->java_generate_equals_and_hash : false;
     }
 
     public function hasJavaGenerateEqualsAndHash()
     {
-        if (isset($this->java_generate_equals_and_hash)) {
-            @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('java_generate_equals_and_hash is deprecated.', E_USER_DEPRECATED);
         return isset($this->java_generate_equals_and_hash);
     }
 
@@ -463,14 +451,12 @@ public function setJavaGenerateEqualsAndHash($var)
     }
 
     /**
-     * A proto2 file can set this to true to opt in to UTF-8 checking for Java,
-     * which will throw an exception if invalid UTF-8 is parsed from the wire or
-     * assigned to a string field.
-     * TODO: clarify exactly what kinds of field types this option
-     * applies to, and update these docs accordingly.
-     * Proto3 files already perform these checks. Setting the option explicitly to
-     * false has no effect: it cannot be used to opt proto3 files out of UTF-8
-     * checks.
+     * If set true, then the Java2 code generator will generate code that
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
      *
      * Generated from protobuf field <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
      * @return bool
@@ -491,14 +477,12 @@ public function clearJavaStringCheckUtf8()
     }
 
     /**
-     * A proto2 file can set this to true to opt in to UTF-8 checking for Java,
-     * which will throw an exception if invalid UTF-8 is parsed from the wire or
-     * assigned to a string field.
-     * TODO: clarify exactly what kinds of field types this option
-     * applies to, and update these docs accordingly.
-     * Proto3 files already perform these checks. Setting the option explicitly to
-     * false has no effect: it cannot be used to opt proto3 files out of UTF-8
-     * checks.
+     * If set true, then the Java2 code generator will generate code that
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
      *
      * Generated from protobuf field <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
      * @param bool $var
@@ -704,6 +688,38 @@ public function setPyGenericServices($var)
         return $this;
     }
 
+    /**
+     * Generated from protobuf field <code>optional bool php_generic_services = 42 [default = false];</code>
+     * @return bool
+     */
+    public function getPhpGenericServices()
+    {
+        return isset($this->php_generic_services) ? $this->php_generic_services : false;
+    }
+
+    public function hasPhpGenericServices()
+    {
+        return isset($this->php_generic_services);
+    }
+
+    public function clearPhpGenericServices()
+    {
+        unset($this->php_generic_services);
+    }
+
+    /**
+     * Generated from protobuf field <code>optional bool php_generic_services = 42 [default = false];</code>
+     * @param bool $var
+     * @return $this
+     */
+    public function setPhpGenericServices($var)
+    {
+        GPBUtil::checkBool($var);
+        $this->php_generic_services = $var;
+
+        return $this;
+    }
+
     /**
      * Is this file deprecated?
      * Depending on the target platform, this can emit Deprecated annotations
@@ -1058,42 +1074,6 @@ public function setRubyPackage($var)
         return $this;
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 50;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here.
      * See the documentation for the "Options" section above.
diff --git a/php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php b/php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php
index 2ffe8b2faedf..0df27b53359d 100644
--- a/php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php
+++ b/php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\FileOptions;
@@ -60,3 +59,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(OptimizeMode::class, \Google\Protobuf\Internal\FileOptions_OptimizeMode::class);
+
diff --git a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
index 0fe4a433b65a..a1db269bf939 100644
--- a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
+++ b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
index 6a3b60c10321..b1ef4ee95dd4 100644
--- a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
+++ b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\GeneratedCodeInfo;
@@ -251,3 +250,6 @@ public function setSemantic($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Annotation::class, \Google\Protobuf\Internal\GeneratedCodeInfo_Annotation::class);
+
diff --git a/php/src/Google/Protobuf/Internal/MessageOptions.php b/php/src/Google/Protobuf/Internal/MessageOptions.php
index 2fe22c2869f6..bb01aa4ba93d 100644
--- a/php/src/Google/Protobuf/Internal/MessageOptions.php
+++ b/php/src/Google/Protobuf/Internal/MessageOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -54,6 +53,9 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      */
     protected $deprecated = null;
     /**
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
      * Whether the message is an automatically generated map entry type for the
      * maps field.
      * For maps fields:
@@ -69,9 +71,6 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      * use a native map in the target language to hold the keys and values.
      * The reflection APIs in such implementations still need to work as
      * if the field is a repeated message field.
-     * NOTE: Do not set the option in .proto files. Always use the maps syntax
-     * instead. The option should only be implicitly set by the proto compiler
-     * parser.
      *
      * Generated from protobuf field <code>optional bool map_entry = 7;</code>
      */
@@ -90,12 +89,6 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      * @deprecated
      */
     protected $deprecated_legacy_json_field_conflicts = null;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 12;</code>
-     */
-    protected $features = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -135,6 +128,9 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      *           for the message, or it will be completely ignored; in the very least,
      *           this is a formalization for deprecating messages.
      *     @type bool $map_entry
+     *           NOTE: Do not set the option in .proto files. Always use the maps syntax
+     *           instead. The option should only be implicitly set by the proto compiler
+     *           parser.
      *           Whether the message is an automatically generated map entry type for the
      *           maps field.
      *           For maps fields:
@@ -150,9 +146,6 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      *           use a native map in the target language to hold the keys and values.
      *           The reflection APIs in such implementations still need to work as
      *           if the field is a repeated message field.
-     *           NOTE: Do not set the option in .proto files. Always use the maps syntax
-     *           instead. The option should only be implicitly set by the proto compiler
-     *           parser.
      *     @type bool $deprecated_legacy_json_field_conflicts
      *           Enable the legacy handling of JSON field name conflicts.  This lowercases
      *           and strips underscored from the fields before comparison in proto3 only.
@@ -162,8 +155,6 @@ class MessageOptions extends \Google\Protobuf\Internal\Message
      *           to the change in behavior for JSON field name conflicts.
      *           TODO This is legacy behavior we plan to remove once downstream
      *           teams have had time to migrate.
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -320,6 +311,9 @@ public function setDeprecated($var)
     }
 
     /**
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
      * Whether the message is an automatically generated map entry type for the
      * maps field.
      * For maps fields:
@@ -335,9 +329,6 @@ public function setDeprecated($var)
      * use a native map in the target language to hold the keys and values.
      * The reflection APIs in such implementations still need to work as
      * if the field is a repeated message field.
-     * NOTE: Do not set the option in .proto files. Always use the maps syntax
-     * instead. The option should only be implicitly set by the proto compiler
-     * parser.
      *
      * Generated from protobuf field <code>optional bool map_entry = 7;</code>
      * @return bool
@@ -358,6 +349,9 @@ public function clearMapEntry()
     }
 
     /**
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
      * Whether the message is an automatically generated map entry type for the
      * maps field.
      * For maps fields:
@@ -373,9 +367,6 @@ public function clearMapEntry()
      * use a native map in the target language to hold the keys and values.
      * The reflection APIs in such implementations still need to work as
      * if the field is a repeated message field.
-     * NOTE: Do not set the option in .proto files. Always use the maps syntax
-     * instead. The option should only be implicitly set by the proto compiler
-     * parser.
      *
      * Generated from protobuf field <code>optional bool map_entry = 7;</code>
      * @param bool $var
@@ -405,17 +396,13 @@ public function setMapEntry($var)
      */
     public function getDeprecatedLegacyJsonFieldConflicts()
     {
-        if (isset($this->deprecated_legacy_json_field_conflicts)) {
-            @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
         return isset($this->deprecated_legacy_json_field_conflicts) ? $this->deprecated_legacy_json_field_conflicts : false;
     }
 
     public function hasDeprecatedLegacyJsonFieldConflicts()
     {
-        if (isset($this->deprecated_legacy_json_field_conflicts)) {
-            @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
-        }
+        @trigger_error('deprecated_legacy_json_field_conflicts is deprecated.', E_USER_DEPRECATED);
         return isset($this->deprecated_legacy_json_field_conflicts);
     }
 
@@ -449,42 +436,6 @@ public function setDeprecatedLegacyJsonFieldConflicts($var)
         return $this;
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 12;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 12;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php b/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
index 93276e3930c8..96efb02d24a1 100644
--- a/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/MethodOptions.php b/php/src/Google/Protobuf/Internal/MethodOptions.php
index fc9e55102935..87af45167a2d 100644
--- a/php/src/Google/Protobuf/Internal/MethodOptions.php
+++ b/php/src/Google/Protobuf/Internal/MethodOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -29,12 +28,6 @@ class MethodOptions extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
      */
     protected $idempotency_level = null;
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 35;</code>
-     */
-    protected $features = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -54,8 +47,6 @@ class MethodOptions extends \Google\Protobuf\Internal\Message
      *           for the method, or it will be completely ignored; in the very least,
      *           this is a formalization for deprecating methods.
      *     @type int $idempotency_level
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -139,42 +130,6 @@ public function setIdempotencyLevel($var)
         return $this;
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 35;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 35;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php b/php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php
index ce99b8c70f9e..ce3c062c691d 100644
--- a/php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php
+++ b/php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\MethodOptions;
@@ -60,3 +59,6 @@ public static function value($name)
     }
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(IdempotencyLevel::class, \Google\Protobuf\Internal\MethodOptions_IdempotencyLevel::class);
+
diff --git a/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php b/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
index da55bb4f42c5..3cb9f25c212d 100644
--- a/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/OneofOptions.php b/php/src/Google/Protobuf/Internal/OneofOptions.php
index 4d7f34468016..b44d19457351 100644
--- a/php/src/Google/Protobuf/Internal/OneofOptions.php
+++ b/php/src/Google/Protobuf/Internal/OneofOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -16,12 +15,6 @@
  */
 class OneofOptions extends \Google\Protobuf\Internal\Message
 {
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 1;</code>
-     */
-    protected $features = null;
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
@@ -35,8 +28,6 @@ class OneofOptions extends \Google\Protobuf\Internal\Message
      * @param array $data {
      *     Optional. Data for populating the Message object.
      *
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type array<\Google\Protobuf\Internal\UninterpretedOption>|\Google\Protobuf\Internal\RepeatedField $uninterpreted_option
      *           The parser stores options it doesn't recognize here. See above.
      * }
@@ -46,42 +37,6 @@ public function __construct($data = NULL) {
         parent::__construct($data);
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 1;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 1;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * The parser stores options it doesn't recognize here. See above.
      *
diff --git a/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php b/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
index bcc44f0e2324..e322e2abf105 100644
--- a/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/ServiceOptions.php b/php/src/Google/Protobuf/Internal/ServiceOptions.php
index 278a60c5ce39..8ac27ee80447 100644
--- a/php/src/Google/Protobuf/Internal/ServiceOptions.php
+++ b/php/src/Google/Protobuf/Internal/ServiceOptions.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
@@ -16,12 +15,6 @@
  */
 class ServiceOptions extends \Google\Protobuf\Internal\Message
 {
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 34;</code>
-     */
-    protected $features = null;
     /**
      * Is this service deprecated?
      * Depending on the target platform, this can emit Deprecated annotations
@@ -44,8 +37,6 @@ class ServiceOptions extends \Google\Protobuf\Internal\Message
      * @param array $data {
      *     Optional. Data for populating the Message object.
      *
-     *     @type \Google\Protobuf\Internal\FeatureSet $features
-     *           Any features defined in the specific edition.
      *     @type bool $deprecated
      *           Is this service deprecated?
      *           Depending on the target platform, this can emit Deprecated annotations
@@ -60,42 +51,6 @@ public function __construct($data = NULL) {
         parent::__construct($data);
     }
 
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 34;</code>
-     * @return \Google\Protobuf\Internal\FeatureSet|null
-     */
-    public function getFeatures()
-    {
-        return $this->features;
-    }
-
-    public function hasFeatures()
-    {
-        return isset($this->features);
-    }
-
-    public function clearFeatures()
-    {
-        unset($this->features);
-    }
-
-    /**
-     * Any features defined in the specific edition.
-     *
-     * Generated from protobuf field <code>optional .google.protobuf.FeatureSet features = 34;</code>
-     * @param \Google\Protobuf\Internal\FeatureSet $var
-     * @return $this
-     */
-    public function setFeatures($var)
-    {
-        GPBUtil::checkMessage($var, \Google\Protobuf\Internal\FeatureSet::class);
-        $this->features = $var;
-
-        return $this;
-    }
-
     /**
      * Is this service deprecated?
      * Depending on the target platform, this can emit Deprecated annotations
diff --git a/php/src/Google/Protobuf/Internal/SourceCodeInfo.php b/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
index d6419f5a9654..0005bc669675 100644
--- a/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
+++ b/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php b/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
index 5253dbc4ffd3..032be39214a4 100644
--- a/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
+++ b/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\SourceCodeInfo;
@@ -20,7 +19,7 @@ class Location extends \Google\Protobuf\Internal\Message
      * Identifies which part of the FileDescriptorProto was defined at this
      * location.
      * Each element is a field number or an index.  They form a path from
-     * the root FileDescriptorProto to the place where the definition appears.
+     * the root FileDescriptorProto to the place where the definition occurs.
      * For example, this path:
      *   [ 4, 3, 2, 7, 1 ]
      * refers to:
@@ -82,11 +81,11 @@ class Location extends \Google\Protobuf\Internal\Message
      *   // both.
      *   // Detached comment for corge paragraph 2.
      *   optional string corge = 5;
-     *   /* Block comment attached
+     *   /&#42; Block comment attached
      *    * to corge.  Leading asterisks
-     *    * will be removed. {@*}
-     *   /* Block comment attached to
-     *    * grault. {@*}
+     *    * will be removed. *&#47;
+     *   /&#42; Block comment attached to
+     *    * grault. *&#47;
      *   optional int32 grault = 6;
      *   // ignored detached comments.
      *
@@ -112,7 +111,7 @@ class Location extends \Google\Protobuf\Internal\Message
      *           Identifies which part of the FileDescriptorProto was defined at this
      *           location.
      *           Each element is a field number or an index.  They form a path from
-     *           the root FileDescriptorProto to the place where the definition appears.
+     *           the root FileDescriptorProto to the place where the definition occurs.
      *           For example, this path:
      *             [ 4, 3, 2, 7, 1 ]
      *           refers to:
@@ -166,11 +165,11 @@ class Location extends \Google\Protobuf\Internal\Message
      *             // both.
      *             // Detached comment for corge paragraph 2.
      *             optional string corge = 5;
-     *             /* Block comment attached
+     *             /&#42; Block comment attached
      *              * to corge.  Leading asterisks
-     *              * will be removed. {@*}
-     *             /* Block comment attached to
-     *              * grault. {@*}
+     *              * will be removed. *&#47;
+     *             /&#42; Block comment attached to
+     *              * grault. *&#47;
      *             optional int32 grault = 6;
      *             // ignored detached comments.
      *     @type string $trailing_comments
@@ -186,7 +185,7 @@ public function __construct($data = NULL) {
      * Identifies which part of the FileDescriptorProto was defined at this
      * location.
      * Each element is a field number or an index.  They form a path from
-     * the root FileDescriptorProto to the place where the definition appears.
+     * the root FileDescriptorProto to the place where the definition occurs.
      * For example, this path:
      *   [ 4, 3, 2, 7, 1 ]
      * refers to:
@@ -217,7 +216,7 @@ public function getPath()
      * Identifies which part of the FileDescriptorProto was defined at this
      * location.
      * Each element is a field number or an index.  They form a path from
-     * the root FileDescriptorProto to the place where the definition appears.
+     * the root FileDescriptorProto to the place where the definition occurs.
      * For example, this path:
      *   [ 4, 3, 2, 7, 1 ]
      * refers to:
@@ -312,11 +311,11 @@ public function setSpan($var)
      *   // both.
      *   // Detached comment for corge paragraph 2.
      *   optional string corge = 5;
-     *   /* Block comment attached
+     *   /&#42; Block comment attached
      *    * to corge.  Leading asterisks
-     *    * will be removed. {@*}
-     *   /* Block comment attached to
-     *    * grault. {@*}
+     *    * will be removed. *&#47;
+     *   /&#42; Block comment attached to
+     *    * grault. *&#47;
      *   optional int32 grault = 6;
      *   // ignored detached comments.
      *
@@ -368,11 +367,11 @@ public function clearLeadingComments()
      *   // both.
      *   // Detached comment for corge paragraph 2.
      *   optional string corge = 5;
-     *   /* Block comment attached
+     *   /&#42; Block comment attached
      *    * to corge.  Leading asterisks
-     *    * will be removed. {@*}
-     *   /* Block comment attached to
-     *    * grault. {@*}
+     *    * will be removed. *&#47;
+     *   /&#42; Block comment attached to
+     *    * grault. *&#47;
      *   optional int32 grault = 6;
      *   // ignored detached comments.
      *
@@ -444,3 +443,6 @@ public function setLeadingDetachedComments($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Location::class, \Google\Protobuf\Internal\SourceCodeInfo_Location::class);
+
diff --git a/php/src/Google/Protobuf/Internal/UninterpretedOption.php b/php/src/Google/Protobuf/Internal/UninterpretedOption.php
index 156534e4f224..a1cdca5734d5 100644
--- a/php/src/Google/Protobuf/Internal/UninterpretedOption.php
+++ b/php/src/Google/Protobuf/Internal/UninterpretedOption.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal;
diff --git a/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php b/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
index 784a9cff9e80..2debf83a6295 100644
--- a/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
+++ b/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/descriptor.proto
 
 namespace Google\Protobuf\Internal\UninterpretedOption;
@@ -112,3 +111,6 @@ public function setIsExtension($var)
 
 }
 
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(NamePart::class, \Google\Protobuf\Internal\UninterpretedOption_NamePart::class);
+
diff --git a/php/src/Google/Protobuf/ListValue.php b/php/src/Google/Protobuf/ListValue.php
index af0845f4b4da..891283c2b2be 100644
--- a/php/src/Google/Protobuf/ListValue.php
+++ b/php/src/Google/Protobuf/ListValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/struct.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Method.php b/php/src/Google/Protobuf/Method.php
index 6c92edf677e9..eda00bf61122 100644
--- a/php/src/Google/Protobuf/Method.php
+++ b/php/src/Google/Protobuf/Method.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/api.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Mixin.php b/php/src/Google/Protobuf/Mixin.php
index f01a4d24f189..4f7bf844ccfe 100644
--- a/php/src/Google/Protobuf/Mixin.php
+++ b/php/src/Google/Protobuf/Mixin.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/api.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/NullValue.php b/php/src/Google/Protobuf/NullValue.php
index 2c40d97b60d1..61569f8a36f7 100644
--- a/php/src/Google/Protobuf/NullValue.php
+++ b/php/src/Google/Protobuf/NullValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/struct.proto
 
 namespace Google\Protobuf;
@@ -10,7 +9,7 @@
 /**
  * `NullValue` is a singleton enumeration to represent the null value for the
  * `Value` type union.
- * The JSON representation for `NullValue` is JSON `null`.
+ *  The JSON representation for `NullValue` is JSON `null`.
  *
  * Protobuf type <code>google.protobuf.NullValue</code>
  */
diff --git a/php/src/Google/Protobuf/Option.php b/php/src/Google/Protobuf/Option.php
index aeb8368916b2..31249e513114 100644
--- a/php/src/Google/Protobuf/Option.php
+++ b/php/src/Google/Protobuf/Option.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/SourceContext.php b/php/src/Google/Protobuf/SourceContext.php
index cdb5670e48da..8b3ea11220cd 100644
--- a/php/src/Google/Protobuf/SourceContext.php
+++ b/php/src/Google/Protobuf/SourceContext.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/source_context.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/StringValue.php b/php/src/Google/Protobuf/StringValue.php
index 9c46c2db99e4..ad98316b2247 100644
--- a/php/src/Google/Protobuf/StringValue.php
+++ b/php/src/Google/Protobuf/StringValue.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Struct.php b/php/src/Google/Protobuf/Struct.php
index 38c608908975..0456541cbd2c 100644
--- a/php/src/Google/Protobuf/Struct.php
+++ b/php/src/Google/Protobuf/Struct.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/struct.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Syntax.php b/php/src/Google/Protobuf/Syntax.php
index 90a75b7e5559..10952bfd42ce 100644
--- a/php/src/Google/Protobuf/Syntax.php
+++ b/php/src/Google/Protobuf/Syntax.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
@@ -26,17 +25,10 @@ class Syntax
      * Generated from protobuf enum <code>SYNTAX_PROTO3 = 1;</code>
      */
     const SYNTAX_PROTO3 = 1;
-    /**
-     * Syntax `editions`.
-     *
-     * Generated from protobuf enum <code>SYNTAX_EDITIONS = 2;</code>
-     */
-    const SYNTAX_EDITIONS = 2;
 
     private static $valueToName = [
         self::SYNTAX_PROTO2 => 'SYNTAX_PROTO2',
         self::SYNTAX_PROTO3 => 'SYNTAX_PROTO3',
-        self::SYNTAX_EDITIONS => 'SYNTAX_EDITIONS',
     ];
 
     public static function name($value)
diff --git a/php/src/Google/Protobuf/Timestamp.php b/php/src/Google/Protobuf/Timestamp.php
index 489e21d36e29..a12f48520bf2 100644
--- a/php/src/Google/Protobuf/Timestamp.php
+++ b/php/src/Google/Protobuf/Timestamp.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/timestamp.proto
 
 namespace Google\Protobuf;
@@ -74,7 +73,7 @@
  * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
  * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
  * the Joda Time's [`ISODateTimeFormat.dateTime()`](
- * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
+ * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
  * ) to obtain a formatter capable of generating timestamps in this format.
  *
  * Generated from protobuf message <code>google.protobuf.Timestamp</code>
diff --git a/php/src/Google/Protobuf/Type.php b/php/src/Google/Protobuf/Type.php
index 6167ba4484b6..d4af7dfecbae 100644
--- a/php/src/Google/Protobuf/Type.php
+++ b/php/src/Google/Protobuf/Type.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/type.proto
 
 namespace Google\Protobuf;
@@ -52,12 +51,6 @@ class Type extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>.google.protobuf.Syntax syntax = 6;</code>
      */
     protected $syntax = 0;
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 7;</code>
-     */
-    protected $edition = '';
 
     /**
      * Constructor.
@@ -77,8 +70,6 @@ class Type extends \Google\Protobuf\Internal\Message
      *           The source context.
      *     @type int $syntax
      *           The source syntax.
-     *     @type string $edition
-     *           The source edition string, only valid when syntax is SYNTAX_EDITIONS.
      * }
      */
     public function __construct($data = NULL) {
@@ -252,31 +243,5 @@ public function setSyntax($var)
         return $this;
     }
 
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 7;</code>
-     * @return string
-     */
-    public function getEdition()
-    {
-        return $this->edition;
-    }
-
-    /**
-     * The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-     *
-     * Generated from protobuf field <code>string edition = 7;</code>
-     * @param string $var
-     * @return $this
-     */
-    public function setEdition($var)
-    {
-        GPBUtil::checkString($var, True);
-        $this->edition = $var;
-
-        return $this;
-    }
-
 }
 
diff --git a/php/src/Google/Protobuf/UInt32Value.php b/php/src/Google/Protobuf/UInt32Value.php
index 84303edff10b..ae5fc5b42c8d 100644
--- a/php/src/Google/Protobuf/UInt32Value.php
+++ b/php/src/Google/Protobuf/UInt32Value.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/UInt64Value.php b/php/src/Google/Protobuf/UInt64Value.php
index e19ba41f2828..aa9686726b93 100644
--- a/php/src/Google/Protobuf/UInt64Value.php
+++ b/php/src/Google/Protobuf/UInt64Value.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/wrappers.proto
 
 namespace Google\Protobuf;
diff --git a/php/src/Google/Protobuf/Value.php b/php/src/Google/Protobuf/Value.php
index 710f39fdf1d9..dcc0bdf7c429 100644
--- a/php/src/Google/Protobuf/Value.php
+++ b/php/src/Google/Protobuf/Value.php
@@ -1,6 +1,5 @@
 <?php
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# NO CHECKED-IN PROTOBUF GENCODE
 # source: google/protobuf/struct.proto
 
 namespace Google\Protobuf;


Test patch:
diff --git a/rust/test/fields_with_imported_types.proto b/rust/test/fields_with_imported_types.proto
index 2610ff2c743c..6ffe34c89e0e 100644
--- a/rust/test/fields_with_imported_types.proto
+++ b/rust/test/fields_with_imported_types.proto
@@ -9,7 +9,7 @@ syntax = "proto2";
 
 package main;
 
-import "google/protobuf/rust/test/imported_types.proto";
+import "rust/test/imported_types.proto";
 
 message MsgWithFieldsWithImportedTypes {
   optional imported_types.ImportedMessage imported_message_field = 1;
diff --git a/rust/test/import_public.proto b/rust/test/import_public.proto
index 1103b66411a9..4c3503948817 100644
--- a/rust/test/import_public.proto
+++ b/rust/test/import_public.proto
@@ -9,4 +9,4 @@ syntax = "proto2";
 
 package import_public;
 
-import public "google/protobuf/rust/test/import_public_primary_src.proto";
+import public "rust/test/import_public_primary_src.proto";
diff --git a/rust/test/import_public2.proto b/rust/test/import_public2.proto
index 18ad958e3b6b..8746921f38ee 100644
--- a/rust/test/import_public2.proto
+++ b/rust/test/import_public2.proto
@@ -9,5 +9,5 @@ syntax = "proto2";
 
 package import_public;
 
-import public "google/protobuf/rust/test/import_public_non_primary_src1.proto";
-import public "google/protobuf/rust/test/import_public_non_primary_src2.proto";
+import public "rust/test/import_public_non_primary_src1.proto";
+import public "rust/test/import_public_non_primary_src2.proto";
diff --git a/rust/test/import_public_primary_src.proto b/rust/test/import_public_primary_src.proto
index 689cc644dc1c..f590fc95c876 100644
--- a/rust/test/import_public_primary_src.proto
+++ b/rust/test/import_public_primary_src.proto
@@ -9,7 +9,7 @@ syntax = "proto2";
 
 package primary_src_testing_packages;
 
-import public "google/protobuf/rust/test/import_public_grandparent.proto";
+import public "rust/test/import_public_grandparent.proto";
 
 message PrimarySrcPubliclyImportedMsg {}
 
diff --git a/rust/test/no_package.proto b/rust/test/no_package.proto
index 4db4f3c3a63f..a476ffb431ee 100644
--- a/rust/test/no_package.proto
+++ b/rust/test/no_package.proto
@@ -7,7 +7,7 @@
 
 syntax = "proto2";
 
-import public "google/protobuf/rust/test/no_package_import.proto";
+import public "rust/test/no_package_import.proto";
 
 message MsgWithoutPackage {}
 
diff --git a/rust/test/package.proto b/rust/test/package.proto
index f68e6767a6a1..135ac0b7a3ae 100644
--- a/rust/test/package.proto
+++ b/rust/test/package.proto
@@ -9,7 +9,7 @@ syntax = "proto2";
 
 package testing_packages;
 
-import public "google/protobuf/rust/test/package_import.proto";
+import public "rust/test/package_import.proto";
 
 message MsgWithPackage {}
 
diff --git a/rust/test/package_disabiguation2.proto b/rust/test/package_disabiguation2.proto
index 33a0471620c5..e52c04c5dda6 100644
--- a/rust/test/package_disabiguation2.proto
+++ b/rust/test/package_disabiguation2.proto
@@ -9,7 +9,7 @@ syntax = "proto2";
 
 package package2;
 
-import "google/protobuf/rust/test/package_disabiguation1.proto";
+import "rust/test/package_disabiguation1.proto";
 
 message YayConflict {
   optional .package1.YayConflict other_message = 1;