types/descriptorpb: regenerate using latest protobuf v31 release

* Ignore the //clang-format off directive for copyright header checks.

* Run the conformance tests with the protolegacy build tag,
  because (with protobuf v31) the conformance tests now include
  a test for message sets (which are a protolegacy feature).

Change-Id: I23e649f433e9342020493180f20b92c1720da049
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/673495
Reviewed-by: Lasse Folger <lassefolger@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/integration_test.go b/integration_test.go
index 0f79f7a..47e13c0 100644
--- a/integration_test.go
+++ b/integration_test.go
@@ -33,7 +33,7 @@
 	regenerate   = flag.Bool("regenerate", false, "regenerate files")
 	buildRelease = flag.Bool("buildRelease", false, "build release binaries")
 
-	protobufVersion = "30.0"
+	protobufVersion = "31.0"
 
 	golangVersions = func() []string {
 		// Version policy: oldest supported version of Go, plus the version before that.
@@ -41,8 +41,8 @@
 		// https://cloud.google.com/go/getting-started/supported-go-versions
 		return []string{
 			"1.22.12",
-			"1.23.6",
-			"1.24.0",
+			"1.23.9",
+			"1.24.2",
 		}
 	}()
 	golangLatest = golangVersions[len(golangVersions)-1]
@@ -157,7 +157,7 @@
 			runGo("ProtoLegacyRace", command{}, "go", "test", "-race", "-tags", "protolegacy", "./...")
 			runGo("ProtoLegacy", command{}, "go", "test", "-tags", "protolegacy", "./...")
 			runGo("ProtocGenGo", command{Dir: "cmd/protoc-gen-go/testdata"}, "go", "test")
-			runGo("Conformance", command{Dir: "internal/conformance"}, "go", "test", "-execute")
+			runGo("Conformance", command{Dir: "internal/conformance"}, "go", "test", "-tags", "protolegacy", "-execute")
 
 			// Only run the 32-bit compatibility tests for Linux;
 			// avoid Darwin since 10.15 dropped support i386 code execution.
@@ -520,6 +520,10 @@
 		if err != nil {
 			t.Fatal(err)
 		}
+		// Files like test_messages_proto2_editions.pb.go start with a
+		// clang-format directive that has to go before the copyright header for
+		// technical reasons.
+		b = bytes.TrimPrefix(b, []byte("// clang-format off\n"))
 		for _, re := range copyrightRegex {
 			if loc := re.FindIndex(b); loc != nil && loc[0] == 0 {
 				continue File
diff --git a/internal/conformance/failing_tests.txt b/internal/conformance/failing_tests.txt
index 8b13789..eb45ea0 100644
--- a/internal/conformance/failing_tests.txt
+++ b/internal/conformance/failing_tests.txt
@@ -1 +1,2 @@
+Recommended.Proto2.ProtobufInput.ValidMessageSetEncoding.SubmessageEncoding.ProtobufOutput # Output was not equivalent to reference message: deleted: message_set_correct.(protobuf_test_messages.proto2.TestAllTypesProto2.M
 
diff --git a/internal/conformance/failing_tests_text_format.txt b/internal/conformance/failing_tests_text_format.txt
index a874e66..7225ab9 100644
--- a/internal/conformance/failing_tests_text_format.txt
+++ b/internal/conformance/failing_tests_text_format.txt
@@ -13,6 +13,10 @@
 Required.Editions_Proto2.TextFormatInput.ClosedEnumFieldWithUnknownNumber                                          # Should have failed to parse, but didn't.
 Required.Editions_Proto3.TextFormatInput.FloatFieldNoNegativeOctal                                                 # Should have failed to parse, but didn't.
 Required.Editions_Proto3.TextFormatInput.FloatFieldNoOctal                                                         # Should have failed to parse, but didn't.
+Required.Editions_Proto3.TextFormatInput.Int32FieldTooLargeHex                                                     # Should have failed to parse, but didn't.
+Required.Editions_Proto3.TextFormatInput.Int64FieldTooLargeHex                                                     # Should have failed to parse, but didn't.
 Required.Proto2.TextFormatInput.ClosedEnumFieldWithUnknownNumber                                                   # Should have failed to parse, but didn't.
 Required.Proto3.TextFormatInput.FloatFieldNoNegativeOctal                                                          # Should have failed to parse, but didn't.
 Required.Proto3.TextFormatInput.FloatFieldNoOctal                                                                  # Should have failed to parse, but didn't.
+Required.Proto3.TextFormatInput.Int32FieldTooLargeHex                                                              # Should have failed to parse, but didn't.
+Required.Proto3.TextFormatInput.Int64FieldTooLargeHex                                                              # Should have failed to parse, but didn't.
diff --git a/internal/editiondefaults/editions_defaults.binpb b/internal/editiondefaults/editions_defaults.binpb
index 323829d..0469635 100644
--- a/internal/editiondefaults/editions_defaults.binpb
+++ b/internal/editiondefaults/editions_defaults.binpb
Binary files differ
diff --git a/internal/filedesc/build_test.go b/internal/filedesc/build_test.go
index 3fcd03b..d13ae22 100644
--- a/internal/filedesc/build_test.go
+++ b/internal/filedesc/build_test.go
@@ -59,6 +59,13 @@
 		// Support for weak fields has been removed.
 		descPkg.Append("FileDescriptorProto.weak_dependency"): true,
 
+		// TODO: Test option_dependency.
+		descPkg.Append("FileDescriptorProto.option_dependency"): true,
+
+		// Visibility is enforced in protoc, runtimes should not inspect this.
+		descPkg.Append("DescriptorProto.visibility"):     true,
+		descPkg.Append("EnumDescriptorProto.visibility"): true,
+
 		// Impossible to test proto3 optional in a proto2 file.
 		descPkg.Append("FieldDescriptorProto.proto3_optional"): true,
 
diff --git a/internal/filedesc/editions.go b/internal/filedesc/editions.go
index b08b718..a0aad27 100644
--- a/internal/filedesc/editions.go
+++ b/internal/filedesc/editions.go
@@ -72,6 +72,9 @@
 			case genid.FeatureSet_EnforceNamingStyle_field_number:
 				// EnforceNamingStyle is enforced in protoc, languages other than C++
 				// are not supposed to do anything with this feature.
+			case genid.FeatureSet_DefaultSymbolVisibility_field_number:
+				// DefaultSymbolVisibility is enforced in protoc, runtimes should not
+				// inspect this value.
 			default:
 				panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num))
 			}
diff --git a/internal/genid/descriptor_gen.go b/internal/genid/descriptor_gen.go
index 3952478..950a6a3 100644
--- a/internal/genid/descriptor_gen.go
+++ b/internal/genid/descriptor_gen.go
@@ -34,6 +34,19 @@
 	Edition_EDITION_MAX_enum_value             = 2147483647
 )
 
+// Full and short names for google.protobuf.SymbolVisibility.
+const (
+	SymbolVisibility_enum_fullname = "google.protobuf.SymbolVisibility"
+	SymbolVisibility_enum_name     = "SymbolVisibility"
+)
+
+// Enum values for google.protobuf.SymbolVisibility.
+const (
+	SymbolVisibility_VISIBILITY_UNSET_enum_value  = 0
+	SymbolVisibility_VISIBILITY_LOCAL_enum_value  = 1
+	SymbolVisibility_VISIBILITY_EXPORT_enum_value = 2
+)
+
 // Names for google.protobuf.FileDescriptorSet.
 const (
 	FileDescriptorSet_message_name     protoreflect.Name     = "FileDescriptorSet"
@@ -65,6 +78,7 @@
 	FileDescriptorProto_Dependency_field_name       protoreflect.Name = "dependency"
 	FileDescriptorProto_PublicDependency_field_name protoreflect.Name = "public_dependency"
 	FileDescriptorProto_WeakDependency_field_name   protoreflect.Name = "weak_dependency"
+	FileDescriptorProto_OptionDependency_field_name protoreflect.Name = "option_dependency"
 	FileDescriptorProto_MessageType_field_name      protoreflect.Name = "message_type"
 	FileDescriptorProto_EnumType_field_name         protoreflect.Name = "enum_type"
 	FileDescriptorProto_Service_field_name          protoreflect.Name = "service"
@@ -79,6 +93,7 @@
 	FileDescriptorProto_Dependency_field_fullname       protoreflect.FullName = "google.protobuf.FileDescriptorProto.dependency"
 	FileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.public_dependency"
 	FileDescriptorProto_WeakDependency_field_fullname   protoreflect.FullName = "google.protobuf.FileDescriptorProto.weak_dependency"
+	FileDescriptorProto_OptionDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.option_dependency"
 	FileDescriptorProto_MessageType_field_fullname      protoreflect.FullName = "google.protobuf.FileDescriptorProto.message_type"
 	FileDescriptorProto_EnumType_field_fullname         protoreflect.FullName = "google.protobuf.FileDescriptorProto.enum_type"
 	FileDescriptorProto_Service_field_fullname          protoreflect.FullName = "google.protobuf.FileDescriptorProto.service"
@@ -96,6 +111,7 @@
 	FileDescriptorProto_Dependency_field_number       protoreflect.FieldNumber = 3
 	FileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10
 	FileDescriptorProto_WeakDependency_field_number   protoreflect.FieldNumber = 11
+	FileDescriptorProto_OptionDependency_field_number protoreflect.FieldNumber = 15
 	FileDescriptorProto_MessageType_field_number      protoreflect.FieldNumber = 4
 	FileDescriptorProto_EnumType_field_number         protoreflect.FieldNumber = 5
 	FileDescriptorProto_Service_field_number          protoreflect.FieldNumber = 6
@@ -124,6 +140,7 @@
 	DescriptorProto_Options_field_name        protoreflect.Name = "options"
 	DescriptorProto_ReservedRange_field_name  protoreflect.Name = "reserved_range"
 	DescriptorProto_ReservedName_field_name   protoreflect.Name = "reserved_name"
+	DescriptorProto_Visibility_field_name     protoreflect.Name = "visibility"
 
 	DescriptorProto_Name_field_fullname           protoreflect.FullName = "google.protobuf.DescriptorProto.name"
 	DescriptorProto_Field_field_fullname          protoreflect.FullName = "google.protobuf.DescriptorProto.field"
@@ -135,6 +152,7 @@
 	DescriptorProto_Options_field_fullname        protoreflect.FullName = "google.protobuf.DescriptorProto.options"
 	DescriptorProto_ReservedRange_field_fullname  protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_range"
 	DescriptorProto_ReservedName_field_fullname   protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_name"
+	DescriptorProto_Visibility_field_fullname     protoreflect.FullName = "google.protobuf.DescriptorProto.visibility"
 )
 
 // Field numbers for google.protobuf.DescriptorProto.
@@ -149,6 +167,7 @@
 	DescriptorProto_Options_field_number        protoreflect.FieldNumber = 7
 	DescriptorProto_ReservedRange_field_number  protoreflect.FieldNumber = 9
 	DescriptorProto_ReservedName_field_number   protoreflect.FieldNumber = 10
+	DescriptorProto_Visibility_field_number     protoreflect.FieldNumber = 11
 )
 
 // Names for google.protobuf.DescriptorProto.ExtensionRange.
@@ -388,12 +407,14 @@
 	EnumDescriptorProto_Options_field_name       protoreflect.Name = "options"
 	EnumDescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range"
 	EnumDescriptorProto_ReservedName_field_name  protoreflect.Name = "reserved_name"
+	EnumDescriptorProto_Visibility_field_name    protoreflect.Name = "visibility"
 
 	EnumDescriptorProto_Name_field_fullname          protoreflect.FullName = "google.protobuf.EnumDescriptorProto.name"
 	EnumDescriptorProto_Value_field_fullname         protoreflect.FullName = "google.protobuf.EnumDescriptorProto.value"
 	EnumDescriptorProto_Options_field_fullname       protoreflect.FullName = "google.protobuf.EnumDescriptorProto.options"
 	EnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_range"
 	EnumDescriptorProto_ReservedName_field_fullname  protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_name"
+	EnumDescriptorProto_Visibility_field_fullname    protoreflect.FullName = "google.protobuf.EnumDescriptorProto.visibility"
 )
 
 // Field numbers for google.protobuf.EnumDescriptorProto.
@@ -403,6 +424,7 @@
 	EnumDescriptorProto_Options_field_number       protoreflect.FieldNumber = 3
 	EnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4
 	EnumDescriptorProto_ReservedName_field_number  protoreflect.FieldNumber = 5
+	EnumDescriptorProto_Visibility_field_number    protoreflect.FieldNumber = 6
 )
 
 // Names for google.protobuf.EnumDescriptorProto.EnumReservedRange.
@@ -1008,32 +1030,35 @@
 
 // Field names for google.protobuf.FeatureSet.
 const (
-	FeatureSet_FieldPresence_field_name         protoreflect.Name = "field_presence"
-	FeatureSet_EnumType_field_name              protoreflect.Name = "enum_type"
-	FeatureSet_RepeatedFieldEncoding_field_name protoreflect.Name = "repeated_field_encoding"
-	FeatureSet_Utf8Validation_field_name        protoreflect.Name = "utf8_validation"
-	FeatureSet_MessageEncoding_field_name       protoreflect.Name = "message_encoding"
-	FeatureSet_JsonFormat_field_name            protoreflect.Name = "json_format"
-	FeatureSet_EnforceNamingStyle_field_name    protoreflect.Name = "enforce_naming_style"
+	FeatureSet_FieldPresence_field_name           protoreflect.Name = "field_presence"
+	FeatureSet_EnumType_field_name                protoreflect.Name = "enum_type"
+	FeatureSet_RepeatedFieldEncoding_field_name   protoreflect.Name = "repeated_field_encoding"
+	FeatureSet_Utf8Validation_field_name          protoreflect.Name = "utf8_validation"
+	FeatureSet_MessageEncoding_field_name         protoreflect.Name = "message_encoding"
+	FeatureSet_JsonFormat_field_name              protoreflect.Name = "json_format"
+	FeatureSet_EnforceNamingStyle_field_name      protoreflect.Name = "enforce_naming_style"
+	FeatureSet_DefaultSymbolVisibility_field_name protoreflect.Name = "default_symbol_visibility"
 
-	FeatureSet_FieldPresence_field_fullname         protoreflect.FullName = "google.protobuf.FeatureSet.field_presence"
-	FeatureSet_EnumType_field_fullname              protoreflect.FullName = "google.protobuf.FeatureSet.enum_type"
-	FeatureSet_RepeatedFieldEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding"
-	FeatureSet_Utf8Validation_field_fullname        protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation"
-	FeatureSet_MessageEncoding_field_fullname       protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding"
-	FeatureSet_JsonFormat_field_fullname            protoreflect.FullName = "google.protobuf.FeatureSet.json_format"
-	FeatureSet_EnforceNamingStyle_field_fullname    protoreflect.FullName = "google.protobuf.FeatureSet.enforce_naming_style"
+	FeatureSet_FieldPresence_field_fullname           protoreflect.FullName = "google.protobuf.FeatureSet.field_presence"
+	FeatureSet_EnumType_field_fullname                protoreflect.FullName = "google.protobuf.FeatureSet.enum_type"
+	FeatureSet_RepeatedFieldEncoding_field_fullname   protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding"
+	FeatureSet_Utf8Validation_field_fullname          protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation"
+	FeatureSet_MessageEncoding_field_fullname         protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding"
+	FeatureSet_JsonFormat_field_fullname              protoreflect.FullName = "google.protobuf.FeatureSet.json_format"
+	FeatureSet_EnforceNamingStyle_field_fullname      protoreflect.FullName = "google.protobuf.FeatureSet.enforce_naming_style"
+	FeatureSet_DefaultSymbolVisibility_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.default_symbol_visibility"
 )
 
 // Field numbers for google.protobuf.FeatureSet.
 const (
-	FeatureSet_FieldPresence_field_number         protoreflect.FieldNumber = 1
-	FeatureSet_EnumType_field_number              protoreflect.FieldNumber = 2
-	FeatureSet_RepeatedFieldEncoding_field_number protoreflect.FieldNumber = 3
-	FeatureSet_Utf8Validation_field_number        protoreflect.FieldNumber = 4
-	FeatureSet_MessageEncoding_field_number       protoreflect.FieldNumber = 5
-	FeatureSet_JsonFormat_field_number            protoreflect.FieldNumber = 6
-	FeatureSet_EnforceNamingStyle_field_number    protoreflect.FieldNumber = 7
+	FeatureSet_FieldPresence_field_number           protoreflect.FieldNumber = 1
+	FeatureSet_EnumType_field_number                protoreflect.FieldNumber = 2
+	FeatureSet_RepeatedFieldEncoding_field_number   protoreflect.FieldNumber = 3
+	FeatureSet_Utf8Validation_field_number          protoreflect.FieldNumber = 4
+	FeatureSet_MessageEncoding_field_number         protoreflect.FieldNumber = 5
+	FeatureSet_JsonFormat_field_number              protoreflect.FieldNumber = 6
+	FeatureSet_EnforceNamingStyle_field_number      protoreflect.FieldNumber = 7
+	FeatureSet_DefaultSymbolVisibility_field_number protoreflect.FieldNumber = 8
 )
 
 // Full and short names for google.protobuf.FeatureSet.FieldPresence.
@@ -1128,6 +1153,27 @@
 	FeatureSet_STYLE_LEGACY_enum_value                 = 2
 )
 
+// Names for google.protobuf.FeatureSet.VisibilityFeature.
+const (
+	FeatureSet_VisibilityFeature_message_name     protoreflect.Name     = "VisibilityFeature"
+	FeatureSet_VisibilityFeature_message_fullname protoreflect.FullName = "google.protobuf.FeatureSet.VisibilityFeature"
+)
+
+// Full and short names for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.
+const (
+	FeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_fullname = "google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility"
+	FeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_name     = "DefaultSymbolVisibility"
+)
+
+// Enum values for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.
+const (
+	FeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN_enum_value = 0
+	FeatureSet_VisibilityFeature_EXPORT_ALL_enum_value                        = 1
+	FeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL_enum_value                  = 2
+	FeatureSet_VisibilityFeature_LOCAL_ALL_enum_value                         = 3
+	FeatureSet_VisibilityFeature_STRICT_enum_value                            = 4
+)
+
 // Names for google.protobuf.FeatureSetDefaults.
 const (
 	FeatureSetDefaults_message_name     protoreflect.Name     = "FeatureSetDefaults"
diff --git a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
index 98929fb..f7b4f62 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
@@ -1,3 +1,4 @@
+// clang-format off
 // Protocol Buffers - Google's data interchange format
 // Copyright 2008 Google Inc.  All rights reserved.
 //
@@ -318,8 +319,10 @@
 	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
 	MapSfixed32Sfixed32     map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
 	MapSfixed64Sfixed64     map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Bool            map[int32]bool                               `protobuf:"bytes,104,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
 	MapInt32Double          map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32NestedMessage   map[int32]*TestAllTypesProto2_NestedMessage  `protobuf:"bytes,103,rep,name=map_int32_nested_message,json=mapInt32NestedMessage" json:"map_int32_nested_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapStringString         map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringBytes          map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
@@ -359,27 +362,28 @@
 	DefaultBytes    []byte   `protobuf:"bytes,255,opt,name=default_bytes,json=defaultBytes,def=joshua" json:"default_bytes,omitempty"`
 	// Test field-name-to-JSON-name convention.
 	// (protobuf says names can be any valid C/C++ identifier.)
-	Fieldname1      *int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
-	FieldName2      *int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
-	XFieldName3     *int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
-	Field_Name4_    *int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
-	Field0Name5     *int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
-	Field_0Name6    *int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
-	FieldName7      *int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
-	FieldName8      *int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
-	Field_Name9     *int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
-	Field_Name10    *int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
-	FIELD_NAME11    *int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
-	FIELDName12     *int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
-	XFieldName13    *int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
-	X_FieldName14   *int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
-	Field_Name15    *int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
-	Field__Name16   *int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
-	FieldName17__   *int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
-	FieldName18__   *int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
-	extensionFields protoimpl.ExtensionFields
-	unknownFields   protoimpl.UnknownFields
-	sizeCache       protoimpl.SizeCache
+	Fieldname1        *int32                                `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
+	FieldName2        *int32                                `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
+	XFieldName3       *int32                                `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
+	Field_Name4_      *int32                                `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
+	Field0Name5       *int32                                `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
+	Field_0Name6      *int32                                `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
+	FieldName7        *int32                                `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
+	FieldName8        *int32                                `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
+	Field_Name9       *int32                                `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
+	Field_Name10      *int32                                `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
+	FIELD_NAME11      *int32                                `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
+	FIELDName12       *int32                                `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
+	XFieldName13      *int32                                `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
+	X_FieldName14     *int32                                `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
+	Field_Name15      *int32                                `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
+	Field__Name16     *int32                                `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
+	FieldName17__     *int32                                `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
+	FieldName18__     *int32                                `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
+	MessageSetCorrect *TestAllTypesProto2_MessageSetCorrect `protobuf:"bytes,500,opt,name=message_set_correct,json=messageSetCorrect" json:"message_set_correct,omitempty"`
+	extensionFields   protoimpl.ExtensionFields
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
 // Default values for TestAllTypesProto2 fields.
@@ -1002,6 +1006,13 @@
 	return nil
 }
 
+func (x *TestAllTypesProto2) GetMapInt32Bool() map[int32]bool {
+	if x != nil {
+		return x.MapInt32Bool
+	}
+	return nil
+}
+
 func (x *TestAllTypesProto2) GetMapInt32Float() map[int32]float32 {
 	if x != nil {
 		return x.MapInt32Float
@@ -1016,6 +1027,13 @@
 	return nil
 }
 
+func (x *TestAllTypesProto2) GetMapInt32NestedMessage() map[int32]*TestAllTypesProto2_NestedMessage {
+	if x != nil {
+		return x.MapInt32NestedMessage
+	}
+	return nil
+}
+
 func (x *TestAllTypesProto2) GetMapBoolBool() map[bool]bool {
 	if x != nil {
 		return x.MapBoolBool
@@ -1398,6 +1416,13 @@
 	return 0
 }
 
+func (x *TestAllTypesProto2) GetMessageSetCorrect() *TestAllTypesProto2_MessageSetCorrect {
+	if x != nil {
+		return x.MessageSetCorrect
+	}
+	return nil
+}
+
 type isTestAllTypesProto2_OneofField interface {
 	isTestAllTypesProto2_OneofField()
 }
@@ -2379,7 +2404,7 @@
 
 func (x *TestAllTypesProto2_Data) Reset() {
 	*x = TestAllTypesProto2_Data{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[30]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[32]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2391,7 +2416,7 @@
 func (*TestAllTypesProto2_Data) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_Data) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[30]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[32]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2404,7 +2429,7 @@
 
 // Deprecated: Use TestAllTypesProto2_Data.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_Data) Descriptor() ([]byte, []int) {
-	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 20}
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 22}
 }
 
 func (x *TestAllTypesProto2_Data) GetGroupInt32() int32 {
@@ -2431,7 +2456,7 @@
 
 func (x *TestAllTypesProto2_MultiWordGroupField) Reset() {
 	*x = TestAllTypesProto2_MultiWordGroupField{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[31]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[33]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2443,7 +2468,7 @@
 func (*TestAllTypesProto2_MultiWordGroupField) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MultiWordGroupField) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[31]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[33]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2456,7 +2481,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MultiWordGroupField.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MultiWordGroupField) Descriptor() ([]byte, []int) {
-	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 21}
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 23}
 }
 
 func (x *TestAllTypesProto2_MultiWordGroupField) GetGroupInt32() int32 {
@@ -2483,7 +2508,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrect) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrect{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[32]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[34]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2495,7 +2520,7 @@
 func (*TestAllTypesProto2_MessageSetCorrect) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrect) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[32]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[34]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2508,7 +2533,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrect.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrect) Descriptor() ([]byte, []int) {
-	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 22}
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 24}
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
@@ -2520,7 +2545,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrectExtension1{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[33]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[35]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2532,7 +2557,7 @@
 func (*TestAllTypesProto2_MessageSetCorrectExtension1) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[33]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[35]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2545,7 +2570,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension1.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrectExtension1) Descriptor() ([]byte, []int) {
-	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 23}
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 25}
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) GetStr() string {
@@ -2564,7 +2589,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrectExtension2{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[34]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[36]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2576,7 +2601,7 @@
 func (*TestAllTypesProto2_MessageSetCorrectExtension2) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[34]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[36]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2589,7 +2614,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension2.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrectExtension2) Descriptor() ([]byte, []int) {
-	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 24}
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 26}
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) GetI() int32 {
@@ -2599,6 +2624,90 @@
 	return 0
 }
 
+type TestAllTypesProto2_ExtensionWithOneof struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to OneofField:
+	//
+	//	*TestAllTypesProto2_ExtensionWithOneof_A
+	//	*TestAllTypesProto2_ExtensionWithOneof_B
+	OneofField    isTestAllTypesProto2_ExtensionWithOneof_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) Reset() {
+	*x = TestAllTypesProto2_ExtensionWithOneof{}
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof) ProtoMessage() {}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) ProtoReflect() protoreflect.Message {
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TestAllTypesProto2_ExtensionWithOneof.ProtoReflect.Descriptor instead.
+func (*TestAllTypesProto2_ExtensionWithOneof) Descriptor() ([]byte, []int) {
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP(), []int{0, 27}
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetOneofField() isTestAllTypesProto2_ExtensionWithOneof_OneofField {
+	if x != nil {
+		return x.OneofField
+	}
+	return nil
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetA() int32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_ExtensionWithOneof_A); ok {
+			return x.A
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetB() int32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_ExtensionWithOneof_B); ok {
+			return x.B
+		}
+	}
+	return 0
+}
+
+type isTestAllTypesProto2_ExtensionWithOneof_OneofField interface {
+	isTestAllTypesProto2_ExtensionWithOneof_OneofField()
+}
+
+type TestAllTypesProto2_ExtensionWithOneof_A struct {
+	A int32 `protobuf:"varint,1,opt,name=a,oneof"`
+}
+
+type TestAllTypesProto2_ExtensionWithOneof_B struct {
+	B int32 `protobuf:"varint,2,opt,name=b,oneof"`
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof_A) isTestAllTypesProto2_ExtensionWithOneof_OneofField() {
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof_B) isTestAllTypesProto2_ExtensionWithOneof_OneofField() {
+}
+
 type UnknownToTestAllTypes_OptionalGroup struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
@@ -2608,7 +2717,7 @@
 
 func (x *UnknownToTestAllTypes_OptionalGroup) Reset() {
 	*x = UnknownToTestAllTypes_OptionalGroup{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[35]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[38]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2620,7 +2729,7 @@
 func (*UnknownToTestAllTypes_OptionalGroup) ProtoMessage() {}
 
 func (x *UnknownToTestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[35]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[38]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2654,7 +2763,7 @@
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) Reset() {
 	*x = TestAllRequiredTypesProto2_NestedMessage{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[36]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[39]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2666,7 +2775,7 @@
 func (*TestAllRequiredTypesProto2_NestedMessage) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[36]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[39]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2714,7 +2823,7 @@
 
 func (x *TestAllRequiredTypesProto2_Data) Reset() {
 	*x = TestAllRequiredTypesProto2_Data{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[37]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[40]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2726,7 +2835,7 @@
 func (*TestAllRequiredTypesProto2_Data) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_Data) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[37]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[40]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2766,7 +2875,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrect{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[38]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[41]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2778,7 +2887,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrect) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[38]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[41]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2803,7 +2912,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrectExtension1{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[39]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[42]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2815,7 +2924,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrectExtension1) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[39]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[42]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2847,7 +2956,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrectExtension2{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[40]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[43]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2859,7 +2968,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrectExtension2) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[40]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[43]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2890,7 +2999,7 @@
 
 func (x *TestLargeOneof_A1) Reset() {
 	*x = TestLargeOneof_A1{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[41]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[44]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2902,7 +3011,7 @@
 func (*TestLargeOneof_A1) ProtoMessage() {}
 
 func (x *TestLargeOneof_A1) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[41]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[44]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2926,7 +3035,7 @@
 
 func (x *TestLargeOneof_A2) Reset() {
 	*x = TestLargeOneof_A2{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[42]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[45]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2938,7 +3047,7 @@
 func (*TestLargeOneof_A2) ProtoMessage() {}
 
 func (x *TestLargeOneof_A2) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[42]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[45]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2962,7 +3071,7 @@
 
 func (x *TestLargeOneof_A3) Reset() {
 	*x = TestLargeOneof_A3{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[43]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[46]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2974,7 +3083,7 @@
 func (*TestLargeOneof_A3) ProtoMessage() {}
 
 func (x *TestLargeOneof_A3) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[43]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[46]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2998,7 +3107,7 @@
 
 func (x *TestLargeOneof_A4) Reset() {
 	*x = TestLargeOneof_A4{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[44]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[47]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3010,7 +3119,7 @@
 func (*TestLargeOneof_A4) ProtoMessage() {}
 
 func (x *TestLargeOneof_A4) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[44]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[47]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3034,7 +3143,7 @@
 
 func (x *TestLargeOneof_A5) Reset() {
 	*x = TestLargeOneof_A5{}
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[45]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[48]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3046,7 +3155,7 @@
 func (*TestLargeOneof_A5) ProtoMessage() {}
 
 func (x *TestLargeOneof_A5) ProtoReflect() protoreflect.Message {
-	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[45]
+	mi := &file_editions_golden_test_messages_proto2_editions_proto_msgTypes[48]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3096,6 +3205,14 @@
 		Filename:      "editions/golden/test_messages_proto2_editions.proto",
 	},
 	{
+		ExtendedType:  (*TestAllTypesProto2_MessageSetCorrect)(nil),
+		ExtensionType: (*TestAllTypesProto2_ExtensionWithOneof)(nil),
+		Field:         123456789,
+		Name:          "protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof",
+		Tag:           "bytes,123456789,opt,name=extension_with_oneof",
+		Filename:      "editions/golden/test_messages_proto2_editions.proto",
+	},
+	{
 		ExtendedType:  (*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),
 		ExtensionType: (*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil),
 		Field:         1547769,
@@ -3127,21 +3244,23 @@
 	E_TestAllTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[2]
 	// optional protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2 message_set_extension = 4135312;
 	E_TestAllTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[3]
+	// optional protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof extension_with_oneof = 123456789;
+	E_TestAllTypesProto2_ExtensionWithOneof_ExtensionWithOneof = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[4]
 )
 
 // Extension fields to TestAllRequiredTypesProto2_MessageSetCorrect.
 var (
 	// optional protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1 message_set_extension = 1547769;
-	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[4]
+	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[5]
 	// optional protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2 message_set_extension = 4135312;
-	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[5]
+	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_editions_golden_test_messages_proto2_editions_proto_extTypes[6]
 )
 
 var File_editions_golden_test_messages_proto2_editions_proto protoreflect.FileDescriptor
 
 const file_editions_golden_test_messages_proto2_editions_proto_rawDesc = "" +
 	"\n" +
-	"3editions/golden/test_messages_proto2_editions.proto\x12&protobuf_test_messages.editions.proto2\"\x9dV\n" +
+	"3editions/golden/test_messages_proto2_editions.proto\x12&protobuf_test_messages.editions.proto2\"\x90]\n" +
 	"\x12TestAllTypesProto2\x12%\n" +
 	"\x0eoptional_int32\x18\x01 \x01(\x05R\roptionalInt32\x12%\n" +
 	"\x0eoptional_int64\x18\x02 \x01(\x03R\roptionalInt64\x12'\n" +
@@ -3225,9 +3344,11 @@
 	"\x13map_fixed32_fixed32\x18> \x03(\v2Q.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapFixed32Fixed32EntryR\x11mapFixed32Fixed32\x12\x81\x01\n" +
 	"\x13map_fixed64_fixed64\x18? \x03(\v2Q.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapFixed64Fixed64EntryR\x11mapFixed64Fixed64\x12\x87\x01\n" +
 	"\x15map_sfixed32_sfixed32\x18@ \x03(\v2S.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed32Sfixed32EntryR\x13mapSfixed32Sfixed32\x12\x87\x01\n" +
-	"\x15map_sfixed64_sfixed64\x18A \x03(\v2S.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12u\n" +
+	"\x15map_sfixed64_sfixed64\x18A \x03(\v2S.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12r\n" +
+	"\x0emap_int32_bool\x18h \x03(\v2L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32BoolEntryR\fmapInt32Bool\x12u\n" +
 	"\x0fmap_int32_float\x18B \x03(\v2M.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32FloatEntryR\rmapInt32Float\x12x\n" +
-	"\x10map_int32_double\x18C \x03(\v2N.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntryR\x0emapInt32Double\x12o\n" +
+	"\x10map_int32_double\x18C \x03(\v2N.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntryR\x0emapInt32Double\x12\x8e\x01\n" +
+	"\x18map_int32_nested_message\x18g \x03(\v2U.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32NestedMessageEntryR\x15mapInt32NestedMessage\x12o\n" +
 	"\rmap_bool_bool\x18D \x03(\v2K.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapBoolBoolEntryR\vmapBoolBool\x12{\n" +
 	"\x11map_string_string\x18E \x03(\v2O.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringStringEntryR\x0fmapStringString\x12x\n" +
 	"\x10map_string_bytes\x18F \x03(\v2N.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringBytesEntryR\x0emapStringBytes\x12\x91\x01\n" +
@@ -3297,7 +3418,8 @@
 	"\rfield__name15\x18\x9f\x03 \x01(\x05R\vfieldName15\x12#\n" +
 	"\rfield__Name16\x18\xa0\x03 \x01(\x05R\vfieldName16\x12$\n" +
 	"\x0efield_name17__\x18\xa1\x03 \x01(\x05R\vfieldName17\x12$\n" +
-	"\x0eField_name18__\x18\xa2\x03 \x01(\x05R\vFieldName18\x1a{\n" +
+	"\x0eField_name18__\x18\xa2\x03 \x01(\x05R\vFieldName18\x12}\n" +
+	"\x13message_set_correct\x18\xf4\x03 \x01(\v2L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectR\x11messageSetCorrect\x1a{\n" +
 	"\rNestedMessage\x12\f\n" +
 	"\x01a\x18\x01 \x01(\x05R\x01a\x12\\\n" +
 	"\vcorecursive\x18\x02 \x01(\v2:.protobuf_test_messages.editions.proto2.TestAllTypesProto2R\vcorecursive\x1a@\n" +
@@ -3330,13 +3452,19 @@
 	"\x05value\x18\x02 \x01(\x0fR\x05value:\x028\x01\x1aF\n" +
 	"\x18MapSfixed64Sfixed64Entry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x10R\x03key\x12\x14\n" +
-	"\x05value\x18\x02 \x01(\x10R\x05value:\x028\x01\x1a@\n" +
+	"\x05value\x18\x02 \x01(\x10R\x05value:\x028\x01\x1a?\n" +
+	"\x11MapInt32BoolEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1a@\n" +
 	"\x12MapInt32FloatEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
 	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\x1aA\n" +
 	"\x13MapInt32DoubleEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
-	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a>\n" +
+	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a\x92\x01\n" +
+	"\x1aMapInt32NestedMessageEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\x05R\x03key\x12^\n" +
+	"\x05value\x18\x02 \x01(\v2H.protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessageR\x05value:\x028\x01\x1a>\n" +
 	"\x10MapBoolBoolEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\bR\x03key\x12\x14\n" +
 	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1aB\n" +
@@ -3372,7 +3500,12 @@
 	"\x15message_set_extension\x12L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect\x18\xf9\xbb^ \x01(\v2V.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1R\x13messageSetExtension\x1a\x89\x02\n" +
 	"\x1bMessageSetCorrectExtension2\x12\f\n" +
 	"\x01i\x18\t \x01(\x05R\x01i2\xdb\x01\n" +
-	"\x15message_set_extension\x12L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x90\xb3\xfc\x01 \x01(\v2V.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2R\x13messageSetExtension\"9\n" +
+	"\x15message_set_extension\x12L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x90\xb3\xfc\x01 \x01(\v2V.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2R\x13messageSetExtension\x1a\x96\x02\n" +
+	"\x12ExtensionWithOneof\x12\x0e\n" +
+	"\x01a\x18\x01 \x01(\x05H\x00R\x01a\x12\x0e\n" +
+	"\x01b\x18\x02 \x01(\x05H\x00R\x01b2\xd0\x01\n" +
+	"\x14extension_with_oneof\x12L.protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x95\x9a\xef: \x01(\v2M.protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneofR\x12extensionWithOneofB\r\n" +
+	"\voneof_field\"9\n" +
 	"\n" +
 	"NestedEnum\x12\a\n" +
 	"\x03FOO\x10\x00\x12\a\n" +
@@ -3510,7 +3643,7 @@
 }
 
 var file_editions_golden_test_messages_proto2_editions_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_editions_golden_test_messages_proto2_editions_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
+var file_editions_golden_test_messages_proto2_editions_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
 var file_editions_golden_test_messages_proto2_editions_proto_goTypes = []any{
 	(ForeignEnumProto2)(0),                     // 0: protobuf_test_messages.editions.proto2.ForeignEnumProto2
 	(TestAllTypesProto2_NestedEnum)(0),         // 1: protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedEnum
@@ -3537,31 +3670,34 @@
 	nil,                                        // 22: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
 	nil,                                        // 23: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
 	nil,                                        // 24: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	nil,                                        // 25: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	nil,                                        // 26: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	nil,                                        // 27: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	nil,                                        // 28: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringStringEntry
-	nil,                                        // 29: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringBytesEntry
-	nil,                                        // 30: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	nil,                                        // 31: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	nil,                                        // 32: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	nil,                                        // 33: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	(*TestAllTypesProto2_Data)(nil),            // 34: protobuf_test_messages.editions.proto2.TestAllTypesProto2.Data
-	(*TestAllTypesProto2_MultiWordGroupField)(nil),                 // 35: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MultiWordGroupField
-	(*TestAllTypesProto2_MessageSetCorrect)(nil),                   // 36: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
-	(*TestAllTypesProto2_MessageSetCorrectExtension1)(nil),         // 37: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	(*TestAllTypesProto2_MessageSetCorrectExtension2)(nil),         // 38: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	(*UnknownToTestAllTypes_OptionalGroup)(nil),                    // 39: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.OptionalGroup
-	(*TestAllRequiredTypesProto2_NestedMessage)(nil),               // 40: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage
-	(*TestAllRequiredTypesProto2_Data)(nil),                        // 41: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.Data
-	(*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),           // 42: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil), // 43: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
-	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension2)(nil), // 44: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
-	(*TestLargeOneof_A1)(nil),                                      // 45: protobuf_test_messages.editions.proto2.TestLargeOneof.A1
-	(*TestLargeOneof_A2)(nil),                                      // 46: protobuf_test_messages.editions.proto2.TestLargeOneof.A2
-	(*TestLargeOneof_A3)(nil),                                      // 47: protobuf_test_messages.editions.proto2.TestLargeOneof.A3
-	(*TestLargeOneof_A4)(nil),                                      // 48: protobuf_test_messages.editions.proto2.TestLargeOneof.A4
-	(*TestLargeOneof_A5)(nil),                                      // 49: protobuf_test_messages.editions.proto2.TestLargeOneof.A5
+	nil,                                        // 25: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32BoolEntry
+	nil,                                        // 26: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32FloatEntry
+	nil,                                        // 27: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntry
+	nil,                                        // 28: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry
+	nil,                                        // 29: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapBoolBoolEntry
+	nil,                                        // 30: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringStringEntry
+	nil,                                        // 31: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringBytesEntry
+	nil,                                        // 32: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
+	nil,                                        // 33: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
+	nil,                                        // 34: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
+	nil,                                        // 35: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
+	(*TestAllTypesProto2_Data)(nil),            // 36: protobuf_test_messages.editions.proto2.TestAllTypesProto2.Data
+	(*TestAllTypesProto2_MultiWordGroupField)(nil),                 // 37: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MultiWordGroupField
+	(*TestAllTypesProto2_MessageSetCorrect)(nil),                   // 38: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
+	(*TestAllTypesProto2_MessageSetCorrectExtension1)(nil),         // 39: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
+	(*TestAllTypesProto2_MessageSetCorrectExtension2)(nil),         // 40: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
+	(*TestAllTypesProto2_ExtensionWithOneof)(nil),                  // 41: protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof
+	(*UnknownToTestAllTypes_OptionalGroup)(nil),                    // 42: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.OptionalGroup
+	(*TestAllRequiredTypesProto2_NestedMessage)(nil),               // 43: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage
+	(*TestAllRequiredTypesProto2_Data)(nil),                        // 44: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.Data
+	(*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),           // 45: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil), // 46: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
+	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension2)(nil), // 47: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
+	(*TestLargeOneof_A1)(nil),                                      // 48: protobuf_test_messages.editions.proto2.TestLargeOneof.A1
+	(*TestLargeOneof_A2)(nil),                                      // 49: protobuf_test_messages.editions.proto2.TestLargeOneof.A2
+	(*TestLargeOneof_A3)(nil),                                      // 50: protobuf_test_messages.editions.proto2.TestLargeOneof.A3
+	(*TestLargeOneof_A4)(nil),                                      // 51: protobuf_test_messages.editions.proto2.TestLargeOneof.A4
+	(*TestLargeOneof_A5)(nil),                                      // 52: protobuf_test_messages.editions.proto2.TestLargeOneof.A5
 }
 var file_editions_golden_test_messages_proto2_editions_proto_depIdxs = []int32{
 	14, // 0: protobuf_test_messages.editions.proto2.TestAllTypesProto2.optional_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
@@ -3585,56 +3721,62 @@
 	22, // 18: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_fixed64_fixed64:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
 	23, // 19: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_sfixed32_sfixed32:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
 	24, // 20: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_sfixed64_sfixed64:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	25, // 21: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_float:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	26, // 22: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_double:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	27, // 23: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_bool_bool:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	28, // 24: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_string:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringStringEntry
-	29, // 25: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_bytes:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringBytesEntry
-	30, // 26: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	31, // 27: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_foreign_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	32, // 28: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_nested_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	33, // 29: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_foreign_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	14, // 30: protobuf_test_messages.editions.proto2.TestAllTypesProto2.oneof_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
-	1,  // 31: protobuf_test_messages.editions.proto2.TestAllTypesProto2.oneof_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedEnum
-	34, // 32: protobuf_test_messages.editions.proto2.TestAllTypesProto2.data:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.Data
-	35, // 33: protobuf_test_messages.editions.proto2.TestAllTypesProto2.multiwordgroupfield:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MultiWordGroupField
-	5,  // 34: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.nested_message:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
-	39, // 35: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.optionalgroup:type_name -> protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.OptionalGroup
-	40, // 36: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage
-	5,  // 37: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_foreign_message:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
-	3,  // 38: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_nested_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedEnum
-	0,  // 39: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_foreign_enum:type_name -> protobuf_test_messages.editions.proto2.ForeignEnumProto2
-	12, // 40: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.recursive_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
-	12, // 41: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.optional_recursive_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
-	41, // 42: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.data:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.Data
-	45, // 43: protobuf_test_messages.editions.proto2.TestLargeOneof.a1:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A1
-	46, // 44: protobuf_test_messages.editions.proto2.TestLargeOneof.a2:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A2
-	47, // 45: protobuf_test_messages.editions.proto2.TestLargeOneof.a3:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A3
-	48, // 46: protobuf_test_messages.editions.proto2.TestLargeOneof.a4:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A4
-	49, // 47: protobuf_test_messages.editions.proto2.TestLargeOneof.a5:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A5
-	4,  // 48: protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
-	14, // 49: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
-	5,  // 50: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
-	1,  // 51: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedEnum
-	0,  // 52: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.editions.proto2.ForeignEnumProto2
-	12, // 53: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
-	12, // 54: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage.optional_corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
-	4,  // 55: protobuf_test_messages.editions.proto2.extension_int32:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
-	4,  // 56: protobuf_test_messages.editions.proto2.groupfield:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
-	36, // 57: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
-	36, // 58: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
-	42, // 59: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	42, // 60: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	6,  // 61: protobuf_test_messages.editions.proto2.groupfield:type_name -> protobuf_test_messages.editions.proto2.GroupField
-	37, // 62: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	38, // 63: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	43, // 64: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
-	44, // 65: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
-	66, // [66:66] is the sub-list for method output_type
-	66, // [66:66] is the sub-list for method input_type
-	61, // [61:66] is the sub-list for extension type_name
-	55, // [55:61] is the sub-list for extension extendee
-	0,  // [0:55] is the sub-list for field type_name
+	25, // 21: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_bool:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32BoolEntry
+	26, // 22: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_float:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32FloatEntry
+	27, // 23: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_double:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32DoubleEntry
+	28, // 24: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_int32_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry
+	29, // 25: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_bool_bool:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapBoolBoolEntry
+	30, // 26: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_string:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringStringEntry
+	31, // 27: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_bytes:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringBytesEntry
+	32, // 28: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
+	33, // 29: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_foreign_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
+	34, // 30: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_nested_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
+	35, // 31: protobuf_test_messages.editions.proto2.TestAllTypesProto2.map_string_foreign_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
+	14, // 32: protobuf_test_messages.editions.proto2.TestAllTypesProto2.oneof_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
+	1,  // 33: protobuf_test_messages.editions.proto2.TestAllTypesProto2.oneof_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedEnum
+	36, // 34: protobuf_test_messages.editions.proto2.TestAllTypesProto2.data:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.Data
+	37, // 35: protobuf_test_messages.editions.proto2.TestAllTypesProto2.multiwordgroupfield:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MultiWordGroupField
+	38, // 36: protobuf_test_messages.editions.proto2.TestAllTypesProto2.message_set_correct:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
+	5,  // 37: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.nested_message:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
+	42, // 38: protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.optionalgroup:type_name -> protobuf_test_messages.editions.proto2.UnknownToTestAllTypes.OptionalGroup
+	43, // 39: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_nested_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage
+	5,  // 40: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_foreign_message:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
+	3,  // 41: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_nested_enum:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedEnum
+	0,  // 42: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.required_foreign_enum:type_name -> protobuf_test_messages.editions.proto2.ForeignEnumProto2
+	12, // 43: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.recursive_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
+	12, // 44: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.optional_recursive_message:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
+	44, // 45: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.data:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.Data
+	48, // 46: protobuf_test_messages.editions.proto2.TestLargeOneof.a1:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A1
+	49, // 47: protobuf_test_messages.editions.proto2.TestLargeOneof.a2:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A2
+	50, // 48: protobuf_test_messages.editions.proto2.TestLargeOneof.a3:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A3
+	51, // 49: protobuf_test_messages.editions.proto2.TestLargeOneof.a4:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A4
+	52, // 50: protobuf_test_messages.editions.proto2.TestLargeOneof.a5:type_name -> protobuf_test_messages.editions.proto2.TestLargeOneof.A5
+	4,  // 51: protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
+	14, // 52: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry.value:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
+	14, // 53: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedMessage
+	5,  // 54: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.editions.proto2.ForeignMessageProto2
+	1,  // 55: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.NestedEnum
+	0,  // 56: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.editions.proto2.ForeignEnumProto2
+	12, // 57: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
+	12, // 58: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.NestedMessage.optional_corecursive:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2
+	4,  // 59: protobuf_test_messages.editions.proto2.extension_int32:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
+	4,  // 60: protobuf_test_messages.editions.proto2.groupfield:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2
+	38, // 61: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
+	38, // 62: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
+	38, // 63: protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof:extendee -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrect
+	45, // 64: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	45, // 65: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	6,  // 66: protobuf_test_messages.editions.proto2.groupfield:type_name -> protobuf_test_messages.editions.proto2.GroupField
+	39, // 67: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
+	40, // 68: protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
+	41, // 69: protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof:type_name -> protobuf_test_messages.editions.proto2.TestAllTypesProto2.ExtensionWithOneof
+	46, // 70: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
+	47, // 71: protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.editions.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
+	72, // [72:72] is the sub-list for method output_type
+	72, // [72:72] is the sub-list for method input_type
+	66, // [66:72] is the sub-list for extension type_name
+	59, // [59:66] is the sub-list for extension extendee
+	0,  // [0:59] is the sub-list for field type_name
 }
 
 func init() { file_editions_golden_test_messages_proto2_editions_proto_init() }
@@ -3660,14 +3802,18 @@
 		(*TestLargeOneof_A4_)(nil),
 		(*TestLargeOneof_A5_)(nil),
 	}
+	file_editions_golden_test_messages_proto2_editions_proto_msgTypes[37].OneofWrappers = []any{
+		(*TestAllTypesProto2_ExtensionWithOneof_A)(nil),
+		(*TestAllTypesProto2_ExtensionWithOneof_B)(nil),
+	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_editions_golden_test_messages_proto2_editions_proto_rawDesc), len(file_editions_golden_test_messages_proto2_editions_proto_rawDesc)),
 			NumEnums:      4,
-			NumMessages:   46,
-			NumExtensions: 6,
+			NumMessages:   49,
+			NumExtensions: 7,
 			NumServices:   0,
 		},
 		GoTypes:           file_editions_golden_test_messages_proto2_editions_proto_goTypes,
diff --git a/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go b/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
index d211f56..7191149 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
@@ -1,3 +1,4 @@
+// clang-format off
 // Protocol Buffers - Google's data interchange format
 // Copyright 2008 Google Inc.  All rights reserved.
 //
@@ -245,6 +246,7 @@
 type TestAllTypesProto3 struct {
 	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
+	// test [kotlin] comment
 	OptionalInt32          int32                             `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
 	OptionalInt64          int64                             `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
 	OptionalUint32         uint32                            `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index a16cc5b..367f95f 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -359,8 +359,10 @@
 	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
 	MapSfixed32Sfixed32     map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
 	MapSfixed64Sfixed64     map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Bool            map[int32]bool                               `protobuf:"bytes,104,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
 	MapInt32Double          map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32NestedMessage   map[int32]*TestAllTypesProto2_NestedMessage  `protobuf:"bytes,103,rep,name=map_int32_nested_message,json=mapInt32NestedMessage" json:"map_int32_nested_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapStringString         map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringBytes          map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
@@ -400,27 +402,28 @@
 	DefaultBytes    []byte   `protobuf:"bytes,255,opt,name=default_bytes,json=defaultBytes,def=joshua" json:"default_bytes,omitempty"`
 	// Test field-name-to-JSON-name convention.
 	// (protobuf says names can be any valid C/C++ identifier.)
-	Fieldname1      *int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
-	FieldName2      *int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
-	XFieldName3     *int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
-	Field_Name4_    *int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
-	Field0Name5     *int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
-	Field_0Name6    *int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
-	FieldName7      *int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
-	FieldName8      *int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
-	Field_Name9     *int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
-	Field_Name10    *int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
-	FIELD_NAME11    *int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
-	FIELDName12     *int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
-	XFieldName13    *int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
-	X_FieldName14   *int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
-	Field_Name15    *int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
-	Field__Name16   *int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
-	FieldName17__   *int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
-	FieldName18__   *int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
-	extensionFields protoimpl.ExtensionFields
-	unknownFields   protoimpl.UnknownFields
-	sizeCache       protoimpl.SizeCache
+	Fieldname1        *int32                                `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
+	FieldName2        *int32                                `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
+	XFieldName3       *int32                                `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
+	Field_Name4_      *int32                                `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
+	Field0Name5       *int32                                `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
+	Field_0Name6      *int32                                `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
+	FieldName7        *int32                                `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
+	FieldName8        *int32                                `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
+	Field_Name9       *int32                                `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
+	Field_Name10      *int32                                `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
+	FIELD_NAME11      *int32                                `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
+	FIELDName12       *int32                                `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
+	XFieldName13      *int32                                `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
+	X_FieldName14     *int32                                `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
+	Field_Name15      *int32                                `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
+	Field__Name16     *int32                                `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
+	FieldName17__     *int32                                `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
+	FieldName18__     *int32                                `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
+	MessageSetCorrect *TestAllTypesProto2_MessageSetCorrect `protobuf:"bytes,500,opt,name=message_set_correct,json=messageSetCorrect" json:"message_set_correct,omitempty"`
+	extensionFields   protoimpl.ExtensionFields
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
 // Default values for TestAllTypesProto2 fields.
@@ -1043,6 +1046,13 @@
 	return nil
 }
 
+func (x *TestAllTypesProto2) GetMapInt32Bool() map[int32]bool {
+	if x != nil {
+		return x.MapInt32Bool
+	}
+	return nil
+}
+
 func (x *TestAllTypesProto2) GetMapInt32Float() map[int32]float32 {
 	if x != nil {
 		return x.MapInt32Float
@@ -1057,6 +1067,13 @@
 	return nil
 }
 
+func (x *TestAllTypesProto2) GetMapInt32NestedMessage() map[int32]*TestAllTypesProto2_NestedMessage {
+	if x != nil {
+		return x.MapInt32NestedMessage
+	}
+	return nil
+}
+
 func (x *TestAllTypesProto2) GetMapBoolBool() map[bool]bool {
 	if x != nil {
 		return x.MapBoolBool
@@ -1439,6 +1456,13 @@
 	return 0
 }
 
+func (x *TestAllTypesProto2) GetMessageSetCorrect() *TestAllTypesProto2_MessageSetCorrect {
+	if x != nil {
+		return x.MessageSetCorrect
+	}
+	return nil
+}
+
 type isTestAllTypesProto2_OneofField interface {
 	isTestAllTypesProto2_OneofField()
 }
@@ -2420,7 +2444,7 @@
 
 func (x *TestAllTypesProto2_Data) Reset() {
 	*x = TestAllTypesProto2_Data{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[30]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[32]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2432,7 +2456,7 @@
 func (*TestAllTypesProto2_Data) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_Data) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[30]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[32]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2445,7 +2469,7 @@
 
 // Deprecated: Use TestAllTypesProto2_Data.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_Data) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 20}
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 22}
 }
 
 func (x *TestAllTypesProto2_Data) GetGroupInt32() int32 {
@@ -2472,7 +2496,7 @@
 
 func (x *TestAllTypesProto2_MultiWordGroupField) Reset() {
 	*x = TestAllTypesProto2_MultiWordGroupField{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[31]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[33]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2484,7 +2508,7 @@
 func (*TestAllTypesProto2_MultiWordGroupField) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MultiWordGroupField) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[31]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[33]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2497,7 +2521,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MultiWordGroupField.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MultiWordGroupField) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 21}
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 23}
 }
 
 func (x *TestAllTypesProto2_MultiWordGroupField) GetGroupInt32() int32 {
@@ -2524,7 +2548,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrect) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrect{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[32]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[34]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2536,7 +2560,7 @@
 func (*TestAllTypesProto2_MessageSetCorrect) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrect) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[32]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[34]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2549,7 +2573,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrect.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrect) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 22}
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 24}
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
@@ -2561,7 +2585,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrectExtension1{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[33]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[35]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2573,7 +2597,7 @@
 func (*TestAllTypesProto2_MessageSetCorrectExtension1) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[33]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[35]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2586,7 +2610,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension1.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrectExtension1) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 23}
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 25}
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) GetStr() string {
@@ -2605,7 +2629,7 @@
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) Reset() {
 	*x = TestAllTypesProto2_MessageSetCorrectExtension2{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[34]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[36]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2617,7 +2641,7 @@
 func (*TestAllTypesProto2_MessageSetCorrectExtension2) ProtoMessage() {}
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[34]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[36]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2630,7 +2654,7 @@
 
 // Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension2.ProtoReflect.Descriptor instead.
 func (*TestAllTypesProto2_MessageSetCorrectExtension2) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 24}
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 26}
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) GetI() int32 {
@@ -2640,6 +2664,90 @@
 	return 0
 }
 
+type TestAllTypesProto2_ExtensionWithOneof struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to OneofField:
+	//
+	//	*TestAllTypesProto2_ExtensionWithOneof_A
+	//	*TestAllTypesProto2_ExtensionWithOneof_B
+	OneofField    isTestAllTypesProto2_ExtensionWithOneof_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) Reset() {
+	*x = TestAllTypesProto2_ExtensionWithOneof{}
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof) ProtoMessage() {}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) ProtoReflect() protoreflect.Message {
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TestAllTypesProto2_ExtensionWithOneof.ProtoReflect.Descriptor instead.
+func (*TestAllTypesProto2_ExtensionWithOneof) Descriptor() ([]byte, []int) {
+	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 27}
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetOneofField() isTestAllTypesProto2_ExtensionWithOneof_OneofField {
+	if x != nil {
+		return x.OneofField
+	}
+	return nil
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetA() int32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_ExtensionWithOneof_A); ok {
+			return x.A
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypesProto2_ExtensionWithOneof) GetB() int32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_ExtensionWithOneof_B); ok {
+			return x.B
+		}
+	}
+	return 0
+}
+
+type isTestAllTypesProto2_ExtensionWithOneof_OneofField interface {
+	isTestAllTypesProto2_ExtensionWithOneof_OneofField()
+}
+
+type TestAllTypesProto2_ExtensionWithOneof_A struct {
+	A int32 `protobuf:"varint,1,opt,name=a,oneof"`
+}
+
+type TestAllTypesProto2_ExtensionWithOneof_B struct {
+	B int32 `protobuf:"varint,2,opt,name=b,oneof"`
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof_A) isTestAllTypesProto2_ExtensionWithOneof_OneofField() {
+}
+
+func (*TestAllTypesProto2_ExtensionWithOneof_B) isTestAllTypesProto2_ExtensionWithOneof_OneofField() {
+}
+
 type UnknownToTestAllTypes_OptionalGroup struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
@@ -2649,7 +2757,7 @@
 
 func (x *UnknownToTestAllTypes_OptionalGroup) Reset() {
 	*x = UnknownToTestAllTypes_OptionalGroup{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[35]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[38]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2661,7 +2769,7 @@
 func (*UnknownToTestAllTypes_OptionalGroup) ProtoMessage() {}
 
 func (x *UnknownToTestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[35]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[38]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2695,7 +2803,7 @@
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) Reset() {
 	*x = TestAllRequiredTypesProto2_NestedMessage{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[36]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[39]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2707,7 +2815,7 @@
 func (*TestAllRequiredTypesProto2_NestedMessage) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[36]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[39]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2755,7 +2863,7 @@
 
 func (x *TestAllRequiredTypesProto2_Data) Reset() {
 	*x = TestAllRequiredTypesProto2_Data{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[37]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[40]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2767,7 +2875,7 @@
 func (*TestAllRequiredTypesProto2_Data) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_Data) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[37]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[40]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2807,7 +2915,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrect{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[38]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[41]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2819,7 +2927,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrect) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[38]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[41]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2844,7 +2952,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrectExtension1{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[39]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[42]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2856,7 +2964,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrectExtension1) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[39]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[42]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2888,7 +2996,7 @@
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) Reset() {
 	*x = TestAllRequiredTypesProto2_MessageSetCorrectExtension2{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[40]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[43]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2900,7 +3008,7 @@
 func (*TestAllRequiredTypesProto2_MessageSetCorrectExtension2) ProtoMessage() {}
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[40]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[43]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2931,7 +3039,7 @@
 
 func (x *TestLargeOneof_A1) Reset() {
 	*x = TestLargeOneof_A1{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[41]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[44]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2943,7 +3051,7 @@
 func (*TestLargeOneof_A1) ProtoMessage() {}
 
 func (x *TestLargeOneof_A1) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[41]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[44]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2967,7 +3075,7 @@
 
 func (x *TestLargeOneof_A2) Reset() {
 	*x = TestLargeOneof_A2{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[42]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[45]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2979,7 +3087,7 @@
 func (*TestLargeOneof_A2) ProtoMessage() {}
 
 func (x *TestLargeOneof_A2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[42]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[45]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3003,7 +3111,7 @@
 
 func (x *TestLargeOneof_A3) Reset() {
 	*x = TestLargeOneof_A3{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[43]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[46]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3015,7 +3123,7 @@
 func (*TestLargeOneof_A3) ProtoMessage() {}
 
 func (x *TestLargeOneof_A3) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[43]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[46]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3039,7 +3147,7 @@
 
 func (x *TestLargeOneof_A4) Reset() {
 	*x = TestLargeOneof_A4{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[44]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[47]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3051,7 +3159,7 @@
 func (*TestLargeOneof_A4) ProtoMessage() {}
 
 func (x *TestLargeOneof_A4) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[44]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[47]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3075,7 +3183,7 @@
 
 func (x *TestLargeOneof_A5) Reset() {
 	*x = TestLargeOneof_A5{}
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[45]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[48]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3087,7 +3195,7 @@
 func (*TestLargeOneof_A5) ProtoMessage() {}
 
 func (x *TestLargeOneof_A5) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[45]
+	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[48]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3137,6 +3245,14 @@
 		Filename:      "google/protobuf/test_messages_proto2.proto",
 	},
 	{
+		ExtendedType:  (*TestAllTypesProto2_MessageSetCorrect)(nil),
+		ExtensionType: (*TestAllTypesProto2_ExtensionWithOneof)(nil),
+		Field:         123456789,
+		Name:          "protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof",
+		Tag:           "bytes,123456789,opt,name=extension_with_oneof",
+		Filename:      "google/protobuf/test_messages_proto2.proto",
+	},
+	{
 		ExtendedType:  (*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),
 		ExtensionType: (*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil),
 		Field:         1547769,
@@ -3168,21 +3284,23 @@
 	E_TestAllTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[2]
 	// optional protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2 message_set_extension = 4135312;
 	E_TestAllTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[3]
+	// optional protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof extension_with_oneof = 123456789;
+	E_TestAllTypesProto2_ExtensionWithOneof_ExtensionWithOneof = &file_google_protobuf_test_messages_proto2_proto_extTypes[4]
 )
 
 // Extension fields to TestAllRequiredTypesProto2_MessageSetCorrect.
 var (
 	// optional protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1 message_set_extension = 1547769;
-	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[4]
+	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[5]
 	// optional protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2 message_set_extension = 4135312;
-	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[5]
+	E_TestAllRequiredTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[6]
 )
 
 var File_google_protobuf_test_messages_proto2_proto protoreflect.FileDescriptor
 
 const file_google_protobuf_test_messages_proto2_proto_rawDesc = "" +
 	"\n" +
-	"*google/protobuf/test_messages_proto2.proto\x12\x1dprotobuf_test_messages.proto2\"\x90S\n" +
+	"*google/protobuf/test_messages_proto2.proto\x12\x1dprotobuf_test_messages.proto2\"\xcdY\n" +
 	"\x12TestAllTypesProto2\x12%\n" +
 	"\x0eoptional_int32\x18\x01 \x01(\x05R\roptionalInt32\x12%\n" +
 	"\x0eoptional_int64\x18\x02 \x01(\x03R\roptionalInt64\x12'\n" +
@@ -3266,9 +3384,11 @@
 	"\x13map_fixed32_fixed32\x18> \x03(\v2H.protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed32Fixed32EntryR\x11mapFixed32Fixed32\x12x\n" +
 	"\x13map_fixed64_fixed64\x18? \x03(\v2H.protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed64Fixed64EntryR\x11mapFixed64Fixed64\x12~\n" +
 	"\x15map_sfixed32_sfixed32\x18@ \x03(\v2J.protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed32Sfixed32EntryR\x13mapSfixed32Sfixed32\x12~\n" +
-	"\x15map_sfixed64_sfixed64\x18A \x03(\v2J.protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12l\n" +
+	"\x15map_sfixed64_sfixed64\x18A \x03(\v2J.protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12i\n" +
+	"\x0emap_int32_bool\x18h \x03(\v2C.protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32BoolEntryR\fmapInt32Bool\x12l\n" +
 	"\x0fmap_int32_float\x18B \x03(\v2D.protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntryR\rmapInt32Float\x12o\n" +
-	"\x10map_int32_double\x18C \x03(\v2E.protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntryR\x0emapInt32Double\x12f\n" +
+	"\x10map_int32_double\x18C \x03(\v2E.protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntryR\x0emapInt32Double\x12\x85\x01\n" +
+	"\x18map_int32_nested_message\x18g \x03(\v2L.protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32NestedMessageEntryR\x15mapInt32NestedMessage\x12f\n" +
 	"\rmap_bool_bool\x18D \x03(\v2B.protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntryR\vmapBoolBool\x12r\n" +
 	"\x11map_string_string\x18E \x03(\v2F.protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntryR\x0fmapStringString\x12o\n" +
 	"\x10map_string_bytes\x18F \x03(\v2E.protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntryR\x0emapStringBytes\x12\x88\x01\n" +
@@ -3340,7 +3460,8 @@
 	"\rfield__name15\x18\x9f\x03 \x01(\x05R\vfieldName15\x12#\n" +
 	"\rfield__Name16\x18\xa0\x03 \x01(\x05R\vfieldName16\x12$\n" +
 	"\x0efield_name17__\x18\xa1\x03 \x01(\x05R\vfieldName17\x12$\n" +
-	"\x0eField_name18__\x18\xa2\x03 \x01(\x05R\vFieldName18\x1ar\n" +
+	"\x0eField_name18__\x18\xa2\x03 \x01(\x05R\vFieldName18\x12t\n" +
+	"\x13message_set_correct\x18\xf4\x03 \x01(\v2C.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectR\x11messageSetCorrect\x1ar\n" +
 	"\rNestedMessage\x12\f\n" +
 	"\x01a\x18\x01 \x01(\x05R\x01a\x12S\n" +
 	"\vcorecursive\x18\x02 \x01(\v21.protobuf_test_messages.proto2.TestAllTypesProto2R\vcorecursive\x1a@\n" +
@@ -3373,13 +3494,19 @@
 	"\x05value\x18\x02 \x01(\x0fR\x05value:\x028\x01\x1aF\n" +
 	"\x18MapSfixed64Sfixed64Entry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x10R\x03key\x12\x14\n" +
-	"\x05value\x18\x02 \x01(\x10R\x05value:\x028\x01\x1a@\n" +
+	"\x05value\x18\x02 \x01(\x10R\x05value:\x028\x01\x1a?\n" +
+	"\x11MapInt32BoolEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1a@\n" +
 	"\x12MapInt32FloatEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
 	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\x1aA\n" +
 	"\x13MapInt32DoubleEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
-	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a>\n" +
+	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a\x89\x01\n" +
+	"\x1aMapInt32NestedMessageEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\x05R\x03key\x12U\n" +
+	"\x05value\x18\x02 \x01(\v2?.protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessageR\x05value:\x028\x01\x1a>\n" +
 	"\x10MapBoolBoolEntry\x12\x10\n" +
 	"\x03key\x18\x01 \x01(\bR\x03key\x12\x14\n" +
 	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1aB\n" +
@@ -3415,7 +3542,12 @@
 	"\x15message_set_extension\x12C.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect\x18\xf9\xbb^ \x01(\v2M.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1R\x13messageSetExtension\x1a\xf7\x01\n" +
 	"\x1bMessageSetCorrectExtension2\x12\f\n" +
 	"\x01i\x18\t \x01(\x05R\x01i2\xc9\x01\n" +
-	"\x15message_set_extension\x12C.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x90\xb3\xfc\x01 \x01(\v2M.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2R\x13messageSetExtension\"9\n" +
+	"\x15message_set_extension\x12C.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x90\xb3\xfc\x01 \x01(\v2M.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2R\x13messageSetExtension\x1a\x84\x02\n" +
+	"\x12ExtensionWithOneof\x12\x0e\n" +
+	"\x01a\x18\x01 \x01(\x05H\x00R\x01a\x12\x0e\n" +
+	"\x01b\x18\x02 \x01(\x05H\x00R\x01b2\xbe\x01\n" +
+	"\x14extension_with_oneof\x12C.protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect\x18\x95\x9a\xef: \x01(\v2D.protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneofR\x12extensionWithOneofB\r\n" +
+	"\voneof_field\"9\n" +
 	"\n" +
 	"NestedEnum\x12\a\n" +
 	"\x03FOO\x10\x00\x12\a\n" +
@@ -3556,7 +3688,7 @@
 }
 
 var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
+var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
 var file_google_protobuf_test_messages_proto2_proto_goTypes = []any{
 	(ForeignEnumProto2)(0),                     // 0: protobuf_test_messages.proto2.ForeignEnumProto2
 	(TestAllTypesProto2_NestedEnum)(0),         // 1: protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
@@ -3583,31 +3715,34 @@
 	nil,                                        // 22: protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
 	nil,                                        // 23: protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
 	nil,                                        // 24: protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	nil,                                        // 25: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	nil,                                        // 26: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	nil,                                        // 27: protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	nil,                                        // 28: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
-	nil,                                        // 29: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
-	nil,                                        // 30: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	nil,                                        // 31: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	nil,                                        // 32: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	nil,                                        // 33: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	(*TestAllTypesProto2_Data)(nil),            // 34: protobuf_test_messages.proto2.TestAllTypesProto2.Data
-	(*TestAllTypesProto2_MultiWordGroupField)(nil),                 // 35: protobuf_test_messages.proto2.TestAllTypesProto2.MultiWordGroupField
-	(*TestAllTypesProto2_MessageSetCorrect)(nil),                   // 36: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	(*TestAllTypesProto2_MessageSetCorrectExtension1)(nil),         // 37: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	(*TestAllTypesProto2_MessageSetCorrectExtension2)(nil),         // 38: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	(*UnknownToTestAllTypes_OptionalGroup)(nil),                    // 39: protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
-	(*TestAllRequiredTypesProto2_NestedMessage)(nil),               // 40: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage
-	(*TestAllRequiredTypesProto2_Data)(nil),                        // 41: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.Data
-	(*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),           // 42: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil), // 43: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
-	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension2)(nil), // 44: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
-	(*TestLargeOneof_A1)(nil),                                      // 45: protobuf_test_messages.proto2.TestLargeOneof.A1
-	(*TestLargeOneof_A2)(nil),                                      // 46: protobuf_test_messages.proto2.TestLargeOneof.A2
-	(*TestLargeOneof_A3)(nil),                                      // 47: protobuf_test_messages.proto2.TestLargeOneof.A3
-	(*TestLargeOneof_A4)(nil),                                      // 48: protobuf_test_messages.proto2.TestLargeOneof.A4
-	(*TestLargeOneof_A5)(nil),                                      // 49: protobuf_test_messages.proto2.TestLargeOneof.A5
+	nil,                                        // 25: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32BoolEntry
+	nil,                                        // 26: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
+	nil,                                        // 27: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
+	nil,                                        // 28: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry
+	nil,                                        // 29: protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
+	nil,                                        // 30: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
+	nil,                                        // 31: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
+	nil,                                        // 32: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
+	nil,                                        // 33: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
+	nil,                                        // 34: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
+	nil,                                        // 35: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
+	(*TestAllTypesProto2_Data)(nil),            // 36: protobuf_test_messages.proto2.TestAllTypesProto2.Data
+	(*TestAllTypesProto2_MultiWordGroupField)(nil),                 // 37: protobuf_test_messages.proto2.TestAllTypesProto2.MultiWordGroupField
+	(*TestAllTypesProto2_MessageSetCorrect)(nil),                   // 38: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
+	(*TestAllTypesProto2_MessageSetCorrectExtension1)(nil),         // 39: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
+	(*TestAllTypesProto2_MessageSetCorrectExtension2)(nil),         // 40: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
+	(*TestAllTypesProto2_ExtensionWithOneof)(nil),                  // 41: protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof
+	(*UnknownToTestAllTypes_OptionalGroup)(nil),                    // 42: protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
+	(*TestAllRequiredTypesProto2_NestedMessage)(nil),               // 43: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage
+	(*TestAllRequiredTypesProto2_Data)(nil),                        // 44: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.Data
+	(*TestAllRequiredTypesProto2_MessageSetCorrect)(nil),           // 45: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension1)(nil), // 46: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
+	(*TestAllRequiredTypesProto2_MessageSetCorrectExtension2)(nil), // 47: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
+	(*TestLargeOneof_A1)(nil),                                      // 48: protobuf_test_messages.proto2.TestLargeOneof.A1
+	(*TestLargeOneof_A2)(nil),                                      // 49: protobuf_test_messages.proto2.TestLargeOneof.A2
+	(*TestLargeOneof_A3)(nil),                                      // 50: protobuf_test_messages.proto2.TestLargeOneof.A3
+	(*TestLargeOneof_A4)(nil),                                      // 51: protobuf_test_messages.proto2.TestLargeOneof.A4
+	(*TestLargeOneof_A5)(nil),                                      // 52: protobuf_test_messages.proto2.TestLargeOneof.A5
 }
 var file_google_protobuf_test_messages_proto2_proto_depIdxs = []int32{
 	14, // 0: protobuf_test_messages.proto2.TestAllTypesProto2.optional_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
@@ -3631,56 +3766,62 @@
 	22, // 18: protobuf_test_messages.proto2.TestAllTypesProto2.map_fixed64_fixed64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
 	23, // 19: protobuf_test_messages.proto2.TestAllTypesProto2.map_sfixed32_sfixed32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
 	24, // 20: protobuf_test_messages.proto2.TestAllTypesProto2.map_sfixed64_sfixed64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	25, // 21: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_float:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	26, // 22: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_double:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	27, // 23: protobuf_test_messages.proto2.TestAllTypesProto2.map_bool_bool:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	28, // 24: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_string:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
-	29, // 25: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_bytes:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
-	30, // 26: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	31, // 27: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	32, // 28: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	33, // 29: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	14, // 30: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	1,  // 31: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	34, // 32: protobuf_test_messages.proto2.TestAllTypesProto2.data:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.Data
-	35, // 33: protobuf_test_messages.proto2.TestAllTypesProto2.multiwordgroupfield:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MultiWordGroupField
-	5,  // 34: protobuf_test_messages.proto2.UnknownToTestAllTypes.nested_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	39, // 35: protobuf_test_messages.proto2.UnknownToTestAllTypes.optionalgroup:type_name -> protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
-	40, // 36: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_nested_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage
-	5,  // 37: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_foreign_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	3,  // 38: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedEnum
-	0,  // 39: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_foreign_enum:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
-	12, // 40: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.recursive_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
-	12, // 41: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.optional_recursive_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
-	41, // 42: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.data:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.Data
-	45, // 43: protobuf_test_messages.proto2.TestLargeOneof.a1:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A1
-	46, // 44: protobuf_test_messages.proto2.TestLargeOneof.a2:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A2
-	47, // 45: protobuf_test_messages.proto2.TestLargeOneof.a3:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A3
-	48, // 46: protobuf_test_messages.proto2.TestLargeOneof.a4:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A4
-	49, // 47: protobuf_test_messages.proto2.TestLargeOneof.a5:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A5
-	4,  // 48: protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2
-	14, // 49: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	5,  // 50: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	1,  // 51: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	0,  // 52: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
-	12, // 53: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
-	12, // 54: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage.optional_corecursive:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
-	4,  // 55: protobuf_test_messages.proto2.extension_int32:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2
-	4,  // 56: protobuf_test_messages.proto2.groupfield:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2
-	36, // 57: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	36, // 58: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	42, // 59: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	42, // 60: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
-	6,  // 61: protobuf_test_messages.proto2.groupfield:type_name -> protobuf_test_messages.proto2.GroupField
-	37, // 62: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	38, // 63: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	43, // 64: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
-	44, // 65: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
-	66, // [66:66] is the sub-list for method output_type
-	66, // [66:66] is the sub-list for method input_type
-	61, // [61:66] is the sub-list for extension type_name
-	55, // [55:61] is the sub-list for extension extendee
-	0,  // [0:55] is the sub-list for field type_name
+	25, // 21: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_bool:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32BoolEntry
+	26, // 22: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_float:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
+	27, // 23: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_double:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
+	28, // 24: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry
+	29, // 25: protobuf_test_messages.proto2.TestAllTypesProto2.map_bool_bool:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
+	30, // 26: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_string:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
+	31, // 27: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_bytes:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
+	32, // 28: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
+	33, // 29: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
+	34, // 30: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
+	35, // 31: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
+	14, // 32: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
+	1,  // 33: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
+	36, // 34: protobuf_test_messages.proto2.TestAllTypesProto2.data:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.Data
+	37, // 35: protobuf_test_messages.proto2.TestAllTypesProto2.multiwordgroupfield:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MultiWordGroupField
+	38, // 36: protobuf_test_messages.proto2.TestAllTypesProto2.message_set_correct:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
+	5,  // 37: protobuf_test_messages.proto2.UnknownToTestAllTypes.nested_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
+	42, // 38: protobuf_test_messages.proto2.UnknownToTestAllTypes.optionalgroup:type_name -> protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
+	43, // 39: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_nested_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage
+	5,  // 40: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_foreign_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
+	3,  // 41: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedEnum
+	0,  // 42: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.required_foreign_enum:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
+	12, // 43: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.recursive_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
+	12, // 44: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.optional_recursive_message:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
+	44, // 45: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.data:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.Data
+	48, // 46: protobuf_test_messages.proto2.TestLargeOneof.a1:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A1
+	49, // 47: protobuf_test_messages.proto2.TestLargeOneof.a2:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A2
+	50, // 48: protobuf_test_messages.proto2.TestLargeOneof.a3:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A3
+	51, // 49: protobuf_test_messages.proto2.TestLargeOneof.a4:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A4
+	52, // 50: protobuf_test_messages.proto2.TestLargeOneof.a5:type_name -> protobuf_test_messages.proto2.TestLargeOneof.A5
+	4,  // 51: protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2
+	14, // 52: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32NestedMessageEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
+	14, // 53: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
+	5,  // 54: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
+	1,  // 55: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
+	0,  // 56: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
+	12, // 57: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
+	12, // 58: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.NestedMessage.optional_corecursive:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2
+	4,  // 59: protobuf_test_messages.proto2.extension_int32:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2
+	4,  // 60: protobuf_test_messages.proto2.groupfield:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2
+	38, // 61: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
+	38, // 62: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
+	38, // 63: protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
+	45, // 64: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	45, // 65: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrect
+	6,  // 66: protobuf_test_messages.proto2.groupfield:type_name -> protobuf_test_messages.proto2.GroupField
+	39, // 67: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
+	40, // 68: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
+	41, // 69: protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof.extension_with_oneof:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.ExtensionWithOneof
+	46, // 70: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension1
+	47, // 71: protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllRequiredTypesProto2.MessageSetCorrectExtension2
+	72, // [72:72] is the sub-list for method output_type
+	72, // [72:72] is the sub-list for method input_type
+	66, // [66:72] is the sub-list for extension type_name
+	59, // [59:66] is the sub-list for extension extendee
+	0,  // [0:59] is the sub-list for field type_name
 }
 
 func init() { file_google_protobuf_test_messages_proto2_proto_init() }
@@ -3706,14 +3847,18 @@
 		(*TestLargeOneof_A4_)(nil),
 		(*TestLargeOneof_A5_)(nil),
 	}
+	file_google_protobuf_test_messages_proto2_proto_msgTypes[37].OneofWrappers = []any{
+		(*TestAllTypesProto2_ExtensionWithOneof_A)(nil),
+		(*TestAllTypesProto2_ExtensionWithOneof_B)(nil),
+	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_test_messages_proto2_proto_rawDesc), len(file_google_protobuf_test_messages_proto2_proto_rawDesc)),
 			NumEnums:      4,
-			NumMessages:   46,
-			NumExtensions: 6,
+			NumMessages:   49,
+			NumExtensions: 7,
 			NumServices:   0,
 		},
 		GoTypes:           file_google_protobuf_test_messages_proto2_proto_goTypes,
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
index 389ed76..93d44f7 100644
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto3.pb.go
@@ -246,6 +246,7 @@
 type TestAllTypesProto3 struct {
 	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
+	// test [kotlin] comment
 	OptionalInt32          int32                             `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
 	OptionalInt64          int64                             `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
 	OptionalUint32         uint32                            `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
diff --git a/reflect/protoreflect/source_gen.go b/reflect/protoreflect/source_gen.go
index a4a0a29..730331e 100644
--- a/reflect/protoreflect/source_gen.go
+++ b/reflect/protoreflect/source_gen.go
@@ -21,6 +21,8 @@
 		b = p.appendRepeatedField(b, "public_dependency", nil)
 	case 11:
 		b = p.appendRepeatedField(b, "weak_dependency", nil)
+	case 15:
+		b = p.appendRepeatedField(b, "option_dependency", nil)
 	case 4:
 		b = p.appendRepeatedField(b, "message_type", (*SourcePath).appendDescriptorProto)
 	case 5:
@@ -66,6 +68,8 @@
 		b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendDescriptorProto_ReservedRange)
 	case 10:
 		b = p.appendRepeatedField(b, "reserved_name", nil)
+	case 11:
+		b = p.appendSingularField(b, "visibility", nil)
 	}
 	return b
 }
@@ -85,6 +89,8 @@
 		b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange)
 	case 5:
 		b = p.appendRepeatedField(b, "reserved_name", nil)
+	case 6:
+		b = p.appendSingularField(b, "visibility", nil)
 	}
 	return b
 }
@@ -400,6 +406,8 @@
 		b = p.appendSingularField(b, "json_format", nil)
 	case 7:
 		b = p.appendSingularField(b, "enforce_naming_style", nil)
+	case 8:
+		b = p.appendSingularField(b, "default_symbol_visibility", nil)
 	}
 	return b
 }
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index 7fe280f..6843b0b 100644
--- a/types/descriptorpb/descriptor.pb.go
+++ b/types/descriptorpb/descriptor.pb.go
@@ -151,6 +151,70 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}
 }
 
+// Describes the 'visibility' of a symbol with respect to the proto import
+// system. Symbols can only be imported when the visibility rules do not prevent
+// it (ex: local symbols cannot be imported).  Visibility modifiers can only set
+// on `message` and `enum` as they are the only types available to be referenced
+// from other files.
+type SymbolVisibility int32
+
+const (
+	SymbolVisibility_VISIBILITY_UNSET  SymbolVisibility = 0
+	SymbolVisibility_VISIBILITY_LOCAL  SymbolVisibility = 1
+	SymbolVisibility_VISIBILITY_EXPORT SymbolVisibility = 2
+)
+
+// Enum value maps for SymbolVisibility.
+var (
+	SymbolVisibility_name = map[int32]string{
+		0: "VISIBILITY_UNSET",
+		1: "VISIBILITY_LOCAL",
+		2: "VISIBILITY_EXPORT",
+	}
+	SymbolVisibility_value = map[string]int32{
+		"VISIBILITY_UNSET":  0,
+		"VISIBILITY_LOCAL":  1,
+		"VISIBILITY_EXPORT": 2,
+	}
+)
+
+func (x SymbolVisibility) Enum() *SymbolVisibility {
+	p := new(SymbolVisibility)
+	*p = x
+	return p
+}
+
+func (x SymbolVisibility) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SymbolVisibility) Descriptor() protoreflect.EnumDescriptor {
+	return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()
+}
+
+func (SymbolVisibility) Type() protoreflect.EnumType {
+	return &file_google_protobuf_descriptor_proto_enumTypes[1]
+}
+
+func (x SymbolVisibility) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *SymbolVisibility) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = SymbolVisibility(num)
+	return nil
+}
+
+// Deprecated: Use SymbolVisibility.Descriptor instead.
+func (SymbolVisibility) EnumDescriptor() ([]byte, []int) {
+	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}
+}
+
 // The verification state of the extension range.
 type ExtensionRangeOptions_VerificationState int32
 
@@ -183,11 +247,11 @@
 }
 
 func (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()
 }
 
 func (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[1]
+	return &file_google_protobuf_descriptor_proto_enumTypes[2]
 }
 
 func (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber {
@@ -299,11 +363,11 @@
 }
 
 func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()
 }
 
 func (FieldDescriptorProto_Type) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[2]
+	return &file_google_protobuf_descriptor_proto_enumTypes[3]
 }
 
 func (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {
@@ -362,11 +426,11 @@
 }
 
 func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()
 }
 
 func (FieldDescriptorProto_Label) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[3]
+	return &file_google_protobuf_descriptor_proto_enumTypes[4]
 }
 
 func (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {
@@ -423,11 +487,11 @@
 }
 
 func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()
 }
 
 func (FileOptions_OptimizeMode) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[4]
+	return &file_google_protobuf_descriptor_proto_enumTypes[5]
 }
 
 func (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {
@@ -489,11 +553,11 @@
 }
 
 func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor()
 }
 
 func (FieldOptions_CType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[5]
+	return &file_google_protobuf_descriptor_proto_enumTypes[6]
 }
 
 func (x FieldOptions_CType) Number() protoreflect.EnumNumber {
@@ -551,11 +615,11 @@
 }
 
 func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor()
 }
 
 func (FieldOptions_JSType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[6]
+	return &file_google_protobuf_descriptor_proto_enumTypes[7]
 }
 
 func (x FieldOptions_JSType) Number() protoreflect.EnumNumber {
@@ -611,11 +675,11 @@
 }
 
 func (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor()
 }
 
 func (FieldOptions_OptionRetention) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[7]
+	return &file_google_protobuf_descriptor_proto_enumTypes[8]
 }
 
 func (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber {
@@ -694,11 +758,11 @@
 }
 
 func (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor()
 }
 
 func (FieldOptions_OptionTargetType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[8]
+	return &file_google_protobuf_descriptor_proto_enumTypes[9]
 }
 
 func (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber {
@@ -756,11 +820,11 @@
 }
 
 func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor()
 }
 
 func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[9]
+	return &file_google_protobuf_descriptor_proto_enumTypes[10]
 }
 
 func (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {
@@ -818,11 +882,11 @@
 }
 
 func (FeatureSet_FieldPresence) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor()
 }
 
 func (FeatureSet_FieldPresence) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[10]
+	return &file_google_protobuf_descriptor_proto_enumTypes[11]
 }
 
 func (x FeatureSet_FieldPresence) Number() protoreflect.EnumNumber {
@@ -877,11 +941,11 @@
 }
 
 func (FeatureSet_EnumType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor()
 }
 
 func (FeatureSet_EnumType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[11]
+	return &file_google_protobuf_descriptor_proto_enumTypes[12]
 }
 
 func (x FeatureSet_EnumType) Number() protoreflect.EnumNumber {
@@ -936,11 +1000,11 @@
 }
 
 func (FeatureSet_RepeatedFieldEncoding) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor()
 }
 
 func (FeatureSet_RepeatedFieldEncoding) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[12]
+	return &file_google_protobuf_descriptor_proto_enumTypes[13]
 }
 
 func (x FeatureSet_RepeatedFieldEncoding) Number() protoreflect.EnumNumber {
@@ -995,11 +1059,11 @@
 }
 
 func (FeatureSet_Utf8Validation) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor()
 }
 
 func (FeatureSet_Utf8Validation) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[13]
+	return &file_google_protobuf_descriptor_proto_enumTypes[14]
 }
 
 func (x FeatureSet_Utf8Validation) Number() protoreflect.EnumNumber {
@@ -1054,11 +1118,11 @@
 }
 
 func (FeatureSet_MessageEncoding) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor()
 }
 
 func (FeatureSet_MessageEncoding) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[14]
+	return &file_google_protobuf_descriptor_proto_enumTypes[15]
 }
 
 func (x FeatureSet_MessageEncoding) Number() protoreflect.EnumNumber {
@@ -1113,11 +1177,11 @@
 }
 
 func (FeatureSet_JsonFormat) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor()
 }
 
 func (FeatureSet_JsonFormat) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[15]
+	return &file_google_protobuf_descriptor_proto_enumTypes[16]
 }
 
 func (x FeatureSet_JsonFormat) Number() protoreflect.EnumNumber {
@@ -1172,11 +1236,11 @@
 }
 
 func (FeatureSet_EnforceNamingStyle) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[17].Descriptor()
 }
 
 func (FeatureSet_EnforceNamingStyle) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[16]
+	return &file_google_protobuf_descriptor_proto_enumTypes[17]
 }
 
 func (x FeatureSet_EnforceNamingStyle) Number() protoreflect.EnumNumber {
@@ -1198,6 +1262,77 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 6}
 }
 
+type FeatureSet_VisibilityFeature_DefaultSymbolVisibility int32
+
+const (
+	FeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 0
+	// Default pre-EDITION_2024, all UNSET visibility are export.
+	FeatureSet_VisibilityFeature_EXPORT_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 1
+	// All top-level symbols default to export, nested default to local.
+	FeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 2
+	// All symbols default to local.
+	FeatureSet_VisibilityFeature_LOCAL_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 3
+	// All symbols local by default. Nested types cannot be exported.
+	// With special case caveat for message { enum {} reserved 1 to max; }
+	// This is the recommended setting for new protos.
+	FeatureSet_VisibilityFeature_STRICT FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 4
+)
+
+// Enum value maps for FeatureSet_VisibilityFeature_DefaultSymbolVisibility.
+var (
+	FeatureSet_VisibilityFeature_DefaultSymbolVisibility_name = map[int32]string{
+		0: "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",
+		1: "EXPORT_ALL",
+		2: "EXPORT_TOP_LEVEL",
+		3: "LOCAL_ALL",
+		4: "STRICT",
+	}
+	FeatureSet_VisibilityFeature_DefaultSymbolVisibility_value = map[string]int32{
+		"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0,
+		"EXPORT_ALL":                        1,
+		"EXPORT_TOP_LEVEL":                  2,
+		"LOCAL_ALL":                         3,
+		"STRICT":                            4,
+	}
+)
+
+func (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Enum() *FeatureSet_VisibilityFeature_DefaultSymbolVisibility {
+	p := new(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)
+	*p = x
+	return p
+}
+
+func (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Descriptor() protoreflect.EnumDescriptor {
+	return file_google_protobuf_descriptor_proto_enumTypes[18].Descriptor()
+}
+
+func (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Type() protoreflect.EnumType {
+	return &file_google_protobuf_descriptor_proto_enumTypes[18]
+}
+
+func (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *FeatureSet_VisibilityFeature_DefaultSymbolVisibility) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = FeatureSet_VisibilityFeature_DefaultSymbolVisibility(num)
+	return nil
+}
+
+// Deprecated: Use FeatureSet_VisibilityFeature_DefaultSymbolVisibility.Descriptor instead.
+func (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) EnumDescriptor() ([]byte, []int) {
+	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0, 0}
+}
+
 // Represents the identified object's effect on the element in the original
 // .proto file.
 type GeneratedCodeInfo_Annotation_Semantic int32
@@ -1236,11 +1371,11 @@
 }
 
 func (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[17].Descriptor()
+	return file_google_protobuf_descriptor_proto_enumTypes[19].Descriptor()
 }
 
 func (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[17]
+	return &file_google_protobuf_descriptor_proto_enumTypes[19]
 }
 
 func (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber {
@@ -1321,6 +1456,9 @@
 	// Indexes of the weak imported files in the dependency list.
 	// For Google-internal migration only. Do not use.
 	WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"`
+	// Names of files imported by this file purely for the purpose of providing
+	// option extensions. These are excluded from the dependency list above.
+	OptionDependency []string `protobuf:"bytes,15,rep,name=option_dependency,json=optionDependency" json:"option_dependency,omitempty"`
 	// All top-level definitions in this file.
 	MessageType []*DescriptorProto        `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"`
 	EnumType    []*EnumDescriptorProto    `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
@@ -1414,6 +1552,13 @@
 	return nil
 }
 
+func (x *FileDescriptorProto) GetOptionDependency() []string {
+	if x != nil {
+		return x.OptionDependency
+	}
+	return nil
+}
+
 func (x *FileDescriptorProto) GetMessageType() []*DescriptorProto {
 	if x != nil {
 		return x.MessageType
@@ -1484,7 +1629,9 @@
 	ReservedRange  []*DescriptorProto_ReservedRange  `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
 	// Reserved field names, which may not be used by fields in the same message.
 	// A given name may only be reserved once.
-	ReservedName  []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	// Support for `export` and `local` keywords on enums.
+	Visibility    *SymbolVisibility `protobuf:"varint,11,opt,name=visibility,enum=google.protobuf.SymbolVisibility" json:"visibility,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1589,6 +1736,13 @@
 	return nil
 }
 
+func (x *DescriptorProto) GetVisibility() SymbolVisibility {
+	if x != nil && x.Visibility != nil {
+		return *x.Visibility
+	}
+	return SymbolVisibility_VISIBILITY_UNSET
+}
+
 type ExtensionRangeOptions struct {
 	state protoimpl.MessageState `protogen:"open.v1"`
 	// The parser stores options it doesn't recognize here. See above.
@@ -1901,7 +2055,9 @@
 	ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
 	// Reserved enum value names, which may not be reused. A given name may only
 	// be reserved once.
-	ReservedName  []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	ReservedName []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	// Support for `export` and `local` keywords on enums.
+	Visibility    *SymbolVisibility `protobuf:"varint,6,opt,name=visibility,enum=google.protobuf.SymbolVisibility" json:"visibility,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1971,6 +2127,13 @@
 	return nil
 }
 
+func (x *EnumDescriptorProto) GetVisibility() SymbolVisibility {
+	if x != nil && x.Visibility != nil {
+		return *x.Visibility
+	}
+	return SymbolVisibility_VISIBILITY_UNSET
+}
+
 // Describes a value within an enum.
 type EnumValueDescriptorProto struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
@@ -3392,17 +3555,18 @@
 // be designed and implemented to handle this, hopefully before we ever hit a
 // conflict here.
 type FeatureSet struct {
-	state                 protoimpl.MessageState            `protogen:"open.v1"`
-	FieldPresence         *FeatureSet_FieldPresence         `protobuf:"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence" json:"field_presence,omitempty"`
-	EnumType              *FeatureSet_EnumType              `protobuf:"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType" json:"enum_type,omitempty"`
-	RepeatedFieldEncoding *FeatureSet_RepeatedFieldEncoding `protobuf:"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding" json:"repeated_field_encoding,omitempty"`
-	Utf8Validation        *FeatureSet_Utf8Validation        `protobuf:"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation" json:"utf8_validation,omitempty"`
-	MessageEncoding       *FeatureSet_MessageEncoding       `protobuf:"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding" json:"message_encoding,omitempty"`
-	JsonFormat            *FeatureSet_JsonFormat            `protobuf:"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat" json:"json_format,omitempty"`
-	EnforceNamingStyle    *FeatureSet_EnforceNamingStyle    `protobuf:"varint,7,opt,name=enforce_naming_style,json=enforceNamingStyle,enum=google.protobuf.FeatureSet_EnforceNamingStyle" json:"enforce_naming_style,omitempty"`
-	extensionFields       protoimpl.ExtensionFields
-	unknownFields         protoimpl.UnknownFields
-	sizeCache             protoimpl.SizeCache
+	state                   protoimpl.MessageState                                `protogen:"open.v1"`
+	FieldPresence           *FeatureSet_FieldPresence                             `protobuf:"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence" json:"field_presence,omitempty"`
+	EnumType                *FeatureSet_EnumType                                  `protobuf:"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType" json:"enum_type,omitempty"`
+	RepeatedFieldEncoding   *FeatureSet_RepeatedFieldEncoding                     `protobuf:"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding" json:"repeated_field_encoding,omitempty"`
+	Utf8Validation          *FeatureSet_Utf8Validation                            `protobuf:"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation" json:"utf8_validation,omitempty"`
+	MessageEncoding         *FeatureSet_MessageEncoding                           `protobuf:"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding" json:"message_encoding,omitempty"`
+	JsonFormat              *FeatureSet_JsonFormat                                `protobuf:"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat" json:"json_format,omitempty"`
+	EnforceNamingStyle      *FeatureSet_EnforceNamingStyle                        `protobuf:"varint,7,opt,name=enforce_naming_style,json=enforceNamingStyle,enum=google.protobuf.FeatureSet_EnforceNamingStyle" json:"enforce_naming_style,omitempty"`
+	DefaultSymbolVisibility *FeatureSet_VisibilityFeature_DefaultSymbolVisibility `protobuf:"varint,8,opt,name=default_symbol_visibility,json=defaultSymbolVisibility,enum=google.protobuf.FeatureSet_VisibilityFeature_DefaultSymbolVisibility" json:"default_symbol_visibility,omitempty"`
+	extensionFields         protoimpl.ExtensionFields
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
 func (x *FeatureSet) Reset() {
@@ -3484,6 +3648,13 @@
 	return FeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN
 }
 
+func (x *FeatureSet) GetDefaultSymbolVisibility() FeatureSet_VisibilityFeature_DefaultSymbolVisibility {
+	if x != nil && x.DefaultSymbolVisibility != nil {
+		return *x.DefaultSymbolVisibility
+	}
+	return FeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN
+}
+
 // A compiled specification for the defaults of a set of features.  These
 // messages are generated from FeatureSet extensions and can be used to seed
 // feature resolution. The resolution with this object becomes a simple search
@@ -4144,6 +4315,42 @@
 	return false
 }
 
+type FeatureSet_VisibilityFeature struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FeatureSet_VisibilityFeature) Reset() {
+	*x = FeatureSet_VisibilityFeature{}
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FeatureSet_VisibilityFeature) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FeatureSet_VisibilityFeature) ProtoMessage() {}
+
+func (x *FeatureSet_VisibilityFeature) ProtoReflect() protoreflect.Message {
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FeatureSet_VisibilityFeature.ProtoReflect.Descriptor instead.
+func (*FeatureSet_VisibilityFeature) Descriptor() ([]byte, []int) {
+	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}
+}
+
 // A map from every known edition with a unique set of defaults to its
 // defaults. Not all editions may be contained here.  For a given edition,
 // the defaults at the closest matching edition ordered at or before it should
@@ -4161,7 +4368,7 @@
 
 func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() {
 	*x = FeatureSetDefaults_FeatureSetEditionDefault{}
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -4173,7 +4380,7 @@
 func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {}
 
 func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4309,7 +4516,7 @@
 
 func (x *SourceCodeInfo_Location) Reset() {
 	*x = SourceCodeInfo_Location{}
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -4321,7 +4528,7 @@
 func (*SourceCodeInfo_Location) ProtoMessage() {}
 
 func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4393,7 +4600,7 @@
 
 func (x *GeneratedCodeInfo_Annotation) Reset() {
 	*x = GeneratedCodeInfo_Annotation{}
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[33]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -4405,7 +4612,7 @@
 func (*GeneratedCodeInfo_Annotation) ProtoMessage() {}
 
 func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
+	mi := &file_google_protobuf_descriptor_proto_msgTypes[33]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4462,7 +4669,7 @@
 	"\n" +
 	" google/protobuf/descriptor.proto\x12\x0fgoogle.protobuf\"[\n" +
 	"\x11FileDescriptorSet\x128\n" +
-	"\x04file\x18\x01 \x03(\v2$.google.protobuf.FileDescriptorProtoR\x04file*\f\b\x80\xec\xca\xff\x01\x10\x81\xec\xca\xff\x01\"\x98\x05\n" +
+	"\x04file\x18\x01 \x03(\v2$.google.protobuf.FileDescriptorProtoR\x04file*\f\b\x80\xec\xca\xff\x01\x10\x81\xec\xca\xff\x01\"\xc5\x05\n" +
 	"\x13FileDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
 	"\apackage\x18\x02 \x01(\tR\apackage\x12\x1e\n" +
@@ -4471,7 +4678,8 @@
 	"dependency\x12+\n" +
 	"\x11public_dependency\x18\n" +
 	" \x03(\x05R\x10publicDependency\x12'\n" +
-	"\x0fweak_dependency\x18\v \x03(\x05R\x0eweakDependency\x12C\n" +
+	"\x0fweak_dependency\x18\v \x03(\x05R\x0eweakDependency\x12+\n" +
+	"\x11option_dependency\x18\x0f \x03(\tR\x10optionDependency\x12C\n" +
 	"\fmessage_type\x18\x04 \x03(\v2 .google.protobuf.DescriptorProtoR\vmessageType\x12A\n" +
 	"\tenum_type\x18\x05 \x03(\v2$.google.protobuf.EnumDescriptorProtoR\benumType\x12A\n" +
 	"\aservice\x18\x06 \x03(\v2'.google.protobuf.ServiceDescriptorProtoR\aservice\x12C\n" +
@@ -4479,7 +4687,7 @@
 	"\aoptions\x18\b \x01(\v2\x1c.google.protobuf.FileOptionsR\aoptions\x12I\n" +
 	"\x10source_code_info\x18\t \x01(\v2\x1f.google.protobuf.SourceCodeInfoR\x0esourceCodeInfo\x12\x16\n" +
 	"\x06syntax\x18\f \x01(\tR\x06syntax\x122\n" +
-	"\aedition\x18\x0e \x01(\x0e2\x18.google.protobuf.EditionR\aedition\"\xb9\x06\n" +
+	"\aedition\x18\x0e \x01(\x0e2\x18.google.protobuf.EditionR\aedition\"\xfc\x06\n" +
 	"\x0fDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12;\n" +
 	"\x05field\x18\x02 \x03(\v2%.google.protobuf.FieldDescriptorProtoR\x05field\x12C\n" +
@@ -4493,7 +4701,10 @@
 	"\aoptions\x18\a \x01(\v2\x1f.google.protobuf.MessageOptionsR\aoptions\x12U\n" +
 	"\x0ereserved_range\x18\t \x03(\v2..google.protobuf.DescriptorProto.ReservedRangeR\rreservedRange\x12#\n" +
 	"\rreserved_name\x18\n" +
-	" \x03(\tR\freservedName\x1az\n" +
+	" \x03(\tR\freservedName\x12A\n" +
+	"\n" +
+	"visibility\x18\v \x01(\x0e2!.google.protobuf.SymbolVisibilityR\n" +
+	"visibility\x1az\n" +
 	"\x0eExtensionRange\x12\x14\n" +
 	"\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n" +
 	"\x03end\x18\x02 \x01(\x05R\x03end\x12@\n" +
@@ -4562,13 +4773,16 @@
 	"\x0eLABEL_REQUIRED\x10\x02\"c\n" +
 	"\x14OneofDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x127\n" +
-	"\aoptions\x18\x02 \x01(\v2\x1d.google.protobuf.OneofOptionsR\aoptions\"\xe3\x02\n" +
+	"\aoptions\x18\x02 \x01(\v2\x1d.google.protobuf.OneofOptionsR\aoptions\"\xa6\x03\n" +
 	"\x13EnumDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12?\n" +
 	"\x05value\x18\x02 \x03(\v2).google.protobuf.EnumValueDescriptorProtoR\x05value\x126\n" +
 	"\aoptions\x18\x03 \x01(\v2\x1c.google.protobuf.EnumOptionsR\aoptions\x12]\n" +
 	"\x0ereserved_range\x18\x04 \x03(\v26.google.protobuf.EnumDescriptorProto.EnumReservedRangeR\rreservedRange\x12#\n" +
-	"\rreserved_name\x18\x05 \x03(\tR\freservedName\x1a;\n" +
+	"\rreserved_name\x18\x05 \x03(\tR\freservedName\x12A\n" +
+	"\n" +
+	"visibility\x18\x06 \x01(\x0e2!.google.protobuf.SymbolVisibilityR\n" +
+	"visibility\x1a;\n" +
 	"\x11EnumReservedRange\x12\x14\n" +
 	"\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n" +
 	"\x03end\x18\x02 \x01(\x05R\x03end\"\x83\x01\n" +
@@ -4728,7 +4942,7 @@
 	"\x0faggregate_value\x18\b \x01(\tR\x0eaggregateValue\x1aJ\n" +
 	"\bNamePart\x12\x1b\n" +
 	"\tname_part\x18\x01 \x02(\tR\bnamePart\x12!\n" +
-	"\fis_extension\x18\x02 \x02(\bR\visExtension\"\xae\f\n" +
+	"\fis_extension\x18\x02 \x02(\bR\visExtension\"\x8e\x0f\n" +
 	"\n" +
 	"FeatureSet\x12\x91\x01\n" +
 	"\x0efield_presence\x18\x01 \x01(\x0e2).google.protobuf.FeatureSet.FieldPresenceB?\x88\x01\x01\x98\x01\x04\x98\x01\x01\xa2\x01\r\x12\bEXPLICIT\x18\x84\a\xa2\x01\r\x12\bIMPLICIT\x18\xe7\a\xa2\x01\r\x12\bEXPLICIT\x18\xe8\a\xb2\x01\x03\b\xe8\aR\rfieldPresence\x12l\n" +
@@ -4739,7 +4953,18 @@
 	"\vjson_format\x18\x06 \x01(\x0e2&.google.protobuf.FeatureSet.JsonFormatB9\x88\x01\x01\x98\x01\x03\x98\x01\x06\x98\x01\x01\xa2\x01\x17\x12\x12LEGACY_BEST_EFFORT\x18\x84\a\xa2\x01\n" +
 	"\x12\x05ALLOW\x18\xe7\a\xb2\x01\x03\b\xe8\aR\n" +
 	"jsonFormat\x12\xab\x01\n" +
-	"\x14enforce_naming_style\x18\a \x01(\x0e2..google.protobuf.FeatureSet.EnforceNamingStyleBI\x88\x01\x02\x98\x01\x01\x98\x01\x02\x98\x01\x03\x98\x01\x04\x98\x01\x05\x98\x01\x06\x98\x01\a\x98\x01\b\x98\x01\t\xa2\x01\x11\x12\fSTYLE_LEGACY\x18\x84\a\xa2\x01\x0e\x12\tSTYLE2024\x18\xe9\a\xb2\x01\x03\b\xe9\aR\x12enforceNamingStyle\"\\\n" +
+	"\x14enforce_naming_style\x18\a \x01(\x0e2..google.protobuf.FeatureSet.EnforceNamingStyleBI\x88\x01\x02\x98\x01\x01\x98\x01\x02\x98\x01\x03\x98\x01\x04\x98\x01\x05\x98\x01\x06\x98\x01\a\x98\x01\b\x98\x01\t\xa2\x01\x11\x12\fSTYLE_LEGACY\x18\x84\a\xa2\x01\x0e\x12\tSTYLE2024\x18\xe9\a\xb2\x01\x03\b\xe9\aR\x12enforceNamingStyle\x12\xb9\x01\n" +
+	"\x19default_symbol_visibility\x18\b \x01(\x0e2E.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibilityB6\x88\x01\x02\x98\x01\x01\xa2\x01\x0f\x12\n" +
+	"EXPORT_ALL\x18\x84\a\xa2\x01\x15\x12\x10EXPORT_TOP_LEVEL\x18\xe9\a\xb2\x01\x03\b\xe9\aR\x17defaultSymbolVisibility\x1a\xa1\x01\n" +
+	"\x11VisibilityFeature\"\x81\x01\n" +
+	"\x17DefaultSymbolVisibility\x12%\n" +
+	"!DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\x10\x00\x12\x0e\n" +
+	"\n" +
+	"EXPORT_ALL\x10\x01\x12\x14\n" +
+	"\x10EXPORT_TOP_LEVEL\x10\x02\x12\r\n" +
+	"\tLOCAL_ALL\x10\x03\x12\n" +
+	"\n" +
+	"\x06STRICT\x10\x04J\b\b\x01\x10\x80\x80\x80\x80\x02\"\\\n" +
 	"\rFieldPresence\x12\x1a\n" +
 	"\x16FIELD_PRESENCE_UNKNOWN\x10\x00\x12\f\n" +
 	"\bEXPLICIT\x10\x01\x12\f\n" +
@@ -4817,7 +5042,11 @@
 	"\x17EDITION_99997_TEST_ONLY\x10\x9d\x8d\x06\x12\x1d\n" +
 	"\x17EDITION_99998_TEST_ONLY\x10\x9e\x8d\x06\x12\x1d\n" +
 	"\x17EDITION_99999_TEST_ONLY\x10\x9f\x8d\x06\x12\x13\n" +
-	"\vEDITION_MAX\x10\xff\xff\xff\xff\aB~\n" +
+	"\vEDITION_MAX\x10\xff\xff\xff\xff\a*U\n" +
+	"\x10SymbolVisibility\x12\x14\n" +
+	"\x10VISIBILITY_UNSET\x10\x00\x12\x14\n" +
+	"\x10VISIBILITY_LOCAL\x10\x01\x12\x15\n" +
+	"\x11VISIBILITY_EXPORT\x10\x02B~\n" +
 	"\x13com.google.protobufB\x10DescriptorProtosH\x01Z-google.golang.org/protobuf/types/descriptorpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1aGoogle.Protobuf.Reflection"
 
 var (
@@ -4832,145 +5061,151 @@
 	return file_google_protobuf_descriptor_proto_rawDescData
 }
 
-var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 18)
-var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
+var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 20)
+var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
 var file_google_protobuf_descriptor_proto_goTypes = []any{
-	(Edition)(0), // 0: google.protobuf.Edition
-	(ExtensionRangeOptions_VerificationState)(0),        // 1: google.protobuf.ExtensionRangeOptions.VerificationState
-	(FieldDescriptorProto_Type)(0),                      // 2: google.protobuf.FieldDescriptorProto.Type
-	(FieldDescriptorProto_Label)(0),                     // 3: google.protobuf.FieldDescriptorProto.Label
-	(FileOptions_OptimizeMode)(0),                       // 4: google.protobuf.FileOptions.OptimizeMode
-	(FieldOptions_CType)(0),                             // 5: google.protobuf.FieldOptions.CType
-	(FieldOptions_JSType)(0),                            // 6: google.protobuf.FieldOptions.JSType
-	(FieldOptions_OptionRetention)(0),                   // 7: google.protobuf.FieldOptions.OptionRetention
-	(FieldOptions_OptionTargetType)(0),                  // 8: google.protobuf.FieldOptions.OptionTargetType
-	(MethodOptions_IdempotencyLevel)(0),                 // 9: google.protobuf.MethodOptions.IdempotencyLevel
-	(FeatureSet_FieldPresence)(0),                       // 10: google.protobuf.FeatureSet.FieldPresence
-	(FeatureSet_EnumType)(0),                            // 11: google.protobuf.FeatureSet.EnumType
-	(FeatureSet_RepeatedFieldEncoding)(0),               // 12: google.protobuf.FeatureSet.RepeatedFieldEncoding
-	(FeatureSet_Utf8Validation)(0),                      // 13: google.protobuf.FeatureSet.Utf8Validation
-	(FeatureSet_MessageEncoding)(0),                     // 14: google.protobuf.FeatureSet.MessageEncoding
-	(FeatureSet_JsonFormat)(0),                          // 15: google.protobuf.FeatureSet.JsonFormat
-	(FeatureSet_EnforceNamingStyle)(0),                  // 16: google.protobuf.FeatureSet.EnforceNamingStyle
-	(GeneratedCodeInfo_Annotation_Semantic)(0),          // 17: google.protobuf.GeneratedCodeInfo.Annotation.Semantic
-	(*FileDescriptorSet)(nil),                           // 18: google.protobuf.FileDescriptorSet
-	(*FileDescriptorProto)(nil),                         // 19: google.protobuf.FileDescriptorProto
-	(*DescriptorProto)(nil),                             // 20: google.protobuf.DescriptorProto
-	(*ExtensionRangeOptions)(nil),                       // 21: google.protobuf.ExtensionRangeOptions
-	(*FieldDescriptorProto)(nil),                        // 22: google.protobuf.FieldDescriptorProto
-	(*OneofDescriptorProto)(nil),                        // 23: google.protobuf.OneofDescriptorProto
-	(*EnumDescriptorProto)(nil),                         // 24: google.protobuf.EnumDescriptorProto
-	(*EnumValueDescriptorProto)(nil),                    // 25: google.protobuf.EnumValueDescriptorProto
-	(*ServiceDescriptorProto)(nil),                      // 26: google.protobuf.ServiceDescriptorProto
-	(*MethodDescriptorProto)(nil),                       // 27: google.protobuf.MethodDescriptorProto
-	(*FileOptions)(nil),                                 // 28: google.protobuf.FileOptions
-	(*MessageOptions)(nil),                              // 29: google.protobuf.MessageOptions
-	(*FieldOptions)(nil),                                // 30: google.protobuf.FieldOptions
-	(*OneofOptions)(nil),                                // 31: google.protobuf.OneofOptions
-	(*EnumOptions)(nil),                                 // 32: google.protobuf.EnumOptions
-	(*EnumValueOptions)(nil),                            // 33: google.protobuf.EnumValueOptions
-	(*ServiceOptions)(nil),                              // 34: google.protobuf.ServiceOptions
-	(*MethodOptions)(nil),                               // 35: google.protobuf.MethodOptions
-	(*UninterpretedOption)(nil),                         // 36: google.protobuf.UninterpretedOption
-	(*FeatureSet)(nil),                                  // 37: google.protobuf.FeatureSet
-	(*FeatureSetDefaults)(nil),                          // 38: google.protobuf.FeatureSetDefaults
-	(*SourceCodeInfo)(nil),                              // 39: google.protobuf.SourceCodeInfo
-	(*GeneratedCodeInfo)(nil),                           // 40: google.protobuf.GeneratedCodeInfo
-	(*DescriptorProto_ExtensionRange)(nil),              // 41: google.protobuf.DescriptorProto.ExtensionRange
-	(*DescriptorProto_ReservedRange)(nil),               // 42: google.protobuf.DescriptorProto.ReservedRange
-	(*ExtensionRangeOptions_Declaration)(nil),           // 43: google.protobuf.ExtensionRangeOptions.Declaration
-	(*EnumDescriptorProto_EnumReservedRange)(nil),       // 44: google.protobuf.EnumDescriptorProto.EnumReservedRange
-	(*FieldOptions_EditionDefault)(nil),                 // 45: google.protobuf.FieldOptions.EditionDefault
-	(*FieldOptions_FeatureSupport)(nil),                 // 46: google.protobuf.FieldOptions.FeatureSupport
-	(*UninterpretedOption_NamePart)(nil),                // 47: google.protobuf.UninterpretedOption.NamePart
-	(*FeatureSetDefaults_FeatureSetEditionDefault)(nil), // 48: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
-	(*SourceCodeInfo_Location)(nil),                     // 49: google.protobuf.SourceCodeInfo.Location
-	(*GeneratedCodeInfo_Annotation)(nil),                // 50: google.protobuf.GeneratedCodeInfo.Annotation
+	(Edition)(0),          // 0: google.protobuf.Edition
+	(SymbolVisibility)(0), // 1: google.protobuf.SymbolVisibility
+	(ExtensionRangeOptions_VerificationState)(0),              // 2: google.protobuf.ExtensionRangeOptions.VerificationState
+	(FieldDescriptorProto_Type)(0),                            // 3: google.protobuf.FieldDescriptorProto.Type
+	(FieldDescriptorProto_Label)(0),                           // 4: google.protobuf.FieldDescriptorProto.Label
+	(FileOptions_OptimizeMode)(0),                             // 5: google.protobuf.FileOptions.OptimizeMode
+	(FieldOptions_CType)(0),                                   // 6: google.protobuf.FieldOptions.CType
+	(FieldOptions_JSType)(0),                                  // 7: google.protobuf.FieldOptions.JSType
+	(FieldOptions_OptionRetention)(0),                         // 8: google.protobuf.FieldOptions.OptionRetention
+	(FieldOptions_OptionTargetType)(0),                        // 9: google.protobuf.FieldOptions.OptionTargetType
+	(MethodOptions_IdempotencyLevel)(0),                       // 10: google.protobuf.MethodOptions.IdempotencyLevel
+	(FeatureSet_FieldPresence)(0),                             // 11: google.protobuf.FeatureSet.FieldPresence
+	(FeatureSet_EnumType)(0),                                  // 12: google.protobuf.FeatureSet.EnumType
+	(FeatureSet_RepeatedFieldEncoding)(0),                     // 13: google.protobuf.FeatureSet.RepeatedFieldEncoding
+	(FeatureSet_Utf8Validation)(0),                            // 14: google.protobuf.FeatureSet.Utf8Validation
+	(FeatureSet_MessageEncoding)(0),                           // 15: google.protobuf.FeatureSet.MessageEncoding
+	(FeatureSet_JsonFormat)(0),                                // 16: google.protobuf.FeatureSet.JsonFormat
+	(FeatureSet_EnforceNamingStyle)(0),                        // 17: google.protobuf.FeatureSet.EnforceNamingStyle
+	(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)(0), // 18: google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+	(GeneratedCodeInfo_Annotation_Semantic)(0),                // 19: google.protobuf.GeneratedCodeInfo.Annotation.Semantic
+	(*FileDescriptorSet)(nil),                                 // 20: google.protobuf.FileDescriptorSet
+	(*FileDescriptorProto)(nil),                               // 21: google.protobuf.FileDescriptorProto
+	(*DescriptorProto)(nil),                                   // 22: google.protobuf.DescriptorProto
+	(*ExtensionRangeOptions)(nil),                             // 23: google.protobuf.ExtensionRangeOptions
+	(*FieldDescriptorProto)(nil),                              // 24: google.protobuf.FieldDescriptorProto
+	(*OneofDescriptorProto)(nil),                              // 25: google.protobuf.OneofDescriptorProto
+	(*EnumDescriptorProto)(nil),                               // 26: google.protobuf.EnumDescriptorProto
+	(*EnumValueDescriptorProto)(nil),                          // 27: google.protobuf.EnumValueDescriptorProto
+	(*ServiceDescriptorProto)(nil),                            // 28: google.protobuf.ServiceDescriptorProto
+	(*MethodDescriptorProto)(nil),                             // 29: google.protobuf.MethodDescriptorProto
+	(*FileOptions)(nil),                                       // 30: google.protobuf.FileOptions
+	(*MessageOptions)(nil),                                    // 31: google.protobuf.MessageOptions
+	(*FieldOptions)(nil),                                      // 32: google.protobuf.FieldOptions
+	(*OneofOptions)(nil),                                      // 33: google.protobuf.OneofOptions
+	(*EnumOptions)(nil),                                       // 34: google.protobuf.EnumOptions
+	(*EnumValueOptions)(nil),                                  // 35: google.protobuf.EnumValueOptions
+	(*ServiceOptions)(nil),                                    // 36: google.protobuf.ServiceOptions
+	(*MethodOptions)(nil),                                     // 37: google.protobuf.MethodOptions
+	(*UninterpretedOption)(nil),                               // 38: google.protobuf.UninterpretedOption
+	(*FeatureSet)(nil),                                        // 39: google.protobuf.FeatureSet
+	(*FeatureSetDefaults)(nil),                                // 40: google.protobuf.FeatureSetDefaults
+	(*SourceCodeInfo)(nil),                                    // 41: google.protobuf.SourceCodeInfo
+	(*GeneratedCodeInfo)(nil),                                 // 42: google.protobuf.GeneratedCodeInfo
+	(*DescriptorProto_ExtensionRange)(nil),                    // 43: google.protobuf.DescriptorProto.ExtensionRange
+	(*DescriptorProto_ReservedRange)(nil),                     // 44: google.protobuf.DescriptorProto.ReservedRange
+	(*ExtensionRangeOptions_Declaration)(nil),                 // 45: google.protobuf.ExtensionRangeOptions.Declaration
+	(*EnumDescriptorProto_EnumReservedRange)(nil),             // 46: google.protobuf.EnumDescriptorProto.EnumReservedRange
+	(*FieldOptions_EditionDefault)(nil),                       // 47: google.protobuf.FieldOptions.EditionDefault
+	(*FieldOptions_FeatureSupport)(nil),                       // 48: google.protobuf.FieldOptions.FeatureSupport
+	(*UninterpretedOption_NamePart)(nil),                      // 49: google.protobuf.UninterpretedOption.NamePart
+	(*FeatureSet_VisibilityFeature)(nil),                      // 50: google.protobuf.FeatureSet.VisibilityFeature
+	(*FeatureSetDefaults_FeatureSetEditionDefault)(nil),       // 51: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+	(*SourceCodeInfo_Location)(nil),                           // 52: google.protobuf.SourceCodeInfo.Location
+	(*GeneratedCodeInfo_Annotation)(nil),                      // 53: google.protobuf.GeneratedCodeInfo.Annotation
 }
 var file_google_protobuf_descriptor_proto_depIdxs = []int32{
-	19, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto
-	20, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto
-	24, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
-	26, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto
-	22, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
-	28, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions
-	39, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo
+	21, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto
+	22, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto
+	26, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
+	28, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto
+	24, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
+	30, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions
+	41, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo
 	0,  // 7: google.protobuf.FileDescriptorProto.edition:type_name -> google.protobuf.Edition
-	22, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto
-	22, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
-	20, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto
-	24, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
-	41, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange
-	23, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto
-	29, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions
-	42, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange
-	36, // 16: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	43, // 17: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration
-	37, // 18: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet
-	1,  // 19: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState
-	3,  // 20: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label
-	2,  // 21: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type
-	30, // 22: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions
-	31, // 23: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions
-	25, // 24: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto
-	32, // 25: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions
-	44, // 26: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange
-	33, // 27: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions
-	27, // 28: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto
-	34, // 29: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions
-	35, // 30: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions
-	4,  // 31: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode
-	37, // 32: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 33: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	37, // 34: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 35: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	5,  // 36: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType
-	6,  // 37: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType
-	7,  // 38: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention
-	8,  // 39: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType
-	45, // 40: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault
-	37, // 41: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet
-	46, // 42: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport
-	36, // 43: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	37, // 44: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 45: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	37, // 46: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 47: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	37, // 48: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet
-	46, // 49: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport
-	36, // 50: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	37, // 51: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 52: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	9,  // 53: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel
-	37, // 54: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet
-	36, // 55: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	47, // 56: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart
-	10, // 57: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence
-	11, // 58: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType
-	12, // 59: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding
-	13, // 60: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation
-	14, // 61: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding
-	15, // 62: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat
-	16, // 63: google.protobuf.FeatureSet.enforce_naming_style:type_name -> google.protobuf.FeatureSet.EnforceNamingStyle
-	48, // 64: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
-	0,  // 65: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition
-	0,  // 66: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition
-	49, // 67: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location
-	50, // 68: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation
-	21, // 69: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions
-	0,  // 70: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition
-	0,  // 71: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition
-	0,  // 72: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition
-	0,  // 73: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition
-	0,  // 74: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition
-	37, // 75: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet
-	37, // 76: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet
-	17, // 77: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic
-	78, // [78:78] is the sub-list for method output_type
-	78, // [78:78] is the sub-list for method input_type
-	78, // [78:78] is the sub-list for extension type_name
-	78, // [78:78] is the sub-list for extension extendee
-	0,  // [0:78] is the sub-list for field type_name
+	24, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto
+	24, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
+	22, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto
+	26, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
+	43, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange
+	25, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto
+	31, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions
+	44, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange
+	1,  // 16: google.protobuf.DescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility
+	38, // 17: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	45, // 18: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration
+	39, // 19: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet
+	2,  // 20: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState
+	4,  // 21: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label
+	3,  // 22: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type
+	32, // 23: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions
+	33, // 24: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions
+	27, // 25: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto
+	34, // 26: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions
+	46, // 27: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange
+	1,  // 28: google.protobuf.EnumDescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility
+	35, // 29: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions
+	29, // 30: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto
+	36, // 31: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions
+	37, // 32: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions
+	5,  // 33: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode
+	39, // 34: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 35: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	39, // 36: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 37: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	6,  // 38: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType
+	7,  // 39: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType
+	8,  // 40: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention
+	9,  // 41: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType
+	47, // 42: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault
+	39, // 43: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet
+	48, // 44: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport
+	38, // 45: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	39, // 46: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 47: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	39, // 48: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 49: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	39, // 50: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet
+	48, // 51: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport
+	38, // 52: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	39, // 53: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 54: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	10, // 55: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel
+	39, // 56: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet
+	38, // 57: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
+	49, // 58: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart
+	11, // 59: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence
+	12, // 60: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType
+	13, // 61: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding
+	14, // 62: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation
+	15, // 63: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding
+	16, // 64: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat
+	17, // 65: google.protobuf.FeatureSet.enforce_naming_style:type_name -> google.protobuf.FeatureSet.EnforceNamingStyle
+	18, // 66: google.protobuf.FeatureSet.default_symbol_visibility:type_name -> google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+	51, // 67: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+	0,  // 68: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition
+	0,  // 69: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition
+	52, // 70: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location
+	53, // 71: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation
+	23, // 72: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions
+	0,  // 73: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition
+	0,  // 74: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition
+	0,  // 75: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition
+	0,  // 76: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition
+	0,  // 77: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition
+	39, // 78: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet
+	39, // 79: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet
+	19, // 80: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic
+	81, // [81:81] is the sub-list for method output_type
+	81, // [81:81] is the sub-list for method input_type
+	81, // [81:81] is the sub-list for extension type_name
+	81, // [81:81] is the sub-list for extension extendee
+	0,  // [0:81] is the sub-list for field type_name
 }
 
 func init() { file_google_protobuf_descriptor_proto_init() }
@@ -4983,8 +5218,8 @@
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)),
-			NumEnums:      18,
-			NumMessages:   33,
+			NumEnums:      20,
+			NumMessages:   34,
 			NumExtensions: 0,
 			NumServices:   0,
 		},