diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index ea9a9a2..17cc8a2 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -69,13 +69,13 @@
 }
 
 type AnnotationsTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	AnnotationsTestField *string                `protobuf:"bytes,1,opt,name=AnnotationsTestField" json:"AnnotationsTestField,omitempty"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_weak_M    struct{} `protobuf:"bytes,2,opt,name=m,weak=fmt.M" json:"m,omitempty"`
 	weakFields    protoimpl.WeakFields
 	unknownFields protoimpl.UnknownFields
-
-	AnnotationsTestField *string  `protobuf:"bytes,1,opt,name=AnnotationsTestField" json:"AnnotationsTestField,omitempty"`
-	XXX_weak_M           struct{} `protobuf:"bytes,2,opt,name=m,weak=fmt.M" json:"m,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *AnnotationsTestMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
index 63f601e..6aec448 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
@@ -1 +1 @@
-annotation:{path:5 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:512 end:531} annotation:{path:5 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:548 end:595} annotation:{path:4 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:1954 end:1976} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:2136 end:2156} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:2256 end:2266} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3334 end:3357} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3500 end:3504} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3667 end:3671 semantic:SET}
\ No newline at end of file
+annotation:{path:5 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:512 end:531} annotation:{path:5 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:548 end:595} annotation:{path:4 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:1954 end:1976} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:2053 end:2073} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:2256 end:2266} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3437 end:3460} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3603 end:3607} annotation:{path:4 path:0 path:2 path:1 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3770 end:3774 semantic:SET}
\ No newline at end of file
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
index 06b292e..29e69cd 100644
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
@@ -77,19 +77,18 @@
 
 // COMMENT: Message1.Leading
 type Message1 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// COMMENT: Field1A.Leading
 	Field1A *string `protobuf:"bytes,1,opt,name=Field1A" json:"Field1A,omitempty"` // COMMENT: Field1A.Trailing
 	// COMMENT: Oneof1A.Leading
 	//
-	// Types that are assignable to Oneof1A:
+	// Types that are valid to be assigned to Oneof1A:
 	//
 	//	*Message1_Oneof1AField1
-	Oneof1A isMessage1_Oneof1A `protobuf_oneof:"Oneof1a"`
+	Oneof1A         isMessage1_Oneof1A `protobuf_oneof:"Oneof1a"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Message1) Reset() {
@@ -129,16 +128,18 @@
 	return ""
 }
 
-func (m *Message1) GetOneof1A() isMessage1_Oneof1A {
-	if m != nil {
-		return m.Oneof1A
+func (x *Message1) GetOneof1A() isMessage1_Oneof1A {
+	if x != nil {
+		return x.Oneof1A
 	}
 	return nil
 }
 
 func (x *Message1) GetOneof1AField1() string {
-	if x, ok := x.GetOneof1A().(*Message1_Oneof1AField1); ok {
-		return x.Oneof1AField1
+	if x != nil {
+		if x, ok := x.Oneof1A.(*Message1_Oneof1AField1); ok {
+			return x.Oneof1AField1
+		}
 	}
 	return ""
 }
@@ -156,9 +157,9 @@
 
 // COMMENT: Message2
 type Message2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message2) Reset() {
@@ -193,9 +194,9 @@
 
 // COMMENT: Message1A.Leading
 type Message1_Message1A struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message1_Message1A) Reset() {
@@ -230,9 +231,9 @@
 
 // COMMENT: Message1B
 type Message1_Message1B struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message1_Message1B) Reset() {
@@ -267,9 +268,9 @@
 
 // COMMENT: Message2A
 type Message2_Message2A struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message2_Message2A) Reset() {
@@ -304,9 +305,9 @@
 
 // COMMENT: Message2B
 type Message2_Message2B struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message2_Message2B) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
index 017d5f6..215c59b 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -61,12 +61,11 @@
 
 // Deprecated: The entire proto file cmd/protoc-gen-go/testdata/comments/deprecated.proto is marked as deprecated.
 type DeprecatedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Deprecated: The entire proto file cmd/protoc-gen-go/testdata/comments/deprecated.proto is marked as deprecated.
 	DeprecatedField string `protobuf:"bytes,1,opt,name=deprecated_field,json=deprecatedField,proto3" json:"deprecated_field,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *DeprecatedMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/enumprefix/enumprefix.pb.go b/cmd/protoc-gen-go/testdata/enumprefix/enumprefix.pb.go
index d9b7f4e..59ab254 100644
--- a/cmd/protoc-gen-go/testdata/enumprefix/enumprefix.pb.go
+++ b/cmd/protoc-gen-go/testdata/enumprefix/enumprefix.pb.go
@@ -12,7 +12,6 @@
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	_ "google.golang.org/protobuf/types/gofeaturespb"
 	reflect "reflect"
-	sync "sync"
 )
 
 type Strip int32
@@ -56,11 +55,6 @@
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Use Strip.Descriptor instead.
-func (Strip) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescGZIP(), []int{0}
-}
-
 type Both int32
 
 const (
@@ -108,11 +102,6 @@
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Use Both.Descriptor instead.
-func (Both) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescGZIP(), []int{1}
-}
-
 type BothNoPrefix int32
 
 const (
@@ -154,11 +143,6 @@
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Use BothNoPrefix.Descriptor instead.
-func (BothNoPrefix) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescGZIP(), []int{2}
-}
-
 type BothButOne int32
 
 const (
@@ -205,11 +189,6 @@
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Use BothButOne.Descriptor instead.
-func (BothButOne) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescGZIP(), []int{3}
-}
-
 var File_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDesc = []byte{
@@ -241,18 +220,6 @@
 	0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe9, 0x07,
 }
 
-var (
-	file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescData = file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_rawDescData
-}
-
 var file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
 var file_cmd_protoc_gen_go_testdata_enumprefix_enumprefix_proto_goTypes = []any{
 	(Strip)(0),        // 0: goproto.protoc.enumprefix.Strip
diff --git a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
index 34fb0a1..daa1440 100644
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
@@ -15,12 +15,11 @@
 )
 
 type BaseMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	Field           *string                `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	Field *string `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *BaseMessage) Reset() {
@@ -61,10 +60,10 @@
 }
 
 type MessageSetWireFormatMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *MessageSetWireFormatMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
index 1f0624a..98273b7 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -70,11 +70,10 @@
 }
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Data          []byte                 `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Data []byte `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
@@ -115,11 +114,10 @@
 }
 
 type ExtensionGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ExtensionGroup *string `protobuf:"bytes,120,opt,name=extension_group,json=extensionGroup" json:"extension_group,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	ExtensionGroup *string                `protobuf:"bytes,120,opt,name=extension_group,json=extensionGroup" json:"extension_group,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *ExtensionGroup) Reset() {
@@ -161,9 +159,9 @@
 
 // Extend in the scope of another type.
 type ExtendingMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtendingMessage) Reset() {
@@ -197,11 +195,10 @@
 }
 
 type RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RepeatedXGroup []string `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	RepeatedXGroup []string               `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *RepeatedGroup) Reset() {
@@ -243,10 +240,10 @@
 
 // An extension of an extension.
 type Extendable struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Extendable) Reset() {
@@ -281,9 +278,9 @@
 
 // Message set wire format.
 type MessageSetWireFormatExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MessageSetWireFormatExtension) Reset() {
@@ -317,9 +314,9 @@
 }
 
 type Message_M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message_M) Reset() {
@@ -353,9 +350,9 @@
 }
 
 type ExtendingMessage_ExtendingMessageSubmessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtendingMessage_ExtendingMessageSubmessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
index 149963b..6455709 100644
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
@@ -15,11 +15,10 @@
 )
 
 type ExtraMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Data          []byte                 `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Data []byte `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtraMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
index b7349d3..8182268 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -59,9 +59,9 @@
 }
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
index 74639fc..2985530 100644
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
+++ b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
@@ -20,10 +20,7 @@
 // This exists to demonstrate the current behavior and catch unintended
 // changes in it.
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Various CamelCase conversions.
 	FieldOne   *string `protobuf:"bytes,1,opt,name=field_one,json=fieldOne" json:"field_one,omitempty"`
 	FieldTwo   *string `protobuf:"bytes,2,opt,name=FieldTwo" json:"FieldTwo,omitempty"`
@@ -44,23 +41,25 @@
 	Name_   *string `protobuf:"bytes,31,opt,name=name" json:"name,omitempty"`
 	// Oneof that conflicts with its first field: The oneof is renamed.
 	//
-	// Types that are assignable to OneofConflictA_:
+	// Types that are valid to be assigned to OneofConflictA_:
 	//
 	//	*Message_OneofConflictA
 	OneofConflictA_ isMessage_OneofConflictA_ `protobuf_oneof:"oneof_conflict_a"`
 	// Oneof that conflicts with its second field: The field is renamed.
 	//
-	// Types that are assignable to OneofConflictB:
+	// Types that are valid to be assigned to OneofConflictB:
 	//
 	//	*Message_OneofNoConflict
 	//	*Message_OneofConflictB_
 	OneofConflictB isMessage_OneofConflictB `protobuf_oneof:"oneof_conflict_b"`
 	// Oneof with a field name that conflicts with a nested message.
 	//
-	// Types that are assignable to OneofConflictC:
+	// Types that are valid to be assigned to OneofConflictC:
 	//
 	//	*Message_OneofMessageConflict_
 	OneofConflictC isMessage_OneofConflictC `protobuf_oneof:"oneof_conflict_c"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
@@ -191,51 +190,59 @@
 	return ""
 }
 
-func (m *Message) GetOneofConflictA_() isMessage_OneofConflictA_ {
-	if m != nil {
-		return m.OneofConflictA_
+func (x *Message) GetOneofConflictA_() isMessage_OneofConflictA_ {
+	if x != nil {
+		return x.OneofConflictA_
 	}
 	return nil
 }
 
 func (x *Message) GetOneofConflictA() string {
-	if x, ok := x.GetOneofConflictA_().(*Message_OneofConflictA); ok {
-		return x.OneofConflictA
+	if x != nil {
+		if x, ok := x.OneofConflictA_.(*Message_OneofConflictA); ok {
+			return x.OneofConflictA
+		}
 	}
 	return ""
 }
 
-func (m *Message) GetOneofConflictB() isMessage_OneofConflictB {
-	if m != nil {
-		return m.OneofConflictB
+func (x *Message) GetOneofConflictB() isMessage_OneofConflictB {
+	if x != nil {
+		return x.OneofConflictB
 	}
 	return nil
 }
 
 func (x *Message) GetOneofNoConflict() string {
-	if x, ok := x.GetOneofConflictB().(*Message_OneofNoConflict); ok {
-		return x.OneofNoConflict
+	if x != nil {
+		if x, ok := x.OneofConflictB.(*Message_OneofNoConflict); ok {
+			return x.OneofNoConflict
+		}
 	}
 	return ""
 }
 
 func (x *Message) GetOneofConflictB_() string {
-	if x, ok := x.GetOneofConflictB().(*Message_OneofConflictB_); ok {
-		return x.OneofConflictB_
+	if x != nil {
+		if x, ok := x.OneofConflictB.(*Message_OneofConflictB_); ok {
+			return x.OneofConflictB_
+		}
 	}
 	return ""
 }
 
-func (m *Message) GetOneofConflictC() isMessage_OneofConflictC {
-	if m != nil {
-		return m.OneofConflictC
+func (x *Message) GetOneofConflictC() isMessage_OneofConflictC {
+	if x != nil {
+		return x.OneofConflictC
 	}
 	return nil
 }
 
 func (x *Message) GetOneofMessageConflict() string {
-	if x, ok := x.GetOneofConflictC().(*Message_OneofMessageConflict_); ok {
-		return x.OneofMessageConflict
+	if x != nil {
+		if x, ok := x.OneofConflictC.(*Message_OneofMessageConflict_); ok {
+			return x.OneofMessageConflict
+		}
 	}
 	return ""
 }
@@ -277,9 +284,9 @@
 func (*Message_OneofMessageConflict_) isMessage_OneofConflictC() {}
 
 type Message_OneofMessageConflict struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message_OneofMessageConflict) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/gen_test.go b/cmd/protoc-gen-go/testdata/gen_test.go
index 8724e4a..234019b 100644
--- a/cmd/protoc-gen-go/testdata/gen_test.go
+++ b/cmd/protoc-gen-go/testdata/gen_test.go
@@ -24,6 +24,7 @@
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_2"
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_b_1"
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/issue780_oneof_conflict"
+	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash"
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nopackage"
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2"
 	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto3"
diff --git a/cmd/protoc-gen-go/testdata/import_public/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
index 51f1170..82cbab4 100644
--- a/cmd/protoc-gen-go/testdata/import_public/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
@@ -54,13 +54,12 @@
 var E_ExtensionField = sub.E_ExtensionField
 
 type Public struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	M             *sub.M                 `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
+	E             *sub.E                 `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
+	Local         *Local                 `protobuf:"bytes,3,opt,name=local" json:"local,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	M     *sub.M `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
-	E     *sub.E `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
-	Local *Local `protobuf:"bytes,3,opt,name=local" json:"local,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Public) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/import_public/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
index f12fe41..b9939c6 100644
--- a/cmd/protoc-gen-go/testdata/import_public/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
@@ -16,12 +16,11 @@
 )
 
 type Local struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	M             *sub.M                 `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
+	E             *sub.E                 `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	M *sub.M `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
-	E *sub.E `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Local) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/import_public/c.pb.go b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
index 8fd39ef..db0d9cf 100644
--- a/cmd/protoc-gen-go/testdata/import_public/c.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
@@ -16,15 +16,14 @@
 )
 
 type UsingPublicImport struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Local is declared in b.proto, which is a public import of a.proto.
 	Local *Local `protobuf:"bytes,1,opt,name=local" json:"local,omitempty"`
 	// Sub2Message is declared in sub2/a.proto, which is a public import of
 	// sub/a.proto, which is a public import of a.proto.
-	Sub2 *sub2.Sub2Message `protobuf:"bytes,2,opt,name=sub2" json:"sub2,omitempty"` // declared in sub2/a.proto
+	Sub2          *sub2.Sub2Message `protobuf:"bytes,2,opt,name=sub2" json:"sub2,omitempty"` // declared in sub2/a.proto
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UsingPublicImport) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
index a6de1af..1395845 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
@@ -180,21 +180,20 @@
 }
 
 type M struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Field using a type in the same Go package, but a different source file.
 	M2 *M2      `protobuf:"bytes,1,opt,name=m2" json:"m2,omitempty"`
 	S  *string  `protobuf:"bytes,4,opt,name=s,def=default" json:"s,omitempty"`
 	B  []byte   `protobuf:"bytes,5,opt,name=b,def=default" json:"b,omitempty"`
 	F  *float64 `protobuf:"fixed64,6,opt,name=f,def=nan" json:"f,omitempty"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*M_OneofInt32
 	//	*M_OneofInt64
-	OneofField isM_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField      isM_OneofField `protobuf_oneof:"oneof_field"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 // Default values for M fields.
@@ -266,23 +265,27 @@
 	return Default_M_F
 }
 
-func (m *M) GetOneofField() isM_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *M) GetOneofField() isM_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *M) GetOneofInt32() int32 {
-	if x, ok := x.GetOneofField().(*M_OneofInt32); ok {
-		return x.OneofInt32
+	if x != nil {
+		if x, ok := x.OneofField.(*M_OneofInt32); ok {
+			return x.OneofInt32
+		}
 	}
 	return 0
 }
 
 func (x *M) GetOneofInt64() int64 {
-	if x, ok := x.GetOneofField().(*M_OneofInt64); ok {
-		return x.OneofInt64
+	if x != nil {
+		if x, ok := x.OneofField.(*M_OneofInt64); ok {
+			return x.OneofInt64
+		}
 	}
 	return 0
 }
@@ -304,15 +307,14 @@
 func (*M_OneofInt64) isM_OneofField() {}
 
 type M_Submessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to SubmessageOneofField:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to SubmessageOneofField:
 	//
 	//	*M_Submessage_SubmessageOneofInt32
 	//	*M_Submessage_SubmessageOneofInt64
 	SubmessageOneofField isM_Submessage_SubmessageOneofField `protobuf_oneof:"submessage_oneof_field"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
 func (x *M_Submessage) Reset() {
@@ -345,23 +347,27 @@
 	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0}
 }
 
-func (m *M_Submessage) GetSubmessageOneofField() isM_Submessage_SubmessageOneofField {
-	if m != nil {
-		return m.SubmessageOneofField
+func (x *M_Submessage) GetSubmessageOneofField() isM_Submessage_SubmessageOneofField {
+	if x != nil {
+		return x.SubmessageOneofField
 	}
 	return nil
 }
 
 func (x *M_Submessage) GetSubmessageOneofInt32() int32 {
-	if x, ok := x.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt32); ok {
-		return x.SubmessageOneofInt32
+	if x != nil {
+		if x, ok := x.SubmessageOneofField.(*M_Submessage_SubmessageOneofInt32); ok {
+			return x.SubmessageOneofInt32
+		}
 	}
 	return 0
 }
 
 func (x *M_Submessage) GetSubmessageOneofInt64() int64 {
-	if x, ok := x.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt64); ok {
-		return x.SubmessageOneofInt64
+	if x != nil {
+		if x, ok := x.SubmessageOneofField.(*M_Submessage_SubmessageOneofInt64); ok {
+			return x.SubmessageOneofInt64
+		}
 	}
 	return 0
 }
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
index b1874e8..b5cee9d 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
index cb4c1f4..4ec0b6e 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
@@ -15,9 +15,9 @@
 )
 
 type Sub2Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Sub2Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
index 89e9ab4..4852f3f 100644
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
index 8fa4f34..3cc42cf 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
@@ -58,9 +58,9 @@
 }
 
 type M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M1) Reset() {
@@ -94,11 +94,10 @@
 }
 
 type M1_1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	M1            *M1                    `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	M1 *M1 `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M1_1) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
index a5a3ca3..d40ae22 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
index 7b19da6..cf09ae7 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M3) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
index b2ef55c..8f69ab5 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M4 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M4) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
index 2a6676f..57cf49a 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M1) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
index 64ac0fa..0578a0e 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
@@ -15,9 +15,9 @@
 )
 
 type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *M2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
index c01ce68..b3528da 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
@@ -16,11 +16,10 @@
 )
 
 type A1M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	F             *test_a_1.M1           `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	F *test_a_1.M1 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *A1M1) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
index f1a7899..1044b9b 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
@@ -16,11 +16,10 @@
 )
 
 type A1M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	F             *test_a_1.M2           `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	F *test_a_1.M2 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *A1M2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
index b5f68aa..c2ce590 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
@@ -19,15 +19,14 @@
 )
 
 type All struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Am1           *test_a_1.M1           `protobuf:"bytes,1,opt,name=am1,proto3" json:"am1,omitempty"`
+	Am2           *test_a_1.M2           `protobuf:"bytes,2,opt,name=am2,proto3" json:"am2,omitempty"`
+	Bm1           *test_b_1.M1           `protobuf:"bytes,5,opt,name=bm1,proto3" json:"bm1,omitempty"`
+	Bm2           *test_b_1.M2           `protobuf:"bytes,6,opt,name=bm2,proto3" json:"bm2,omitempty"`
+	Fmt           *fmt.M                 `protobuf:"bytes,7,opt,name=fmt,proto3" json:"fmt,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Am1 *test_a_1.M1 `protobuf:"bytes,1,opt,name=am1,proto3" json:"am1,omitempty"`
-	Am2 *test_a_1.M2 `protobuf:"bytes,2,opt,name=am2,proto3" json:"am2,omitempty"`
-	Bm1 *test_b_1.M1 `protobuf:"bytes,5,opt,name=bm1,proto3" json:"bm1,omitempty"`
-	Bm2 *test_b_1.M2 `protobuf:"bytes,6,opt,name=bm2,proto3" json:"bm2,omitempty"`
-	Fmt *fmt.M       `protobuf:"bytes,7,opt,name=fmt,proto3" json:"fmt,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *All) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
index 8efc16d..c72c5b2 100644
--- a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
+++ b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
@@ -15,14 +15,13 @@
 )
 
 type Foo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Bar:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to Bar:
 	//
 	//	*Foo_GetBar
-	Bar isFoo_Bar `protobuf_oneof:"bar"`
+	Bar           isFoo_Bar `protobuf_oneof:"bar"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Foo) Reset() {
@@ -55,16 +54,18 @@
 	return file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Foo) GetBar() isFoo_Bar {
-	if m != nil {
-		return m.Bar
+func (x *Foo) GetBar() isFoo_Bar {
+	if x != nil {
+		return x.Bar
 	}
 	return nil
 }
 
 func (x *Foo) GetGetBar() string {
-	if x, ok := x.GetBar().(*Foo_GetBar); ok {
-		return x.GetBar
+	if x != nil {
+		if x, ok := x.Bar.(*Foo_GetBar); ok {
+			return x.GetBar
+		}
 	}
 	return ""
 }
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go
new file mode 100644
index 0000000..b76c9c0
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go
@@ -0,0 +1,3803 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid.proto
+
+package test_name_clash_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type M1 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo     *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M1) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M1) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M1) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M1) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M1) GetGetGetFoo() int32 {
+	if x != nil && x.GetGetFoo != nil {
+		return *x.GetGetFoo
+	}
+	return 0
+}
+
+func (x *M1) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M1) Set_GetFoo(v int32) {
+	x.GetFoo_ = &v
+}
+
+func (x *M1) SetGetGetFoo(v int32) {
+	x.GetGetFoo = &v
+}
+
+func (x *M1) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M1) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M1) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M1) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M1) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M1) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+type M1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo       *int32
+	GetFoo    *int32
+	GetGetFoo *int32
+}
+
+func (b0 M1_builder) Build() *M1 {
+	m0 := &M1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.GetFoo_ = b.GetFoo
+	x.GetGetFoo = b.GetGetFoo
+	return m0
+}
+
+type M2 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo     *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	GetFoo_       *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M2) GetGetGetFoo() int32 {
+	if x != nil && x.GetGetFoo != nil {
+		return *x.GetGetFoo
+	}
+	return 0
+}
+
+func (x *M2) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M2) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M2) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M2) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M2) SetGetGetFoo(v int32) {
+	x.GetGetFoo = &v
+}
+
+func (x *M2) Set_GetFoo(v int32) {
+	x.GetFoo_ = &v
+}
+
+func (x *M2) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M2) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M2) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M2) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M2) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M2) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M2) Clear_Foo() {
+	x.Foo = nil
+}
+
+type M2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo *int32
+	GetFoo    *int32
+	Foo       *int32
+}
+
+func (b0 M2_builder) Build() *M2 {
+	m0 := &M2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetGetFoo = b.GetGetFoo
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type M3 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo        *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo_    *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo_          *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M3) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M3) GetGetFoo() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M3) GetGetGetFoo() int32 {
+	if x != nil && x.GetGetFoo_ != nil {
+		return *x.GetGetFoo_
+	}
+	return 0
+}
+
+// Deprecated: Use GetGetGetFoo instead.
+func (x *M3) GetGetGetFoo_() int32 {
+	return x.GetGetGetFoo()
+}
+
+func (x *M3) Get_Foo() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M3) GetFoo_() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M3) Set_GetFoo(v int32) {
+	x.GetFoo = &v
+}
+
+func (x *M3) SetGetGetFoo(v int32) {
+	x.GetGetFoo_ = &v
+}
+
+func (x *M3) Set_Foo(v int32) {
+	x.Foo_ = &v
+}
+
+func (x *M3) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M3) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo_ != nil
+}
+
+func (x *M3) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M3) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M3) ClearGetGetFoo() {
+	x.GetGetFoo_ = nil
+}
+
+func (x *M3) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+type M3_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo    *int32
+	GetGetFoo *int32
+	Foo       *int32
+}
+
+func (b0 M3_builder) Build() *M3 {
+	m0 := &M3{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	x.GetGetFoo_ = b.GetGetFoo
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type M4 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetFoo_:
+	//
+	//	*M4_GetGetGetFoo
+	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
+	Foo_          *int32          `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M4) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M4) GetGetFoo() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M4) GetGetGetFoo_() isM4_GetGetFoo_ {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) Get_Foo() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M4) GetFoo_() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M4) Set_GetFoo(v int32) {
+	x.GetFoo = &v
+}
+
+func (x *M4) SetGetGetGetFoo(v int32) {
+	x.GetGetFoo_ = &M4_GetGetGetFoo{v}
+}
+
+func (x *M4) Set_Foo(v int32) {
+	x.Foo_ = &v
+}
+
+func (x *M4) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M4) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo_ != nil
+}
+
+func (x *M4) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo_.(*M4_GetGetGetFoo)
+	return ok
+}
+
+func (x *M4) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M4) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M4) ClearGetGetFoo() {
+	x.GetGetFoo_ = nil
+}
+
+func (x *M4) ClearGetGetGetFoo() {
+	if _, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+		x.GetGetFoo_ = nil
+	}
+}
+
+func (x *M4) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+const M4_GetGetFoo__not_set_case case_M4_GetGetFoo_ = 0
+const M4_GetGetGetFoo_case case_M4_GetGetFoo_ = 3
+
+func (x *M4) WhichGetGetFoo() case_M4_GetGetFoo_ {
+	if x == nil {
+		return M4_GetGetFoo__not_set_case
+	}
+	switch x.GetGetFoo_.(type) {
+	case *M4_GetGetGetFoo:
+		return M4_GetGetGetFoo_case
+	default:
+		return M4_GetGetFoo__not_set_case
+	}
+}
+
+type M4_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *int32
+	// Fields of oneof GetGetFoo_:
+	GetGetGetFoo *int32
+	// -- end of GetGetFoo_
+	Foo *int32
+}
+
+func (b0 M4_builder) Build() *M4 {
+	m0 := &M4{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	if b.GetGetGetFoo != nil {
+		x.GetGetFoo_ = &M4_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type case_M4_GetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M4_GetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[3].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type M4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetGetFoo:
+	//
+	//	*M5_GetGetFoo_
+	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
+	Foo_          *int32            `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M5) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M5) GetGetFoo() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M5) GetGetGetGetFoo() isM5_GetGetGetFoo {
+	if x != nil {
+		return x.GetGetGetFoo
+	}
+	return nil
+}
+
+func (x *M5) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M5) GetGetGetFoo_() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M5) Get_Foo() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M5) GetFoo_() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M5) Set_GetFoo(v int32) {
+	x.GetFoo = &v
+}
+
+func (x *M5) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo = &M5_GetGetFoo_{v}
+}
+
+func (x *M5) Set_Foo(v int32) {
+	x.Foo_ = &v
+}
+
+func (x *M5) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M5) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo != nil
+}
+
+func (x *M5) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo.(*M5_GetGetFoo_)
+	return ok
+}
+
+func (x *M5) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M5) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M5) ClearGetGetGetFoo() {
+	x.GetGetGetFoo = nil
+}
+
+func (x *M5) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+		x.GetGetGetFoo = nil
+	}
+}
+
+func (x *M5) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+const M5_GetGetGetFoo_not_set_case case_M5_GetGetGetFoo = 0
+const M5_GetGetFoo__case case_M5_GetGetGetFoo = 3
+
+func (x *M5) WhichGetGetGetFoo() case_M5_GetGetGetFoo {
+	if x == nil {
+		return M5_GetGetGetFoo_not_set_case
+	}
+	switch x.GetGetGetFoo.(type) {
+	case *M5_GetGetFoo_:
+		return M5_GetGetFoo__case
+	default:
+		return M5_GetGetGetFoo_not_set_case
+	}
+}
+
+type M5_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *int32
+	// Fields of oneof GetGetGetFoo:
+	GetGetFoo *int32
+	// -- end of GetGetGetFoo
+	Foo *int32
+}
+
+func (b0 M5_builder) Build() *M5 {
+	m0 := &M5{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo = &M5_GetGetFoo_{*b.GetGetFoo}
+	}
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type case_M5_GetGetGetFoo protoreflect.FieldNumber
+
+func (x case_M5_GetGetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type M5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M6_GetGetGetFoo
+	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	GetFoo_       *int32         `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32         `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M6) GetGetGetFoo() isM6_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M6) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M6) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M6) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M6) SetGetGetGetFoo(v int32) {
+	x.GetGetFoo = &M6_GetGetGetFoo{v}
+}
+
+func (x *M6) Set_GetFoo(v int32) {
+	x.GetFoo_ = &v
+}
+
+func (x *M6) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M6) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M6) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M6_GetGetGetFoo)
+	return ok
+}
+
+func (x *M6) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M6) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M6) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M6) ClearGetGetGetFoo() {
+	if _, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M6) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M6) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M6_GetGetFoo_not_set_case case_M6_GetGetFoo = 0
+const M6_GetGetGetFoo_case case_M6_GetGetFoo = 3
+
+func (x *M6) WhichGetGetFoo() case_M6_GetGetFoo {
+	if x == nil {
+		return M6_GetGetFoo_not_set_case
+	}
+	switch x.GetGetFoo.(type) {
+	case *M6_GetGetGetFoo:
+		return M6_GetGetGetFoo_case
+	default:
+		return M6_GetGetFoo_not_set_case
+	}
+}
+
+type M6_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+
+	// Fields of oneof GetGetFoo:
+	GetGetGetFoo *int32
+	// -- end of GetGetFoo
+	GetFoo *int32
+	Foo    *int32
+}
+
+func (b0 M6_builder) Build() *M6 {
+	m0 := &M6{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetGetFoo != nil {
+		x.GetGetFoo = &M6_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M6_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M6_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[5].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type M6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	Bar                   | -                  | -    | Bar
+	//	GetFoo                | foo                | 1    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M7_Bar
+	//	*M7_GetFoo_
+	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	Foo           *int32         `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M7) GetGetGetFoo() isM7_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) Get_GetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M7) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M7) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M7) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M7) SetBar(v bool) {
+	x.GetGetFoo = &M7_Bar{v}
+}
+
+func (x *M7) Set_GetFoo(v int32) {
+	x.GetGetFoo = &M7_GetFoo_{v}
+}
+
+func (x *M7) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M7) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M7) HasBar() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M7_Bar)
+	return ok
+}
+
+func (x *M7) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M7_GetFoo_)
+	return ok
+}
+
+func (x *M7) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M7) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M7) ClearBar() {
+	if _, ok := x.GetGetFoo.(*M7_Bar); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M7) Clear_GetFoo() {
+	if _, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M7) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M7_GetGetFoo_not_set_case case_M7_GetGetFoo = 0
+const M7_Bar_case case_M7_GetGetFoo = 4
+const M7_GetFoo__case case_M7_GetGetFoo = 3
+
+func (x *M7) WhichGetGetFoo() case_M7_GetGetFoo {
+	if x == nil {
+		return M7_GetGetFoo_not_set_case
+	}
+	switch x.GetGetFoo.(type) {
+	case *M7_Bar:
+		return M7_Bar_case
+	case *M7_GetFoo_:
+		return M7_GetFoo__case
+	default:
+		return M7_GetGetFoo_not_set_case
+	}
+}
+
+type M7_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  Bar                   | -                  | -    | Bar
+	//  GetFoo                | foo                | 1    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+
+	// Fields of oneof GetGetFoo:
+	Bar    *bool
+	GetFoo *int32
+	// -- end of GetGetFoo
+	Foo *int32
+}
+
+func (b0 M7_builder) Build() *M7 {
+	m0 := &M7{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Bar != nil {
+		x.GetGetFoo = &M7_Bar{*b.Bar}
+	}
+	if b.GetFoo != nil {
+		x.GetGetFoo = &M7_GetFoo_{*b.GetFoo}
+	}
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M7_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M7_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[6].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type M7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type M7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M7_Bar) isM7_GetGetFoo() {}
+
+func (*M7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M8_GetGetFoo
+	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	GetFoo_       *int32             `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32             `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M8) GetGetGetGetFoo_() isM8_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M8) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M8) GetGetGetFoo() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M8) Get_GetFoo() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M8) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M8) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M8) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M8) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo_ = &M8_GetGetFoo{v}
+}
+
+func (x *M8) Set_GetFoo(v int32) {
+	x.GetFoo_ = &v
+}
+
+func (x *M8) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M8) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo_ != nil
+}
+
+func (x *M8) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M8_GetGetFoo)
+	return ok
+}
+
+func (x *M8) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M8) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M8) ClearGetGetGetFoo() {
+	x.GetGetGetFoo_ = nil
+}
+
+func (x *M8) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M8) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M8) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M8_GetGetGetFoo__not_set_case case_M8_GetGetGetFoo_ = 0
+const M8_GetGetFoo_case case_M8_GetGetGetFoo_ = 3
+
+func (x *M8) WhichGetGetGetFoo() case_M8_GetGetGetFoo_ {
+	if x == nil {
+		return M8_GetGetGetFoo__not_set_case
+	}
+	switch x.GetGetGetFoo_.(type) {
+	case *M8_GetGetFoo:
+		return M8_GetGetFoo_case
+	default:
+		return M8_GetGetGetFoo__not_set_case
+	}
+}
+
+type M8_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof GetGetGetFoo_:
+	GetGetFoo *int32
+	// -- end of GetGetGetFoo_
+	GetFoo *int32
+	Foo    *int32
+}
+
+func (b0 M8_builder) Build() *M8 {
+	m0 := &M8{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo_ = &M8_GetGetFoo{*b.GetGetFoo}
+	}
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M8_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M8_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[7].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type M8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	GetFoo                | get_get_foo        | 2    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M9_GetGetFoo
+	//	*M9_GetFoo_
+	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	Foo           *int32             `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M9) GetGetGetGetFoo_() isM9_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M9) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M9) GetGetGetFoo() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M9) Get_GetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M9) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M9) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M9) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M9) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo_ = &M9_GetGetFoo{v}
+}
+
+func (x *M9) Set_GetFoo(v int32) {
+	x.GetGetGetFoo_ = &M9_GetFoo_{v}
+}
+
+func (x *M9) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M9) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo_ != nil
+}
+
+func (x *M9) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M9_GetGetFoo)
+	return ok
+}
+
+func (x *M9) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M9_GetFoo_)
+	return ok
+}
+
+func (x *M9) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M9) ClearGetGetGetFoo() {
+	x.GetGetGetFoo_ = nil
+}
+
+func (x *M9) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) Clear_GetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M9_GetGetGetFoo__not_set_case case_M9_GetGetGetFoo_ = 0
+const M9_GetGetFoo_case case_M9_GetGetGetFoo_ = 3
+const M9_GetFoo__case case_M9_GetGetGetFoo_ = 2
+
+func (x *M9) WhichGetGetGetFoo() case_M9_GetGetGetFoo_ {
+	if x == nil {
+		return M9_GetGetGetFoo__not_set_case
+	}
+	switch x.GetGetGetFoo_.(type) {
+	case *M9_GetGetFoo:
+		return M9_GetGetFoo_case
+	case *M9_GetFoo_:
+		return M9_GetFoo__case
+	default:
+		return M9_GetGetGetFoo__not_set_case
+	}
+}
+
+type M9_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//  GetFoo                | get_get_foo        | 2    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof GetGetGetFoo_:
+	GetGetFoo *int32
+	GetFoo    *int32
+	// -- end of GetGetGetFoo_
+	Foo *int32
+}
+
+func (b0 M9_builder) Build() *M9 {
+	m0 := &M9{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo_ = &M9_GetGetFoo{*b.GetGetFoo}
+	}
+	if b.GetFoo != nil {
+		x.GetGetGetFoo_ = &M9_GetFoo_{*b.GetFoo}
+	}
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M9_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M9_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[8].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type M9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type M9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+type M10 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	SetFoo        *int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo" json:"set_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M10) Reset() {
+	*x = M10{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M10) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M10) ProtoMessage() {}
+
+func (x *M10) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M10) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M10) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M10) GetSetFoo() int32 {
+	if x != nil && x.SetFoo != nil {
+		return *x.SetFoo
+	}
+	return 0
+}
+
+func (x *M10) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M10) SetSetFoo(v int32) {
+	x.SetFoo = &v
+}
+
+func (x *M10) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M10) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetFoo != nil
+}
+
+func (x *M10) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M10) ClearSetFoo() {
+	x.SetFoo = nil
+}
+
+type M10_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo    *int32
+	SetFoo *int32
+}
+
+func (b0 M10_builder) Build() *M10 {
+	m0 := &M10{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.SetFoo = b.SetFoo
+	return m0
+}
+
+type M11 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to SetFoo:
+	//
+	//	*M11_SetSetFoo
+	SetFoo        isM11_SetFoo `protobuf_oneof:"set_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M11) Reset() {
+	*x = M11{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M11) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M11) ProtoMessage() {}
+
+func (x *M11) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M11) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M11) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M11) GetSetFoo() isM11_SetFoo {
+	if x != nil {
+		return x.SetFoo
+	}
+	return nil
+}
+
+func (x *M11) GetSetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.SetFoo.(*M11_SetSetFoo); ok {
+			return x.SetSetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M11) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M11) SetSetSetFoo(v int32) {
+	x.SetFoo = &M11_SetSetFoo{v}
+}
+
+func (x *M11) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M11) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetFoo != nil
+}
+
+func (x *M11) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.SetFoo.(*M11_SetSetFoo)
+	return ok
+}
+
+func (x *M11) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M11) ClearSetFoo() {
+	x.SetFoo = nil
+}
+
+func (x *M11) ClearSetSetFoo() {
+	if _, ok := x.SetFoo.(*M11_SetSetFoo); ok {
+		x.SetFoo = nil
+	}
+}
+
+const M11_SetFoo_not_set_case case_M11_SetFoo = 0
+const M11_SetSetFoo_case case_M11_SetFoo = 2
+
+func (x *M11) WhichSetFoo() case_M11_SetFoo {
+	if x == nil {
+		return M11_SetFoo_not_set_case
+	}
+	switch x.SetFoo.(type) {
+	case *M11_SetSetFoo:
+		return M11_SetSetFoo_case
+	default:
+		return M11_SetFoo_not_set_case
+	}
+}
+
+type M11_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *int32
+	// Fields of oneof SetFoo:
+	SetSetFoo *int32
+	// -- end of SetFoo
+}
+
+func (b0 M11_builder) Build() *M11 {
+	m0 := &M11{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.SetSetFoo != nil {
+		x.SetFoo = &M11_SetSetFoo{*b.SetSetFoo}
+	}
+	return m0
+}
+
+type case_M11_SetFoo protoreflect.FieldNumber
+
+func (x case_M11_SetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[10].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM11_SetFoo interface {
+	isM11_SetFoo()
+}
+
+type M11_SetSetFoo struct {
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+}
+
+func (*M11_SetSetFoo) isM11_SetFoo() {}
+
+type M12 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to SetSetFoo:
+	//
+	//	*M12_SetFoo
+	SetSetFoo     isM12_SetSetFoo `protobuf_oneof:"set_set_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M12) Reset() {
+	*x = M12{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M12) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M12) ProtoMessage() {}
+
+func (x *M12) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M12) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M12) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M12) GetSetSetFoo() isM12_SetSetFoo {
+	if x != nil {
+		return x.SetSetFoo
+	}
+	return nil
+}
+
+func (x *M12) Get_SetFoo() int32 {
+	if x != nil {
+		if x, ok := x.SetSetFoo.(*M12_SetFoo); ok {
+			return x.SetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_SetFoo instead.
+func (x *M12) GetSetFoo() int32 {
+	return x.Get_SetFoo()
+}
+
+func (x *M12) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M12) Set_SetFoo(v int32) {
+	x.SetSetFoo = &M12_SetFoo{v}
+}
+
+func (x *M12) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M12) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetSetFoo != nil
+}
+
+func (x *M12) Has_SetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.SetSetFoo.(*M12_SetFoo)
+	return ok
+}
+
+func (x *M12) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M12) ClearSetSetFoo() {
+	x.SetSetFoo = nil
+}
+
+func (x *M12) Clear_SetFoo() {
+	if _, ok := x.SetSetFoo.(*M12_SetFoo); ok {
+		x.SetSetFoo = nil
+	}
+}
+
+const M12_SetSetFoo_not_set_case case_M12_SetSetFoo = 0
+const M12_SetFoo_case case_M12_SetSetFoo = 2
+
+func (x *M12) WhichSetSetFoo() case_M12_SetSetFoo {
+	if x == nil {
+		return M12_SetSetFoo_not_set_case
+	}
+	switch x.SetSetFoo.(type) {
+	case *M12_SetFoo:
+		return M12_SetFoo_case
+	default:
+		return M12_SetSetFoo_not_set_case
+	}
+}
+
+type M12_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *int32
+	// Fields of oneof SetSetFoo:
+	SetFoo *int32
+	// -- end of SetSetFoo
+}
+
+func (b0 M12_builder) Build() *M12 {
+	m0 := &M12{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.SetFoo != nil {
+		x.SetSetFoo = &M12_SetFoo{*b.SetFoo}
+	}
+	return m0
+}
+
+type case_M12_SetSetFoo protoreflect.FieldNumber
+
+func (x case_M12_SetSetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[11].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM12_SetSetFoo interface {
+	isM12_SetSetFoo()
+}
+
+type M12_SetFoo struct {
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+}
+
+func (*M12_SetFoo) isM12_SetSetFoo() {}
+
+type M13 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	HasFoo        *int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo" json:"has_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M13) Reset() {
+	*x = M13{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M13) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M13) ProtoMessage() {}
+
+func (x *M13) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M13) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M13) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M13) GetHasFoo() int32 {
+	if x != nil && x.HasFoo != nil {
+		return *x.HasFoo
+	}
+	return 0
+}
+
+func (x *M13) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M13) SetHasFoo(v int32) {
+	x.HasFoo = &v
+}
+
+func (x *M13) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M13) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasFoo != nil
+}
+
+func (x *M13) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M13) ClearHasFoo() {
+	x.HasFoo = nil
+}
+
+type M13_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo    *int32
+	HasFoo *int32
+}
+
+func (b0 M13_builder) Build() *M13 {
+	m0 := &M13{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.HasFoo = b.HasFoo
+	return m0
+}
+
+type M14 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to HasFoo:
+	//
+	//	*M14_HasHasFoo
+	HasFoo        isM14_HasFoo `protobuf_oneof:"has_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M14) Reset() {
+	*x = M14{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M14) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M14) ProtoMessage() {}
+
+func (x *M14) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M14) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M14) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M14) GetHasFoo() isM14_HasFoo {
+	if x != nil {
+		return x.HasFoo
+	}
+	return nil
+}
+
+func (x *M14) GetHasHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.HasFoo.(*M14_HasHasFoo); ok {
+			return x.HasHasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M14) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M14) SetHasHasFoo(v int32) {
+	x.HasFoo = &M14_HasHasFoo{v}
+}
+
+func (x *M14) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M14) Has_HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasFoo != nil
+}
+
+func (x *M14) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.HasFoo.(*M14_HasHasFoo)
+	return ok
+}
+
+func (x *M14) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M14) Clear_HasFoo() {
+	x.HasFoo = nil
+}
+
+func (x *M14) ClearHasHasFoo() {
+	if _, ok := x.HasFoo.(*M14_HasHasFoo); ok {
+		x.HasFoo = nil
+	}
+}
+
+const M14_HasFoo_not_set_case case_M14_HasFoo = 0
+const M14_HasHasFoo_case case_M14_HasFoo = 2
+
+func (x *M14) Which_HasFoo() case_M14_HasFoo {
+	if x == nil {
+		return M14_HasFoo_not_set_case
+	}
+	switch x.HasFoo.(type) {
+	case *M14_HasHasFoo:
+		return M14_HasHasFoo_case
+	default:
+		return M14_HasFoo_not_set_case
+	}
+}
+
+type M14_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32
+	// Fields of oneof HasFoo:
+	HasHasFoo *int32
+	// -- end of HasFoo
+}
+
+func (b0 M14_builder) Build() *M14 {
+	m0 := &M14{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.HasHasFoo != nil {
+		x.HasFoo = &M14_HasHasFoo{*b.HasHasFoo}
+	}
+	return m0
+}
+
+type case_M14_HasFoo protoreflect.FieldNumber
+
+func (x case_M14_HasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[13].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM14_HasFoo interface {
+	isM14_HasFoo()
+}
+
+type M14_HasHasFoo struct {
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+}
+
+func (*M14_HasHasFoo) isM14_HasFoo() {}
+
+type M15 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to HasHasFoo:
+	//
+	//	*M15_HasFoo
+	HasHasFoo     isM15_HasHasFoo `protobuf_oneof:"has_has_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M15) Reset() {
+	*x = M15{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M15) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M15) ProtoMessage() {}
+
+func (x *M15) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M15) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M15) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M15) GetHasHasFoo() isM15_HasHasFoo {
+	if x != nil {
+		return x.HasHasFoo
+	}
+	return nil
+}
+
+func (x *M15) Get_HasFoo() int32 {
+	if x != nil {
+		if x, ok := x.HasHasFoo.(*M15_HasFoo); ok {
+			return x.HasFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_HasFoo instead.
+func (x *M15) GetHasFoo() int32 {
+	return x.Get_HasFoo()
+}
+
+func (x *M15) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M15) Set_HasFoo(v int32) {
+	x.HasHasFoo = &M15_HasFoo{v}
+}
+
+func (x *M15) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M15) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasHasFoo != nil
+}
+
+func (x *M15) Has_HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.HasHasFoo.(*M15_HasFoo)
+	return ok
+}
+
+func (x *M15) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M15) ClearHasHasFoo() {
+	x.HasHasFoo = nil
+}
+
+func (x *M15) Clear_HasFoo() {
+	if _, ok := x.HasHasFoo.(*M15_HasFoo); ok {
+		x.HasHasFoo = nil
+	}
+}
+
+const M15_HasHasFoo_not_set_case case_M15_HasHasFoo = 0
+const M15_HasFoo_case case_M15_HasHasFoo = 2
+
+func (x *M15) WhichHasHasFoo() case_M15_HasHasFoo {
+	if x == nil {
+		return M15_HasHasFoo_not_set_case
+	}
+	switch x.HasHasFoo.(type) {
+	case *M15_HasFoo:
+		return M15_HasFoo_case
+	default:
+		return M15_HasHasFoo_not_set_case
+	}
+}
+
+type M15_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32
+	// Fields of oneof HasHasFoo:
+	HasFoo *int32
+	// -- end of HasHasFoo
+}
+
+func (b0 M15_builder) Build() *M15 {
+	m0 := &M15{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.HasFoo != nil {
+		x.HasHasFoo = &M15_HasFoo{*b.HasFoo}
+	}
+	return m0
+}
+
+type case_M15_HasHasFoo protoreflect.FieldNumber
+
+func (x case_M15_HasHasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[14].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM15_HasHasFoo interface {
+	isM15_HasHasFoo()
+}
+
+type M15_HasFoo struct {
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+}
+
+func (*M15_HasFoo) isM15_HasHasFoo() {}
+
+type M16 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	ClearFoo      *int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo" json:"clear_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M16) Reset() {
+	*x = M16{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M16) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M16) ProtoMessage() {}
+
+func (x *M16) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M16) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M16) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M16) GetClearFoo() int32 {
+	if x != nil && x.ClearFoo != nil {
+		return *x.ClearFoo
+	}
+	return 0
+}
+
+func (x *M16) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M16) SetClearFoo(v int32) {
+	x.ClearFoo = &v
+}
+
+func (x *M16) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M16) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearFoo != nil
+}
+
+func (x *M16) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M16) ClearClearFoo() {
+	x.ClearFoo = nil
+}
+
+type M16_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo      *int32
+	ClearFoo *int32
+}
+
+func (b0 M16_builder) Build() *M16 {
+	m0 := &M16{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.ClearFoo = b.ClearFoo
+	return m0
+}
+
+type M17 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to ClearFoo:
+	//
+	//	*M17_ClearClearFoo
+	ClearFoo      isM17_ClearFoo `protobuf_oneof:"clear_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M17) Reset() {
+	*x = M17{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M17) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M17) ProtoMessage() {}
+
+func (x *M17) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M17) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M17) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M17) GetClearFoo() isM17_ClearFoo {
+	if x != nil {
+		return x.ClearFoo
+	}
+	return nil
+}
+
+func (x *M17) GetClearClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.ClearFoo.(*M17_ClearClearFoo); ok {
+			return x.ClearClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M17) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M17) SetClearClearFoo(v int32) {
+	x.ClearFoo = &M17_ClearClearFoo{v}
+}
+
+func (x *M17) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M17) Has_ClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearFoo != nil
+}
+
+func (x *M17) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.ClearFoo.(*M17_ClearClearFoo)
+	return ok
+}
+
+func (x *M17) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M17) Clear_ClearFoo() {
+	x.ClearFoo = nil
+}
+
+func (x *M17) ClearClearClearFoo() {
+	if _, ok := x.ClearFoo.(*M17_ClearClearFoo); ok {
+		x.ClearFoo = nil
+	}
+}
+
+const M17_ClearFoo_not_set_case case_M17_ClearFoo = 0
+const M17_ClearClearFoo_case case_M17_ClearFoo = 2
+
+func (x *M17) Which_ClearFoo() case_M17_ClearFoo {
+	if x == nil {
+		return M17_ClearFoo_not_set_case
+	}
+	switch x.ClearFoo.(type) {
+	case *M17_ClearClearFoo:
+		return M17_ClearClearFoo_case
+	default:
+		return M17_ClearFoo_not_set_case
+	}
+}
+
+type M17_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32
+	// Fields of oneof ClearFoo:
+	ClearClearFoo *int32
+	// -- end of ClearFoo
+}
+
+func (b0 M17_builder) Build() *M17 {
+	m0 := &M17{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.ClearClearFoo != nil {
+		x.ClearFoo = &M17_ClearClearFoo{*b.ClearClearFoo}
+	}
+	return m0
+}
+
+type case_M17_ClearFoo protoreflect.FieldNumber
+
+func (x case_M17_ClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[16].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM17_ClearFoo interface {
+	isM17_ClearFoo()
+}
+
+type M17_ClearClearFoo struct {
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+}
+
+func (*M17_ClearClearFoo) isM17_ClearFoo() {}
+
+type M18 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to ClearClearFoo:
+	//
+	//	*M18_ClearFoo
+	ClearClearFoo isM18_ClearClearFoo `protobuf_oneof:"clear_clear_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M18) Reset() {
+	*x = M18{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M18) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M18) ProtoMessage() {}
+
+func (x *M18) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M18) Get_Foo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M18) GetFoo() int32 {
+	return x.Get_Foo()
+}
+
+func (x *M18) GetClearClearFoo() isM18_ClearClearFoo {
+	if x != nil {
+		return x.ClearClearFoo
+	}
+	return nil
+}
+
+func (x *M18) Get_ClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.ClearClearFoo.(*M18_ClearFoo); ok {
+			return x.ClearFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_ClearFoo instead.
+func (x *M18) GetClearFoo() int32 {
+	return x.Get_ClearFoo()
+}
+
+func (x *M18) Set_Foo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M18) Set_ClearFoo(v int32) {
+	x.ClearClearFoo = &M18_ClearFoo{v}
+}
+
+func (x *M18) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M18) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearClearFoo != nil
+}
+
+func (x *M18) Has_ClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.ClearClearFoo.(*M18_ClearFoo)
+	return ok
+}
+
+func (x *M18) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M18) ClearClearClearFoo() {
+	x.ClearClearFoo = nil
+}
+
+func (x *M18) Clear_ClearFoo() {
+	if _, ok := x.ClearClearFoo.(*M18_ClearFoo); ok {
+		x.ClearClearFoo = nil
+	}
+}
+
+const M18_ClearClearFoo_not_set_case case_M18_ClearClearFoo = 0
+const M18_ClearFoo_case case_M18_ClearClearFoo = 2
+
+func (x *M18) WhichClearClearFoo() case_M18_ClearClearFoo {
+	if x == nil {
+		return M18_ClearClearFoo_not_set_case
+	}
+	switch x.ClearClearFoo.(type) {
+	case *M18_ClearFoo:
+		return M18_ClearFoo_case
+	default:
+		return M18_ClearClearFoo_not_set_case
+	}
+}
+
+type M18_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32
+	// Fields of oneof ClearClearFoo:
+	ClearFoo *int32
+	// -- end of ClearClearFoo
+}
+
+func (b0 M18_builder) Build() *M18 {
+	m0 := &M18{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.ClearFoo != nil {
+		x.ClearClearFoo = &M18_ClearFoo{*b.ClearFoo}
+	}
+	return m0
+}
+
+type case_M18_ClearClearFoo protoreflect.FieldNumber
+
+func (x case_M18_ClearClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[17].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM18_ClearClearFoo interface {
+	isM18_ClearClearFoo()
+}
+
+type M18_ClearFoo struct {
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+}
+
+func (*M18_ClearFoo) isM18_ClearClearFoo() {}
+
+type M19 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to WhichWhichFoo:
+	//
+	//	*M19_WhichFoo
+	WhichWhichFoo isM19_WhichWhichFoo `protobuf_oneof:"which_which_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M19) Reset() {
+	*x = M19{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M19) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M19) ProtoMessage() {}
+
+func (x *M19) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M19) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+func (x *M19) GetWhichWhichFoo() isM19_WhichWhichFoo {
+	if x != nil {
+		return x.WhichWhichFoo
+	}
+	return nil
+}
+
+func (x *M19) GetWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.WhichWhichFoo.(*M19_WhichFoo); ok {
+			return x.WhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M19) SetFoo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M19) SetWhichFoo(v int32) {
+	x.WhichWhichFoo = &M19_WhichFoo{v}
+}
+
+func (x *M19) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M19) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.WhichWhichFoo != nil
+}
+
+func (x *M19) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.WhichWhichFoo.(*M19_WhichFoo)
+	return ok
+}
+
+func (x *M19) ClearFoo() {
+	x.Foo = nil
+}
+
+func (x *M19) ClearWhichWhichFoo() {
+	x.WhichWhichFoo = nil
+}
+
+func (x *M19) ClearWhichFoo() {
+	if _, ok := x.WhichWhichFoo.(*M19_WhichFoo); ok {
+		x.WhichWhichFoo = nil
+	}
+}
+
+const M19_WhichWhichFoo_not_set_case case_M19_WhichWhichFoo = 0
+const M19_WhichFoo_case case_M19_WhichWhichFoo = 2
+
+func (x *M19) WhichWhichWhichFoo() case_M19_WhichWhichFoo {
+	if x == nil {
+		return M19_WhichWhichFoo_not_set_case
+	}
+	switch x.WhichWhichFoo.(type) {
+	case *M19_WhichFoo:
+		return M19_WhichFoo_case
+	default:
+		return M19_WhichWhichFoo_not_set_case
+	}
+}
+
+type M19_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *int32
+	// Fields of oneof WhichWhichFoo:
+	WhichFoo *int32
+	// -- end of WhichWhichFoo
+}
+
+func (b0 M19_builder) Build() *M19 {
+	m0 := &M19{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.WhichFoo != nil {
+		x.WhichWhichFoo = &M19_WhichFoo{*b.WhichFoo}
+	}
+	return m0
+}
+
+type case_M19_WhichWhichFoo protoreflect.FieldNumber
+
+func (x case_M19_WhichWhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[18].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM19_WhichWhichFoo interface {
+	isM19_WhichWhichFoo()
+}
+
+type M19_WhichFoo struct {
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+}
+
+func (*M19_WhichFoo) isM19_WhichWhichFoo() {}
+
+type M20 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to WhichFoo:
+	//
+	//	*M20_WhichWhichFoo
+	WhichFoo      isM20_WhichFoo `protobuf_oneof:"which_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M20) Reset() {
+	*x = M20{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M20) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M20) ProtoMessage() {}
+
+func (x *M20) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M20) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+func (x *M20) GetWhichFoo() isM20_WhichFoo {
+	if x != nil {
+		return x.WhichFoo
+	}
+	return nil
+}
+
+func (x *M20) GetWhichWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.WhichFoo.(*M20_WhichWhichFoo); ok {
+			return x.WhichWhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M20) SetFoo(v int32) {
+	x.Foo = &v
+}
+
+func (x *M20) SetWhichWhichFoo(v int32) {
+	x.WhichFoo = &M20_WhichWhichFoo{v}
+}
+
+func (x *M20) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M20) Has_WhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.WhichFoo != nil
+}
+
+func (x *M20) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.WhichFoo.(*M20_WhichWhichFoo)
+	return ok
+}
+
+func (x *M20) ClearFoo() {
+	x.Foo = nil
+}
+
+func (x *M20) Clear_WhichFoo() {
+	x.WhichFoo = nil
+}
+
+func (x *M20) ClearWhichWhichFoo() {
+	if _, ok := x.WhichFoo.(*M20_WhichWhichFoo); ok {
+		x.WhichFoo = nil
+	}
+}
+
+const M20_WhichFoo_not_set_case case_M20_WhichFoo = 0
+const M20_WhichWhichFoo_case case_M20_WhichFoo = 2
+
+func (x *M20) Which_WhichFoo() case_M20_WhichFoo {
+	if x == nil {
+		return M20_WhichFoo_not_set_case
+	}
+	switch x.WhichFoo.(type) {
+	case *M20_WhichWhichFoo:
+		return M20_WhichWhichFoo_case
+	default:
+		return M20_WhichFoo_not_set_case
+	}
+}
+
+type M20_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *int32
+	// Fields of oneof WhichFoo:
+	WhichWhichFoo *int32
+	// -- end of WhichFoo
+}
+
+func (b0 M20_builder) Build() *M20 {
+	m0 := &M20{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.WhichWhichFoo != nil {
+		x.WhichFoo = &M20_WhichWhichFoo{*b.WhichWhichFoo}
+	}
+	return m0
+}
+
+type case_M20_WhichFoo protoreflect.FieldNumber
+
+func (x case_M20_WhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[19].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM20_WhichFoo interface {
+	isM20_WhichFoo()
+}
+
+type M20_WhichWhichFoo struct {
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+}
+
+func (*M20_WhichWhichFoo) isM20_WhichFoo() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x41, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x26, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
+	0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
+	0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x1a, 0x21, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f,
+	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4f,
+	0x0a, 0x02, 0x4d, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0x4f, 0x0a, 0x02, 0x4d, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10,
+	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f,
+	0x22, 0x4f, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x22, 0x67, 0x0a, 0x02, 0x4d, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74,
+	0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x64, 0x0a, 0x02, 0x4d, 0x35,
+	0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74,
+	0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
+	0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a,
+	0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x22, 0x67, 0x0a, 0x02, 0x4d, 0x36, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x54, 0x0a, 0x02, 0x4d, 0x37, 0x12,
+	0x12, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03,
+	0x62, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10,
+	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f,
+	0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x64, 0x0a, 0x02, 0x4d, 0x38, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x66, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x19, 0x0a,
+	0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
+	0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x30, 0x0a,
+	0x03, 0x4d, 0x31, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0x44, 0x0a, 0x03, 0x4d, 0x31, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x73, 0x65, 0x74, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x41, 0x0a, 0x03, 0x4d, 0x31, 0x32, 0x12, 0x10, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19,
+	0x0a, 0x07, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x74,
+	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x30, 0x0a, 0x03, 0x4d, 0x31, 0x33, 0x12,
+	0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x22, 0x44, 0x0a, 0x03, 0x4d, 0x31,
+	0x34, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
+	0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x68, 0x61, 0x73, 0x48,
+	0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f,
+	0x22, 0x41, 0x0a, 0x03, 0x4d, 0x31, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x68, 0x61, 0x73,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x68, 0x61,
+	0x73, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x34, 0x0a, 0x03, 0x4d, 0x31, 0x36, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1b, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x22, 0x4e, 0x0a, 0x03, 0x4d, 0x31, 0x37,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61,
+	0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x63,
+	0x6c, 0x65, 0x61, 0x72, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x31, 0x38,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f,
+	0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72,
+	0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x31, 0x39, 0x12, 0x10, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1d, 0x0a,
+	0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x08, 0x77, 0x68, 0x69, 0x63, 0x68, 0x46, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f,
+	0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x4e, 0x0a, 0x03, 0x4d, 0x32, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63,
+	0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68, 0x46,
+	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x42,
+	0x60, 0x5a, 0x56, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
+	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
+	0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_goTypes = []any{
+	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid.M1
+	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid.M2
+	(*M3)(nil),  // 2: net.proto2.go.testdata.nameclashhybrid.M3
+	(*M4)(nil),  // 3: net.proto2.go.testdata.nameclashhybrid.M4
+	(*M5)(nil),  // 4: net.proto2.go.testdata.nameclashhybrid.M5
+	(*M6)(nil),  // 5: net.proto2.go.testdata.nameclashhybrid.M6
+	(*M7)(nil),  // 6: net.proto2.go.testdata.nameclashhybrid.M7
+	(*M8)(nil),  // 7: net.proto2.go.testdata.nameclashhybrid.M8
+	(*M9)(nil),  // 8: net.proto2.go.testdata.nameclashhybrid.M9
+	(*M10)(nil), // 9: net.proto2.go.testdata.nameclashhybrid.M10
+	(*M11)(nil), // 10: net.proto2.go.testdata.nameclashhybrid.M11
+	(*M12)(nil), // 11: net.proto2.go.testdata.nameclashhybrid.M12
+	(*M13)(nil), // 12: net.proto2.go.testdata.nameclashhybrid.M13
+	(*M14)(nil), // 13: net.proto2.go.testdata.nameclashhybrid.M14
+	(*M15)(nil), // 14: net.proto2.go.testdata.nameclashhybrid.M15
+	(*M16)(nil), // 15: net.proto2.go.testdata.nameclashhybrid.M16
+	(*M17)(nil), // 16: net.proto2.go.testdata.nameclashhybrid.M17
+	(*M18)(nil), // 17: net.proto2.go.testdata.nameclashhybrid.M18
+	(*M19)(nil), // 18: net.proto2.go.testdata.nameclashhybrid.M19
+	(*M20)(nil), // 19: net.proto2.go.testdata.nameclashhybrid.M20
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[3].OneofWrappers = []any{
+		(*M4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[4].OneofWrappers = []any{
+		(*M5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[5].OneofWrappers = []any{
+		(*M6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[6].OneofWrappers = []any{
+		(*M7_Bar)(nil),
+		(*M7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[7].OneofWrappers = []any{
+		(*M8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[8].OneofWrappers = []any{
+		(*M9_GetGetFoo)(nil),
+		(*M9_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[10].OneofWrappers = []any{
+		(*M11_SetSetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[11].OneofWrappers = []any{
+		(*M12_SetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[13].OneofWrappers = []any{
+		(*M14_HasHasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[14].OneofWrappers = []any{
+		(*M15_HasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[16].OneofWrappers = []any{
+		(*M17_ClearClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[17].OneofWrappers = []any{
+		(*M18_ClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[18].OneofWrappers = []any{
+		(*M19_WhichFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[19].OneofWrappers = []any{
+		(*M20_WhichWhichFoo)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go
new file mode 100644
index 0000000..5799b17
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go
@@ -0,0 +1,3990 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3.proto
+
+package test_name_clash_hybrid3
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type M0 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	I1            int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M0) Reset() {
+	*x = M0{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M0) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M0) ProtoMessage() {}
+
+func (x *M0) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M0) GetI1() int32 {
+	if x != nil {
+		return x.I1
+	}
+	return 0
+}
+
+func (x *M0) SetI1(v int32) {
+	x.I1 = v
+}
+
+type M0_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	I1 int32
+}
+
+func (b0 M0_builder) Build() *M0 {
+	m0 := &M0{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.I1 = b.I1
+	return m0
+}
+
+type M1 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M1) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M1) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M1) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M1) GetGetFoo_() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M1) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M1) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M1) Set_GetFoo(v *M0) {
+	x.GetFoo_ = v
+}
+
+func (x *M1) SetGetGetFoo(v *M0) {
+	x.GetGetFoo = v
+}
+
+func (x *M1) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M1) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M1) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M1) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M1) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M1) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+type M1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo       *M0
+	GetFoo    *M0
+	GetGetFoo *M0
+}
+
+func (b0 M1_builder) Build() *M1 {
+	m0 := &M1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.GetFoo_ = b.GetFoo
+	x.GetGetFoo = b.GetGetFoo
+	return m0
+}
+
+type M2 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M2) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M2) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M2) GetGetFoo_() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M2) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M2) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M2) SetGetGetFoo(v *M0) {
+	x.GetGetFoo = v
+}
+
+func (x *M2) Set_GetFoo(v *M0) {
+	x.GetFoo_ = v
+}
+
+func (x *M2) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M2) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M2) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M2) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M2) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M2) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M2) Clear_Foo() {
+	x.Foo = nil
+}
+
+type M2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo *M0
+	GetFoo    *M0
+	Foo       *M0
+}
+
+func (b0 M2_builder) Build() *M2 {
+	m0 := &M2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetGetFoo = b.GetGetFoo
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type M3 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M3) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M3) GetGetFoo() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M3) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+// Deprecated: Use GetGetGetFoo instead.
+func (x *M3) GetGetGetFoo_() *M0 {
+	return x.GetGetGetFoo()
+}
+
+func (x *M3) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M3) GetFoo_() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M3) Set_GetFoo(v *M0) {
+	x.GetFoo = v
+}
+
+func (x *M3) SetGetGetFoo(v *M0) {
+	x.GetGetFoo_ = v
+}
+
+func (x *M3) Set_Foo(v *M0) {
+	x.Foo_ = v
+}
+
+func (x *M3) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M3) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo_ != nil
+}
+
+func (x *M3) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M3) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M3) ClearGetGetFoo() {
+	x.GetGetFoo_ = nil
+}
+
+func (x *M3) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+type M3_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo    *M0
+	GetGetFoo *M0
+	Foo       *M0
+}
+
+func (b0 M3_builder) Build() *M3 {
+	m0 := &M3{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	x.GetGetFoo_ = b.GetGetFoo
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type M4 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetFoo_:
+	//
+	//	*M4_GetGetGetFoo
+	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
+	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M4) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M4) GetGetFoo() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M4) GetGetGetFoo_() isM4_GetGetFoo_ {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M4) GetFoo_() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M4) Set_GetFoo(v *M0) {
+	x.GetFoo = v
+}
+
+func (x *M4) SetGetGetGetFoo(v int32) {
+	x.GetGetFoo_ = &M4_GetGetGetFoo{v}
+}
+
+func (x *M4) Set_Foo(v *M0) {
+	x.Foo_ = v
+}
+
+func (x *M4) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M4) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo_ != nil
+}
+
+func (x *M4) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo_.(*M4_GetGetGetFoo)
+	return ok
+}
+
+func (x *M4) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M4) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M4) ClearGetGetFoo() {
+	x.GetGetFoo_ = nil
+}
+
+func (x *M4) ClearGetGetGetFoo() {
+	if _, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+		x.GetGetFoo_ = nil
+	}
+}
+
+func (x *M4) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+const M4_GetGetFoo__not_set_case case_M4_GetGetFoo_ = 0
+const M4_GetGetGetFoo_case case_M4_GetGetFoo_ = 3
+
+func (x *M4) WhichGetGetFoo() case_M4_GetGetFoo_ {
+	if x == nil {
+		return M4_GetGetFoo__not_set_case
+	}
+	switch x.GetGetFoo_.(type) {
+	case *M4_GetGetGetFoo:
+		return M4_GetGetGetFoo_case
+	default:
+		return M4_GetGetFoo__not_set_case
+	}
+}
+
+type M4_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *M0
+	// Fields of oneof GetGetFoo_:
+	GetGetGetFoo *int32
+	// -- end of GetGetFoo_
+	Foo *M0
+}
+
+func (b0 M4_builder) Build() *M4 {
+	m0 := &M4{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	if b.GetGetGetFoo != nil {
+		x.GetGetFoo_ = &M4_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type case_M4_GetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M4_GetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type M4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetGetFoo:
+	//
+	//	*M5_GetGetFoo_
+	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
+	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M5) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M5) GetGetFoo() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M5) GetGetGetGetFoo() isM5_GetGetGetFoo {
+	if x != nil {
+		return x.GetGetGetFoo
+	}
+	return nil
+}
+
+func (x *M5) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M5) GetGetGetFoo_() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M5) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M5) GetFoo_() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M5) Set_GetFoo(v *M0) {
+	x.GetFoo = v
+}
+
+func (x *M5) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo = &M5_GetGetFoo_{v}
+}
+
+func (x *M5) Set_Foo(v *M0) {
+	x.Foo_ = v
+}
+
+func (x *M5) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo != nil
+}
+
+func (x *M5) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo != nil
+}
+
+func (x *M5) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo.(*M5_GetGetFoo_)
+	return ok
+}
+
+func (x *M5) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo_ != nil
+}
+
+func (x *M5) Clear_GetFoo() {
+	x.GetFoo = nil
+}
+
+func (x *M5) ClearGetGetGetFoo() {
+	x.GetGetGetFoo = nil
+}
+
+func (x *M5) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+		x.GetGetGetFoo = nil
+	}
+}
+
+func (x *M5) Clear_Foo() {
+	x.Foo_ = nil
+}
+
+const M5_GetGetGetFoo_not_set_case case_M5_GetGetGetFoo = 0
+const M5_GetGetFoo__case case_M5_GetGetGetFoo = 3
+
+func (x *M5) WhichGetGetGetFoo() case_M5_GetGetGetFoo {
+	if x == nil {
+		return M5_GetGetGetFoo_not_set_case
+	}
+	switch x.GetGetGetFoo.(type) {
+	case *M5_GetGetFoo_:
+		return M5_GetGetFoo__case
+	default:
+		return M5_GetGetGetFoo_not_set_case
+	}
+}
+
+type M5_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *M0
+	// Fields of oneof GetGetGetFoo:
+	GetGetFoo *int32
+	// -- end of GetGetGetFoo
+	Foo *M0
+}
+
+func (b0 M5_builder) Build() *M5 {
+	m0 := &M5{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.GetFoo = b.GetFoo
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo = &M5_GetGetFoo_{*b.GetGetFoo}
+	}
+	x.Foo_ = b.Foo
+	return m0
+}
+
+type case_M5_GetGetGetFoo protoreflect.FieldNumber
+
+func (x case_M5_GetGetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[5].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type M5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M6_GetGetGetFoo
+	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M6) GetGetGetFoo() isM6_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M6) GetGetFoo_() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M6) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M6) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M6) SetGetGetGetFoo(v int32) {
+	x.GetGetFoo = &M6_GetGetGetFoo{v}
+}
+
+func (x *M6) Set_GetFoo(v *M0) {
+	x.GetFoo_ = v
+}
+
+func (x *M6) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M6) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M6) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M6_GetGetGetFoo)
+	return ok
+}
+
+func (x *M6) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M6) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M6) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M6) ClearGetGetGetFoo() {
+	if _, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M6) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M6) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M6_GetGetFoo_not_set_case case_M6_GetGetFoo = 0
+const M6_GetGetGetFoo_case case_M6_GetGetFoo = 3
+
+func (x *M6) WhichGetGetFoo() case_M6_GetGetFoo {
+	if x == nil {
+		return M6_GetGetFoo_not_set_case
+	}
+	switch x.GetGetFoo.(type) {
+	case *M6_GetGetGetFoo:
+		return M6_GetGetGetFoo_case
+	default:
+		return M6_GetGetFoo_not_set_case
+	}
+}
+
+type M6_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+
+	// Fields of oneof GetGetFoo:
+	GetGetGetFoo *int32
+	// -- end of GetGetFoo
+	GetFoo *M0
+	Foo    *M0
+}
+
+func (b0 M6_builder) Build() *M6 {
+	m0 := &M6{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetGetFoo != nil {
+		x.GetGetFoo = &M6_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M6_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M6_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[6].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type M6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	Bar                   | -                  | -    | Bar
+	//	GetFoo                | foo                | 1    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M7_Bar
+	//	*M7_GetFoo_
+	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M7) GetGetGetFoo() isM7_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) Get_GetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M7) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M7) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M7) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M7) SetBar(v bool) {
+	x.GetGetFoo = &M7_Bar{v}
+}
+
+func (x *M7) Set_GetFoo(v int32) {
+	x.GetGetFoo = &M7_GetFoo_{v}
+}
+
+func (x *M7) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M7) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetFoo != nil
+}
+
+func (x *M7) HasBar() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M7_Bar)
+	return ok
+}
+
+func (x *M7) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetFoo.(*M7_GetFoo_)
+	return ok
+}
+
+func (x *M7) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M7) ClearGetGetFoo() {
+	x.GetGetFoo = nil
+}
+
+func (x *M7) ClearBar() {
+	if _, ok := x.GetGetFoo.(*M7_Bar); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M7) Clear_GetFoo() {
+	if _, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+		x.GetGetFoo = nil
+	}
+}
+
+func (x *M7) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M7_GetGetFoo_not_set_case case_M7_GetGetFoo = 0
+const M7_Bar_case case_M7_GetGetFoo = 4
+const M7_GetFoo__case case_M7_GetGetFoo = 3
+
+func (x *M7) WhichGetGetFoo() case_M7_GetGetFoo {
+	if x == nil {
+		return M7_GetGetFoo_not_set_case
+	}
+	switch x.GetGetFoo.(type) {
+	case *M7_Bar:
+		return M7_Bar_case
+	case *M7_GetFoo_:
+		return M7_GetFoo__case
+	default:
+		return M7_GetGetFoo_not_set_case
+	}
+}
+
+type M7_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  Bar                   | -                  | -    | Bar
+	//  GetFoo                | foo                | 1    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+
+	// Fields of oneof GetGetFoo:
+	Bar    *bool
+	GetFoo *int32
+	// -- end of GetGetFoo
+	Foo *M0
+}
+
+func (b0 M7_builder) Build() *M7 {
+	m0 := &M7{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Bar != nil {
+		x.GetGetFoo = &M7_Bar{*b.Bar}
+	}
+	if b.GetFoo != nil {
+		x.GetGetFoo = &M7_GetFoo_{*b.GetFoo}
+	}
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M7_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M7_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[7].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type M7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type M7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M7_Bar) isM7_GetGetFoo() {}
+
+func (*M7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M8_GetGetFoo
+	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M8) GetGetGetGetFoo_() isM8_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M8) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M8) GetGetGetFoo() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M8) Get_GetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M8) GetGetFoo_() *M0 {
+	return x.Get_GetFoo()
+}
+
+func (x *M8) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M8) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M8) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo_ = &M8_GetGetFoo{v}
+}
+
+func (x *M8) Set_GetFoo(v *M0) {
+	x.GetFoo_ = v
+}
+
+func (x *M8) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M8) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo_ != nil
+}
+
+func (x *M8) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M8_GetGetFoo)
+	return ok
+}
+
+func (x *M8) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetFoo_ != nil
+}
+
+func (x *M8) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M8) ClearGetGetGetFoo() {
+	x.GetGetGetFoo_ = nil
+}
+
+func (x *M8) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M8) Clear_GetFoo() {
+	x.GetFoo_ = nil
+}
+
+func (x *M8) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M8_GetGetGetFoo__not_set_case case_M8_GetGetGetFoo_ = 0
+const M8_GetGetFoo_case case_M8_GetGetGetFoo_ = 3
+
+func (x *M8) WhichGetGetGetFoo() case_M8_GetGetGetFoo_ {
+	if x == nil {
+		return M8_GetGetGetFoo__not_set_case
+	}
+	switch x.GetGetGetFoo_.(type) {
+	case *M8_GetGetFoo:
+		return M8_GetGetFoo_case
+	default:
+		return M8_GetGetGetFoo__not_set_case
+	}
+}
+
+type M8_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof GetGetGetFoo_:
+	GetGetFoo *int32
+	// -- end of GetGetGetFoo_
+	GetFoo *M0
+	Foo    *M0
+}
+
+func (b0 M8_builder) Build() *M8 {
+	m0 := &M8{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo_ = &M8_GetGetFoo{*b.GetGetFoo}
+	}
+	x.GetFoo_ = b.GetFoo
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M8_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M8_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[8].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type M8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	GetFoo                | get_get_foo        | 2    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M9_GetGetFoo
+	//	*M9_GetFoo_
+	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M9) GetGetGetGetFoo_() isM9_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M9) Get_GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetGetFoo instead.
+func (x *M9) GetGetGetFoo() int32 {
+	return x.Get_GetGetFoo()
+}
+
+func (x *M9) Get_GetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_GetFoo instead.
+func (x *M9) GetGetFoo_() int32 {
+	return x.Get_GetFoo()
+}
+
+func (x *M9) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M9) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M9) Set_GetGetFoo(v int32) {
+	x.GetGetGetFoo_ = &M9_GetGetFoo{v}
+}
+
+func (x *M9) Set_GetFoo(v int32) {
+	x.GetGetGetFoo_ = &M9_GetFoo_{v}
+}
+
+func (x *M9) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M9) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetGetGetFoo_ != nil
+}
+
+func (x *M9) Has_GetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M9_GetGetFoo)
+	return ok
+}
+
+func (x *M9) Has_GetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.GetGetGetFoo_.(*M9_GetFoo_)
+	return ok
+}
+
+func (x *M9) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M9) ClearGetGetGetFoo() {
+	x.GetGetGetFoo_ = nil
+}
+
+func (x *M9) Clear_GetGetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) Clear_GetFoo() {
+	if _, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+		x.GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) Clear_Foo() {
+	x.Foo = nil
+}
+
+const M9_GetGetGetFoo__not_set_case case_M9_GetGetGetFoo_ = 0
+const M9_GetGetFoo_case case_M9_GetGetGetFoo_ = 3
+const M9_GetFoo__case case_M9_GetGetGetFoo_ = 2
+
+func (x *M9) WhichGetGetGetFoo() case_M9_GetGetGetFoo_ {
+	if x == nil {
+		return M9_GetGetGetFoo__not_set_case
+	}
+	switch x.GetGetGetFoo_.(type) {
+	case *M9_GetGetFoo:
+		return M9_GetGetFoo_case
+	case *M9_GetFoo_:
+		return M9_GetFoo__case
+	default:
+		return M9_GetGetGetFoo__not_set_case
+	}
+}
+
+type M9_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//  GetFoo                | get_get_foo        | 2    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof GetGetGetFoo_:
+	GetGetFoo *int32
+	GetFoo    *int32
+	// -- end of GetGetGetFoo_
+	Foo *M0
+}
+
+func (b0 M9_builder) Build() *M9 {
+	m0 := &M9{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.GetGetGetFoo_ = &M9_GetGetFoo{*b.GetGetFoo}
+	}
+	if b.GetFoo != nil {
+		x.GetGetGetFoo_ = &M9_GetFoo_{*b.GetFoo}
+	}
+	x.Foo = b.Foo
+	return m0
+}
+
+type case_M9_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M9_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[9].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type M9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type M9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+type M10 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	SetFoo        *M0 `protobuf:"bytes,2,opt,name=set_foo,json=setFoo" json:"set_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M10) Reset() {
+	*x = M10{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M10) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M10) ProtoMessage() {}
+
+func (x *M10) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M10) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M10) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M10) GetSetFoo() *M0 {
+	if x != nil {
+		return x.SetFoo
+	}
+	return nil
+}
+
+func (x *M10) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M10) SetSetFoo(v *M0) {
+	x.SetFoo = v
+}
+
+func (x *M10) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M10) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetFoo != nil
+}
+
+func (x *M10) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M10) ClearSetFoo() {
+	x.SetFoo = nil
+}
+
+type M10_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo    *M0
+	SetFoo *M0
+}
+
+func (b0 M10_builder) Build() *M10 {
+	m0 := &M10{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.SetFoo = b.SetFoo
+	return m0
+}
+
+type M11 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to SetFoo:
+	//
+	//	*M11_SetSetFoo
+	SetFoo        isM11_SetFoo `protobuf_oneof:"set_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M11) Reset() {
+	*x = M11{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M11) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M11) ProtoMessage() {}
+
+func (x *M11) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M11) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M11) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M11) GetSetFoo() isM11_SetFoo {
+	if x != nil {
+		return x.SetFoo
+	}
+	return nil
+}
+
+func (x *M11) GetSetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.SetFoo.(*M11_SetSetFoo); ok {
+			return x.SetSetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M11) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M11) SetSetSetFoo(v int32) {
+	x.SetFoo = &M11_SetSetFoo{v}
+}
+
+func (x *M11) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M11) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetFoo != nil
+}
+
+func (x *M11) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.SetFoo.(*M11_SetSetFoo)
+	return ok
+}
+
+func (x *M11) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M11) ClearSetFoo() {
+	x.SetFoo = nil
+}
+
+func (x *M11) ClearSetSetFoo() {
+	if _, ok := x.SetFoo.(*M11_SetSetFoo); ok {
+		x.SetFoo = nil
+	}
+}
+
+const M11_SetFoo_not_set_case case_M11_SetFoo = 0
+const M11_SetSetFoo_case case_M11_SetFoo = 2
+
+func (x *M11) WhichSetFoo() case_M11_SetFoo {
+	if x == nil {
+		return M11_SetFoo_not_set_case
+	}
+	switch x.SetFoo.(type) {
+	case *M11_SetSetFoo:
+		return M11_SetSetFoo_case
+	default:
+		return M11_SetFoo_not_set_case
+	}
+}
+
+type M11_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *M0
+	// Fields of oneof SetFoo:
+	SetSetFoo *int32
+	// -- end of SetFoo
+}
+
+func (b0 M11_builder) Build() *M11 {
+	m0 := &M11{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.SetSetFoo != nil {
+		x.SetFoo = &M11_SetSetFoo{*b.SetSetFoo}
+	}
+	return m0
+}
+
+type case_M11_SetFoo protoreflect.FieldNumber
+
+func (x case_M11_SetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[11].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM11_SetFoo interface {
+	isM11_SetFoo()
+}
+
+type M11_SetSetFoo struct {
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+}
+
+func (*M11_SetSetFoo) isM11_SetFoo() {}
+
+type M12 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to SetSetFoo:
+	//
+	//	*M12_SetFoo
+	SetSetFoo     isM12_SetSetFoo `protobuf_oneof:"set_set_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M12) Reset() {
+	*x = M12{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M12) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M12) ProtoMessage() {}
+
+func (x *M12) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M12) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M12) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M12) GetSetSetFoo() isM12_SetSetFoo {
+	if x != nil {
+		return x.SetSetFoo
+	}
+	return nil
+}
+
+func (x *M12) Get_SetFoo() int32 {
+	if x != nil {
+		if x, ok := x.SetSetFoo.(*M12_SetFoo); ok {
+			return x.SetFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_SetFoo instead.
+func (x *M12) GetSetFoo() int32 {
+	return x.Get_SetFoo()
+}
+
+func (x *M12) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M12) Set_SetFoo(v int32) {
+	x.SetSetFoo = &M12_SetFoo{v}
+}
+
+func (x *M12) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M12) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.SetSetFoo != nil
+}
+
+func (x *M12) Has_SetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.SetSetFoo.(*M12_SetFoo)
+	return ok
+}
+
+func (x *M12) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M12) ClearSetSetFoo() {
+	x.SetSetFoo = nil
+}
+
+func (x *M12) Clear_SetFoo() {
+	if _, ok := x.SetSetFoo.(*M12_SetFoo); ok {
+		x.SetSetFoo = nil
+	}
+}
+
+const M12_SetSetFoo_not_set_case case_M12_SetSetFoo = 0
+const M12_SetFoo_case case_M12_SetSetFoo = 2
+
+func (x *M12) WhichSetSetFoo() case_M12_SetSetFoo {
+	if x == nil {
+		return M12_SetSetFoo_not_set_case
+	}
+	switch x.SetSetFoo.(type) {
+	case *M12_SetFoo:
+		return M12_SetFoo_case
+	default:
+		return M12_SetSetFoo_not_set_case
+	}
+}
+
+type M12_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *M0
+	// Fields of oneof SetSetFoo:
+	SetFoo *int32
+	// -- end of SetSetFoo
+}
+
+func (b0 M12_builder) Build() *M12 {
+	m0 := &M12{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.SetFoo != nil {
+		x.SetSetFoo = &M12_SetFoo{*b.SetFoo}
+	}
+	return m0
+}
+
+type case_M12_SetSetFoo protoreflect.FieldNumber
+
+func (x case_M12_SetSetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[12].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM12_SetSetFoo interface {
+	isM12_SetSetFoo()
+}
+
+type M12_SetFoo struct {
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+}
+
+func (*M12_SetFoo) isM12_SetSetFoo() {}
+
+type M13 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	HasFoo        *M0 `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo" json:"has_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M13) Reset() {
+	*x = M13{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M13) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M13) ProtoMessage() {}
+
+func (x *M13) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M13) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M13) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M13) GetHasFoo() *M0 {
+	if x != nil {
+		return x.HasFoo
+	}
+	return nil
+}
+
+func (x *M13) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M13) SetHasFoo(v *M0) {
+	x.HasFoo = v
+}
+
+func (x *M13) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M13) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasFoo != nil
+}
+
+func (x *M13) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M13) ClearHasFoo() {
+	x.HasFoo = nil
+}
+
+type M13_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo    *M0
+	HasFoo *M0
+}
+
+func (b0 M13_builder) Build() *M13 {
+	m0 := &M13{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.HasFoo = b.HasFoo
+	return m0
+}
+
+type M14 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to HasFoo:
+	//
+	//	*M14_HasHasFoo
+	HasFoo        isM14_HasFoo `protobuf_oneof:"has_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M14) Reset() {
+	*x = M14{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M14) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M14) ProtoMessage() {}
+
+func (x *M14) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M14) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M14) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M14) GetHasFoo() isM14_HasFoo {
+	if x != nil {
+		return x.HasFoo
+	}
+	return nil
+}
+
+func (x *M14) GetHasHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.HasFoo.(*M14_HasHasFoo); ok {
+			return x.HasHasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M14) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M14) SetHasHasFoo(v int32) {
+	x.HasFoo = &M14_HasHasFoo{v}
+}
+
+func (x *M14) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M14) Has_HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasFoo != nil
+}
+
+func (x *M14) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.HasFoo.(*M14_HasHasFoo)
+	return ok
+}
+
+func (x *M14) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M14) Clear_HasFoo() {
+	x.HasFoo = nil
+}
+
+func (x *M14) ClearHasHasFoo() {
+	if _, ok := x.HasFoo.(*M14_HasHasFoo); ok {
+		x.HasFoo = nil
+	}
+}
+
+const M14_HasFoo_not_set_case case_M14_HasFoo = 0
+const M14_HasHasFoo_case case_M14_HasFoo = 2
+
+func (x *M14) Which_HasFoo() case_M14_HasFoo {
+	if x == nil {
+		return M14_HasFoo_not_set_case
+	}
+	switch x.HasFoo.(type) {
+	case *M14_HasHasFoo:
+		return M14_HasHasFoo_case
+	default:
+		return M14_HasFoo_not_set_case
+	}
+}
+
+type M14_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0
+	// Fields of oneof HasFoo:
+	HasHasFoo *int32
+	// -- end of HasFoo
+}
+
+func (b0 M14_builder) Build() *M14 {
+	m0 := &M14{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.HasHasFoo != nil {
+		x.HasFoo = &M14_HasHasFoo{*b.HasHasFoo}
+	}
+	return m0
+}
+
+type case_M14_HasFoo protoreflect.FieldNumber
+
+func (x case_M14_HasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[14].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM14_HasFoo interface {
+	isM14_HasFoo()
+}
+
+type M14_HasHasFoo struct {
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+}
+
+func (*M14_HasHasFoo) isM14_HasFoo() {}
+
+type M15 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to HasHasFoo:
+	//
+	//	*M15_HasFoo
+	HasHasFoo     isM15_HasHasFoo `protobuf_oneof:"has_has_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M15) Reset() {
+	*x = M15{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M15) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M15) ProtoMessage() {}
+
+func (x *M15) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M15) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M15) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M15) GetHasHasFoo() isM15_HasHasFoo {
+	if x != nil {
+		return x.HasHasFoo
+	}
+	return nil
+}
+
+func (x *M15) Get_HasFoo() int32 {
+	if x != nil {
+		if x, ok := x.HasHasFoo.(*M15_HasFoo); ok {
+			return x.HasFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_HasFoo instead.
+func (x *M15) GetHasFoo() int32 {
+	return x.Get_HasFoo()
+}
+
+func (x *M15) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M15) Set_HasFoo(v int32) {
+	x.HasHasFoo = &M15_HasFoo{v}
+}
+
+func (x *M15) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M15) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.HasHasFoo != nil
+}
+
+func (x *M15) Has_HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.HasHasFoo.(*M15_HasFoo)
+	return ok
+}
+
+func (x *M15) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M15) ClearHasHasFoo() {
+	x.HasHasFoo = nil
+}
+
+func (x *M15) Clear_HasFoo() {
+	if _, ok := x.HasHasFoo.(*M15_HasFoo); ok {
+		x.HasHasFoo = nil
+	}
+}
+
+const M15_HasHasFoo_not_set_case case_M15_HasHasFoo = 0
+const M15_HasFoo_case case_M15_HasHasFoo = 2
+
+func (x *M15) WhichHasHasFoo() case_M15_HasHasFoo {
+	if x == nil {
+		return M15_HasHasFoo_not_set_case
+	}
+	switch x.HasHasFoo.(type) {
+	case *M15_HasFoo:
+		return M15_HasFoo_case
+	default:
+		return M15_HasHasFoo_not_set_case
+	}
+}
+
+type M15_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0
+	// Fields of oneof HasHasFoo:
+	HasFoo *int32
+	// -- end of HasHasFoo
+}
+
+func (b0 M15_builder) Build() *M15 {
+	m0 := &M15{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.HasFoo != nil {
+		x.HasHasFoo = &M15_HasFoo{*b.HasFoo}
+	}
+	return m0
+}
+
+type case_M15_HasHasFoo protoreflect.FieldNumber
+
+func (x case_M15_HasHasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[15].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM15_HasHasFoo interface {
+	isM15_HasHasFoo()
+}
+
+type M15_HasFoo struct {
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+}
+
+func (*M15_HasFoo) isM15_HasHasFoo() {}
+
+type M16 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	ClearFoo      *M0 `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo" json:"clear_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M16) Reset() {
+	*x = M16{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M16) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M16) ProtoMessage() {}
+
+func (x *M16) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M16) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M16) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M16) GetClearFoo() *M0 {
+	if x != nil {
+		return x.ClearFoo
+	}
+	return nil
+}
+
+func (x *M16) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M16) SetClearFoo(v *M0) {
+	x.ClearFoo = v
+}
+
+func (x *M16) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M16) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearFoo != nil
+}
+
+func (x *M16) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M16) ClearClearFoo() {
+	x.ClearFoo = nil
+}
+
+type M16_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo      *M0
+	ClearFoo *M0
+}
+
+func (b0 M16_builder) Build() *M16 {
+	m0 := &M16{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	x.ClearFoo = b.ClearFoo
+	return m0
+}
+
+type M17 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to ClearFoo:
+	//
+	//	*M17_ClearClearFoo
+	ClearFoo      isM17_ClearFoo `protobuf_oneof:"clear_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M17) Reset() {
+	*x = M17{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M17) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M17) ProtoMessage() {}
+
+func (x *M17) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M17) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M17) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M17) GetClearFoo() isM17_ClearFoo {
+	if x != nil {
+		return x.ClearFoo
+	}
+	return nil
+}
+
+func (x *M17) GetClearClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.ClearFoo.(*M17_ClearClearFoo); ok {
+			return x.ClearClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M17) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M17) SetClearClearFoo(v int32) {
+	x.ClearFoo = &M17_ClearClearFoo{v}
+}
+
+func (x *M17) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M17) Has_ClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearFoo != nil
+}
+
+func (x *M17) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.ClearFoo.(*M17_ClearClearFoo)
+	return ok
+}
+
+func (x *M17) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M17) Clear_ClearFoo() {
+	x.ClearFoo = nil
+}
+
+func (x *M17) ClearClearClearFoo() {
+	if _, ok := x.ClearFoo.(*M17_ClearClearFoo); ok {
+		x.ClearFoo = nil
+	}
+}
+
+const M17_ClearFoo_not_set_case case_M17_ClearFoo = 0
+const M17_ClearClearFoo_case case_M17_ClearFoo = 2
+
+func (x *M17) Which_ClearFoo() case_M17_ClearFoo {
+	if x == nil {
+		return M17_ClearFoo_not_set_case
+	}
+	switch x.ClearFoo.(type) {
+	case *M17_ClearClearFoo:
+		return M17_ClearClearFoo_case
+	default:
+		return M17_ClearFoo_not_set_case
+	}
+}
+
+type M17_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0
+	// Fields of oneof ClearFoo:
+	ClearClearFoo *int32
+	// -- end of ClearFoo
+}
+
+func (b0 M17_builder) Build() *M17 {
+	m0 := &M17{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.ClearClearFoo != nil {
+		x.ClearFoo = &M17_ClearClearFoo{*b.ClearClearFoo}
+	}
+	return m0
+}
+
+type case_M17_ClearFoo protoreflect.FieldNumber
+
+func (x case_M17_ClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[17].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM17_ClearFoo interface {
+	isM17_ClearFoo()
+}
+
+type M17_ClearClearFoo struct {
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+}
+
+func (*M17_ClearClearFoo) isM17_ClearFoo() {}
+
+type M18 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to ClearClearFoo:
+	//
+	//	*M18_ClearFoo
+	ClearClearFoo isM18_ClearClearFoo `protobuf_oneof:"clear_clear_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M18) Reset() {
+	*x = M18{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M18) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M18) ProtoMessage() {}
+
+func (x *M18) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M18) Get_Foo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+// Deprecated: Use Get_Foo instead.
+func (x *M18) GetFoo() *M0 {
+	return x.Get_Foo()
+}
+
+func (x *M18) GetClearClearFoo() isM18_ClearClearFoo {
+	if x != nil {
+		return x.ClearClearFoo
+	}
+	return nil
+}
+
+func (x *M18) Get_ClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.ClearClearFoo.(*M18_ClearFoo); ok {
+			return x.ClearFoo
+		}
+	}
+	return 0
+}
+
+// Deprecated: Use Get_ClearFoo instead.
+func (x *M18) GetClearFoo() int32 {
+	return x.Get_ClearFoo()
+}
+
+func (x *M18) Set_Foo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M18) Set_ClearFoo(v int32) {
+	x.ClearClearFoo = &M18_ClearFoo{v}
+}
+
+func (x *M18) Has_Foo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M18) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.ClearClearFoo != nil
+}
+
+func (x *M18) Has_ClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.ClearClearFoo.(*M18_ClearFoo)
+	return ok
+}
+
+func (x *M18) Clear_Foo() {
+	x.Foo = nil
+}
+
+func (x *M18) ClearClearClearFoo() {
+	x.ClearClearFoo = nil
+}
+
+func (x *M18) Clear_ClearFoo() {
+	if _, ok := x.ClearClearFoo.(*M18_ClearFoo); ok {
+		x.ClearClearFoo = nil
+	}
+}
+
+const M18_ClearClearFoo_not_set_case case_M18_ClearClearFoo = 0
+const M18_ClearFoo_case case_M18_ClearClearFoo = 2
+
+func (x *M18) WhichClearClearFoo() case_M18_ClearClearFoo {
+	if x == nil {
+		return M18_ClearClearFoo_not_set_case
+	}
+	switch x.ClearClearFoo.(type) {
+	case *M18_ClearFoo:
+		return M18_ClearFoo_case
+	default:
+		return M18_ClearClearFoo_not_set_case
+	}
+}
+
+type M18_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0
+	// Fields of oneof ClearClearFoo:
+	ClearFoo *int32
+	// -- end of ClearClearFoo
+}
+
+func (b0 M18_builder) Build() *M18 {
+	m0 := &M18{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.ClearFoo != nil {
+		x.ClearClearFoo = &M18_ClearFoo{*b.ClearFoo}
+	}
+	return m0
+}
+
+type case_M18_ClearClearFoo protoreflect.FieldNumber
+
+func (x case_M18_ClearClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[18].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM18_ClearClearFoo interface {
+	isM18_ClearClearFoo()
+}
+
+type M18_ClearFoo struct {
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+}
+
+func (*M18_ClearFoo) isM18_ClearClearFoo() {}
+
+type M19 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to WhichWhichFoo:
+	//
+	//	*M19_WhichFoo
+	WhichWhichFoo isM19_WhichWhichFoo `protobuf_oneof:"which_which_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M19) Reset() {
+	*x = M19{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M19) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M19) ProtoMessage() {}
+
+func (x *M19) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M19) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+func (x *M19) GetWhichWhichFoo() isM19_WhichWhichFoo {
+	if x != nil {
+		return x.WhichWhichFoo
+	}
+	return nil
+}
+
+func (x *M19) GetWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.WhichWhichFoo.(*M19_WhichFoo); ok {
+			return x.WhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M19) SetFoo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M19) SetWhichFoo(v int32) {
+	x.WhichWhichFoo = &M19_WhichFoo{v}
+}
+
+func (x *M19) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M19) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.WhichWhichFoo != nil
+}
+
+func (x *M19) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.WhichWhichFoo.(*M19_WhichFoo)
+	return ok
+}
+
+func (x *M19) ClearFoo() {
+	x.Foo = nil
+}
+
+func (x *M19) ClearWhichWhichFoo() {
+	x.WhichWhichFoo = nil
+}
+
+func (x *M19) ClearWhichFoo() {
+	if _, ok := x.WhichWhichFoo.(*M19_WhichFoo); ok {
+		x.WhichWhichFoo = nil
+	}
+}
+
+const M19_WhichWhichFoo_not_set_case case_M19_WhichWhichFoo = 0
+const M19_WhichFoo_case case_M19_WhichWhichFoo = 2
+
+func (x *M19) WhichWhichWhichFoo() case_M19_WhichWhichFoo {
+	if x == nil {
+		return M19_WhichWhichFoo_not_set_case
+	}
+	switch x.WhichWhichFoo.(type) {
+	case *M19_WhichFoo:
+		return M19_WhichFoo_case
+	default:
+		return M19_WhichWhichFoo_not_set_case
+	}
+}
+
+type M19_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *M0
+	// Fields of oneof WhichWhichFoo:
+	WhichFoo *int32
+	// -- end of WhichWhichFoo
+}
+
+func (b0 M19_builder) Build() *M19 {
+	m0 := &M19{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.WhichFoo != nil {
+		x.WhichWhichFoo = &M19_WhichFoo{*b.WhichFoo}
+	}
+	return m0
+}
+
+type case_M19_WhichWhichFoo protoreflect.FieldNumber
+
+func (x case_M19_WhichWhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[19].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM19_WhichWhichFoo interface {
+	isM19_WhichWhichFoo()
+}
+
+type M19_WhichFoo struct {
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+}
+
+func (*M19_WhichFoo) isM19_WhichWhichFoo() {}
+
+type M20 struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	// Types that are valid to be assigned to WhichFoo:
+	//
+	//	*M20_WhichWhichFoo
+	WhichFoo      isM20_WhichFoo `protobuf_oneof:"which_foo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M20) Reset() {
+	*x = M20{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M20) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M20) ProtoMessage() {}
+
+func (x *M20) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M20) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+func (x *M20) GetWhichFoo() isM20_WhichFoo {
+	if x != nil {
+		return x.WhichFoo
+	}
+	return nil
+}
+
+func (x *M20) GetWhichWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.WhichFoo.(*M20_WhichWhichFoo); ok {
+			return x.WhichWhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M20) SetFoo(v *M0) {
+	x.Foo = v
+}
+
+func (x *M20) SetWhichWhichFoo(v int32) {
+	x.WhichFoo = &M20_WhichWhichFoo{v}
+}
+
+func (x *M20) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.Foo != nil
+}
+
+func (x *M20) Has_WhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.WhichFoo != nil
+}
+
+func (x *M20) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.WhichFoo.(*M20_WhichWhichFoo)
+	return ok
+}
+
+func (x *M20) ClearFoo() {
+	x.Foo = nil
+}
+
+func (x *M20) Clear_WhichFoo() {
+	x.WhichFoo = nil
+}
+
+func (x *M20) ClearWhichWhichFoo() {
+	if _, ok := x.WhichFoo.(*M20_WhichWhichFoo); ok {
+		x.WhichFoo = nil
+	}
+}
+
+const M20_WhichFoo_not_set_case case_M20_WhichFoo = 0
+const M20_WhichWhichFoo_case case_M20_WhichFoo = 2
+
+func (x *M20) Which_WhichFoo() case_M20_WhichFoo {
+	if x == nil {
+		return M20_WhichFoo_not_set_case
+	}
+	switch x.WhichFoo.(type) {
+	case *M20_WhichWhichFoo:
+		return M20_WhichWhichFoo_case
+	default:
+		return M20_WhichFoo_not_set_case
+	}
+}
+
+type M20_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *M0
+	// Fields of oneof WhichFoo:
+	WhichWhichFoo *int32
+	// -- end of WhichFoo
+}
+
+func (b0 M20_builder) Build() *M20 {
+	m0 := &M20{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Foo = b.Foo
+	if b.WhichWhichFoo != nil {
+		x.WhichFoo = &M20_WhichWhichFoo{*b.WhichWhichFoo}
+	}
+	return m0
+}
+
+type case_M20_WhichFoo protoreflect.FieldNumber
+
+func (x case_M20_WhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[20].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM20_WhichFoo interface {
+	isM20_WhichFoo()
+}
+
+type M20_WhichWhichFoo struct {
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+}
+
+func (*M20_WhichWhichFoo) isM20_WhichFoo() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc = []byte{
+	0x0a, 0x42, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0x14, 0x0a, 0x02, 0x4d, 0x30, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x31, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x02, 0x69, 0x31, 0x22, 0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x31, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x32, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65,
+	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61,
+	0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d,
+	0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x33, 0x12,
+	0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x02, 0x4d, 0x34, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x27,
+	0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61,
+	0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d,
+	0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xbe, 0x01, 0x0a, 0x02, 0x4d, 0x35, 0x12, 0x44, 0x0a, 0x07,
+	0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65,
+	0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63,
+	0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03,
+	0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x02, 0x4d, 0x36, 0x12, 0x27, 0x0a,
+	0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74,
+	0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x02, 0x4d,
+	0x37, 0x12, 0x12, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
+	0x52, 0x03, 0x62, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42,
+	0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xbe,
+	0x01, 0x0a, 0x02, 0x4d, 0x38, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
+	0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x93, 0x01, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67,
+	0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8a, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x30, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x22, 0x71, 0x0a, 0x03, 0x4d, 0x31, 0x31, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x73, 0x65, 0x74, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x6e, 0x0a, 0x03, 0x4d, 0x31, 0x32, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x73,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06,
+	0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8a, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x33, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x68, 0x61, 0x73, 0x46,
+	0x6f, 0x6f, 0x22, 0x71, 0x0a, 0x03, 0x4d, 0x31, 0x34, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f,
+	0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x68, 0x61, 0x73, 0x48, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x68, 0x61,
+	0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x6e, 0x0a, 0x03, 0x4d, 0x31, 0x35, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x68,
+	0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06,
+	0x68, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61,
+	0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x36, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x48, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x08, 0x63, 0x6c,
+	0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x22, 0x7b, 0x0a, 0x03, 0x4d, 0x31, 0x37, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6c,
+	0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x76, 0x0a, 0x03, 0x4d, 0x31, 0x38, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x63, 0x6c, 0x65,
+	0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61,
+	0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x76, 0x0a, 0x03, 0x4d,
+	0x31, 0x39, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x77, 0x68, 0x69, 0x63, 0x68, 0x46, 0x6f, 0x6f,
+	0x42, 0x11, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x7b, 0x0a, 0x03, 0x4d, 0x32, 0x30, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69,
+	0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68,
+	0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f,
+	0x42, 0x63, 0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63,
+	0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e,
+	0x02, 0x10, 0x02, 0x08, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
+	0xe8, 0x07,
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_goTypes = []any{
+	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid3.M0
+	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid3.M1
+	(*M2)(nil),  // 2: net.proto2.go.testdata.nameclashhybrid3.M2
+	(*M3)(nil),  // 3: net.proto2.go.testdata.nameclashhybrid3.M3
+	(*M4)(nil),  // 4: net.proto2.go.testdata.nameclashhybrid3.M4
+	(*M5)(nil),  // 5: net.proto2.go.testdata.nameclashhybrid3.M5
+	(*M6)(nil),  // 6: net.proto2.go.testdata.nameclashhybrid3.M6
+	(*M7)(nil),  // 7: net.proto2.go.testdata.nameclashhybrid3.M7
+	(*M8)(nil),  // 8: net.proto2.go.testdata.nameclashhybrid3.M8
+	(*M9)(nil),  // 9: net.proto2.go.testdata.nameclashhybrid3.M9
+	(*M10)(nil), // 10: net.proto2.go.testdata.nameclashhybrid3.M10
+	(*M11)(nil), // 11: net.proto2.go.testdata.nameclashhybrid3.M11
+	(*M12)(nil), // 12: net.proto2.go.testdata.nameclashhybrid3.M12
+	(*M13)(nil), // 13: net.proto2.go.testdata.nameclashhybrid3.M13
+	(*M14)(nil), // 14: net.proto2.go.testdata.nameclashhybrid3.M14
+	(*M15)(nil), // 15: net.proto2.go.testdata.nameclashhybrid3.M15
+	(*M16)(nil), // 16: net.proto2.go.testdata.nameclashhybrid3.M16
+	(*M17)(nil), // 17: net.proto2.go.testdata.nameclashhybrid3.M17
+	(*M18)(nil), // 18: net.proto2.go.testdata.nameclashhybrid3.M18
+	(*M19)(nil), // 19: net.proto2.go.testdata.nameclashhybrid3.M19
+	(*M20)(nil), // 20: net.proto2.go.testdata.nameclashhybrid3.M20
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_depIdxs = []int32{
+	0,  // 0: net.proto2.go.testdata.nameclashhybrid3.M1.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 1: net.proto2.go.testdata.nameclashhybrid3.M1.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 2: net.proto2.go.testdata.nameclashhybrid3.M1.get_get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 3: net.proto2.go.testdata.nameclashhybrid3.M2.get_get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 4: net.proto2.go.testdata.nameclashhybrid3.M2.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 5: net.proto2.go.testdata.nameclashhybrid3.M2.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 6: net.proto2.go.testdata.nameclashhybrid3.M3.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 7: net.proto2.go.testdata.nameclashhybrid3.M3.get_get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 8: net.proto2.go.testdata.nameclashhybrid3.M3.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 9: net.proto2.go.testdata.nameclashhybrid3.M4.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 10: net.proto2.go.testdata.nameclashhybrid3.M4.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 11: net.proto2.go.testdata.nameclashhybrid3.M5.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 12: net.proto2.go.testdata.nameclashhybrid3.M5.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 13: net.proto2.go.testdata.nameclashhybrid3.M6.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 14: net.proto2.go.testdata.nameclashhybrid3.M6.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 15: net.proto2.go.testdata.nameclashhybrid3.M7.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 16: net.proto2.go.testdata.nameclashhybrid3.M8.get_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 17: net.proto2.go.testdata.nameclashhybrid3.M8.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 18: net.proto2.go.testdata.nameclashhybrid3.M9.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 19: net.proto2.go.testdata.nameclashhybrid3.M10.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 20: net.proto2.go.testdata.nameclashhybrid3.M10.set_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 21: net.proto2.go.testdata.nameclashhybrid3.M11.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 22: net.proto2.go.testdata.nameclashhybrid3.M12.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 23: net.proto2.go.testdata.nameclashhybrid3.M13.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 24: net.proto2.go.testdata.nameclashhybrid3.M13.has_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 25: net.proto2.go.testdata.nameclashhybrid3.M14.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 26: net.proto2.go.testdata.nameclashhybrid3.M15.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 27: net.proto2.go.testdata.nameclashhybrid3.M16.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 28: net.proto2.go.testdata.nameclashhybrid3.M16.clear_foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 29: net.proto2.go.testdata.nameclashhybrid3.M17.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 30: net.proto2.go.testdata.nameclashhybrid3.M18.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 31: net.proto2.go.testdata.nameclashhybrid3.M19.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	0,  // 32: net.proto2.go.testdata.nameclashhybrid3.M20.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
+	33, // [33:33] is the sub-list for method output_type
+	33, // [33:33] is the sub-list for method input_type
+	33, // [33:33] is the sub-list for extension type_name
+	33, // [33:33] is the sub-list for extension extendee
+	0,  // [0:33] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[4].OneofWrappers = []any{
+		(*M4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[5].OneofWrappers = []any{
+		(*M5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[6].OneofWrappers = []any{
+		(*M6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[7].OneofWrappers = []any{
+		(*M7_Bar)(nil),
+		(*M7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[8].OneofWrappers = []any{
+		(*M8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[9].OneofWrappers = []any{
+		(*M9_GetGetFoo)(nil),
+		(*M9_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[11].OneofWrappers = []any{
+		(*M11_SetSetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[12].OneofWrappers = []any{
+		(*M12_SetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[14].OneofWrappers = []any{
+		(*M14_HasHasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[15].OneofWrappers = []any{
+		(*M15_HasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[17].OneofWrappers = []any{
+		(*M17_ClearClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[18].OneofWrappers = []any{
+		(*M18_ClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[19].OneofWrappers = []any{
+		(*M19_WhichFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[20].OneofWrappers = []any{
+		(*M20_WhichWhichFoo)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   21,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque/test_name_clash_opaque.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque/test_name_clash_opaque.pb.go
new file mode 100644
index 0000000..a240258
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque/test_name_clash_opaque.pb.go
@@ -0,0 +1,3516 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque.proto
+
+package test_name_clash_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type M1 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M1) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M1) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return 0
+}
+
+func (x *M1) GetGetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo
+	}
+	return 0
+}
+
+func (x *M1) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M1) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M1) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M1) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M1) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M1) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M1) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M1) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_GetFoo_ = 0
+}
+
+func (x *M1) ClearGetGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_GetGetFoo = 0
+}
+
+type M1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo       *int32
+	GetFoo    *int32
+	GetGetFoo *int32
+}
+
+func (b0 M1_builder) Build() *M1 {
+	m0 := &M1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_GetFoo_ = *b.GetFoo
+	}
+	if b.GetGetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_GetGetFoo = *b.GetGetFoo
+	}
+	return m0
+}
+
+type M2 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M2) GetGetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo
+	}
+	return 0
+}
+
+func (x *M2) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return 0
+}
+
+func (x *M2) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M2) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M2) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M2) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M2) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M2) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M2) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M2) ClearGetGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_GetGetFoo = 0
+}
+
+func (x *M2) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_GetFoo_ = 0
+}
+
+func (x *M2) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo = 0
+}
+
+type M2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo *int32
+	GetFoo    *int32
+	Foo       *int32
+}
+
+func (b0 M2_builder) Build() *M2 {
+	m0 := &M2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_GetGetFoo = *b.GetGetFoo
+	}
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_GetFoo_ = *b.GetFoo
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	return m0
+}
+
+type M3 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo_  int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M3) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return 0
+}
+
+func (x *M3) GetGetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo_
+	}
+	return 0
+}
+
+func (x *M3) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return 0
+}
+
+func (x *M3) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M3) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M3) SetFoo(v int32) {
+	x.xxx_hidden_Foo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M3) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M3) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M3) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M3) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_GetFoo = 0
+}
+
+func (x *M3) ClearGetGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_GetGetFoo_ = 0
+}
+
+func (x *M3) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo_ = 0
+}
+
+type M3_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo    *int32
+	GetGetFoo *int32
+	Foo       *int32
+}
+
+func (b0 M3_builder) Build() *M3 {
+	m0 := &M3{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_GetFoo = *b.GetFoo
+	}
+	if b.GetGetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_GetGetFoo_ = *b.GetGetFoo
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo_ = *b.Foo
+	}
+	return m0
+}
+
+type M4 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo_  isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M4) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return 0
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return 0
+}
+
+func (x *M4) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M4) SetGetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo_ = &m4_GetGetGetFoo{v}
+}
+
+func (x *M4) SetFoo(v int32) {
+	x.xxx_hidden_Foo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M4) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M4) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo_ != nil
+}
+
+func (x *M4) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo)
+	return ok
+}
+
+func (x *M4) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M4) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_GetFoo = 0
+}
+
+func (x *M4) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo_ = nil
+}
+
+func (x *M4) ClearGetGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo); ok {
+		x.xxx_hidden_GetGetFoo_ = nil
+	}
+}
+
+func (x *M4) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo_ = 0
+}
+
+const M4_GetGetFoo__not_set_case case_M4_GetGetFoo_ = 0
+const M4_GetGetGetFoo_case case_M4_GetGetFoo_ = 3
+
+func (x *M4) WhichGetGetFoo() case_M4_GetGetFoo_ {
+	if x == nil {
+		return M4_GetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo_.(type) {
+	case *m4_GetGetGetFoo:
+		return M4_GetGetGetFoo_case
+	default:
+		return M4_GetGetFoo__not_set_case
+	}
+}
+
+type M4_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *int32
+	// Fields of oneof xxx_hidden_GetGetFoo_:
+	GetGetGetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo_
+	Foo *int32
+}
+
+func (b0 M4_builder) Build() *M4 {
+	m0 := &M4{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_GetFoo = *b.GetFoo
+	}
+	if b.GetGetGetFoo != nil {
+		x.xxx_hidden_GetGetFoo_ = &m4_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo_ = *b.Foo
+	}
+	return m0
+}
+
+type case_M4_GetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M4_GetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[3].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type m4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*m4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state                   protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_Foo_         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
+	XXX_presence            [1]uint32
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M5) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return 0
+}
+
+func (x *M5) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M5) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return 0
+}
+
+func (x *M5) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M5) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo = &m5_GetGetFoo_{v}
+}
+
+func (x *M5) SetFoo(v int32) {
+	x.xxx_hidden_Foo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M5) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M5) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo != nil
+}
+
+func (x *M5) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_)
+	return ok
+}
+
+func (x *M5) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M5) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_GetFoo = 0
+}
+
+func (x *M5) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo = nil
+}
+
+func (x *M5) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_); ok {
+		x.xxx_hidden_GetGetGetFoo = nil
+	}
+}
+
+func (x *M5) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo_ = 0
+}
+
+const M5_GetGetGetFoo_not_set_case case_M5_GetGetGetFoo = 0
+const M5_GetGetFoo__case case_M5_GetGetGetFoo = 3
+
+func (x *M5) WhichGetGetGetFoo() case_M5_GetGetGetFoo {
+	if x == nil {
+		return M5_GetGetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo.(type) {
+	case *m5_GetGetFoo_:
+		return M5_GetGetFoo__case
+	default:
+		return M5_GetGetGetFoo_not_set_case
+	}
+}
+
+type M5_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *int32
+	// Fields of oneof xxx_hidden_GetGetGetFoo:
+	GetGetFoo *int32
+	// -- end of xxx_hidden_GetGetGetFoo
+	Foo *int32
+}
+
+func (b0 M5_builder) Build() *M5 {
+	m0 := &M5{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_GetFoo = *b.GetFoo
+	}
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo = &m5_GetGetFoo_{*b.GetGetFoo}
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo_ = *b.Foo
+	}
+	return m0
+}
+
+type case_M5_GetGetGetFoo protoreflect.FieldNumber
+
+func (x case_M5_GetGetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type m5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*m5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo   isM6_GetGetFoo         `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return 0
+}
+
+func (x *M6) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M6) SetGetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = &m6_GetGetGetFoo{v}
+}
+
+func (x *M6) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M6) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M6) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M6) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo)
+	return ok
+}
+
+func (x *M6) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M6) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M6) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+func (x *M6) ClearGetGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M6) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_GetFoo_ = 0
+}
+
+func (x *M6) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo = 0
+}
+
+const M6_GetGetFoo_not_set_case case_M6_GetGetFoo = 0
+const M6_GetGetGetFoo_case case_M6_GetGetFoo = 3
+
+func (x *M6) WhichGetGetFoo() case_M6_GetGetFoo {
+	if x == nil {
+		return M6_GetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo.(type) {
+	case *m6_GetGetGetFoo:
+		return M6_GetGetGetFoo_case
+	default:
+		return M6_GetGetFoo_not_set_case
+	}
+}
+
+type M6_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetFoo:
+	GetGetGetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo
+	GetFoo *int32
+	Foo    *int32
+}
+
+func (b0 M6_builder) Build() *M6 {
+	m0 := &M6{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetGetFoo != nil {
+		x.xxx_hidden_GetGetFoo = &m6_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_GetFoo_ = *b.GetFoo
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	return m0
+}
+
+type case_M6_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M6_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[5].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type m6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*m6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo   isM7_GetGetFoo         `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M7) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M7) SetBar(v bool) {
+	x.xxx_hidden_GetGetFoo = &m7_Bar{v}
+}
+
+func (x *M7) SetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = &m7_GetFoo_{v}
+}
+
+func (x *M7) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *M7) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M7) HasBar() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar)
+	return ok
+}
+
+func (x *M7) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_)
+	return ok
+}
+
+func (x *M7) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M7) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+func (x *M7) ClearBar() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M7) ClearGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M7) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_Foo = 0
+}
+
+const M7_GetGetFoo_not_set_case case_M7_GetGetFoo = 0
+const M7_Bar_case case_M7_GetGetFoo = 4
+const M7_GetFoo__case case_M7_GetGetFoo = 3
+
+func (x *M7) WhichGetGetFoo() case_M7_GetGetFoo {
+	if x == nil {
+		return M7_GetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo.(type) {
+	case *m7_Bar:
+		return M7_Bar_case
+	case *m7_GetFoo_:
+		return M7_GetFoo__case
+	default:
+		return M7_GetGetFoo_not_set_case
+	}
+}
+
+type M7_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  Bar                   | -                  | -    | Bar
+	//  GetFoo                | foo                | 1    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+
+	// Fields of oneof xxx_hidden_GetGetFoo:
+	Bar    *bool
+	GetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo
+	Foo *int32
+}
+
+func (b0 M7_builder) Build() *M7 {
+	m0 := &M7{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Bar != nil {
+		x.xxx_hidden_GetGetFoo = &m7_Bar{*b.Bar}
+	}
+	if b.GetFoo != nil {
+		x.xxx_hidden_GetGetFoo = &m7_GetFoo_{*b.GetFoo}
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	return m0
+}
+
+type case_M7_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M7_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[6].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type m7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type m7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*m7_Bar) isM7_GetGetFoo() {}
+
+func (*m7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetGetFoo_ isM8_GetGetGetFoo_     `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_GetFoo_       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M8) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M8) GetGetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return 0
+}
+
+func (x *M8) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M8) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m8_GetGetFoo{v}
+}
+
+func (x *M8) SetGetFoo(v int32) {
+	x.xxx_hidden_GetFoo_ = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M8) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M8) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo_ != nil
+}
+
+func (x *M8) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo)
+	return ok
+}
+
+func (x *M8) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M8) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M8) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo_ = nil
+}
+
+func (x *M8) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M8) ClearGetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_GetFoo_ = 0
+}
+
+func (x *M8) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Foo = 0
+}
+
+const M8_GetGetGetFoo__not_set_case case_M8_GetGetGetFoo_ = 0
+const M8_GetGetFoo_case case_M8_GetGetGetFoo_ = 3
+
+func (x *M8) WhichGetGetGetFoo() case_M8_GetGetGetFoo_ {
+	if x == nil {
+		return M8_GetGetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo_.(type) {
+	case *m8_GetGetFoo:
+		return M8_GetGetFoo_case
+	default:
+		return M8_GetGetGetFoo__not_set_case
+	}
+}
+
+type M8_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetGetFoo_:
+	GetGetFoo *int32
+	// -- end of xxx_hidden_GetGetGetFoo_
+	GetFoo *int32
+	Foo    *int32
+}
+
+func (b0 M8_builder) Build() *M8 {
+	m0 := &M8{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m8_GetGetFoo{*b.GetGetFoo}
+	}
+	if b.GetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_GetFoo_ = *b.GetFoo
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	return m0
+}
+
+type case_M8_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M8_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[7].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type m8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*m8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetGetFoo_ isM9_GetGetGetFoo_     `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M9) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M9) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m9_GetGetFoo{v}
+}
+
+func (x *M9) SetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m9_GetFoo_{v}
+}
+
+func (x *M9) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *M9) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo_ != nil
+}
+
+func (x *M9) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo)
+	return ok
+}
+
+func (x *M9) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_)
+	return ok
+}
+
+func (x *M9) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M9) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo_ = nil
+}
+
+func (x *M9) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) ClearGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_Foo = 0
+}
+
+const M9_GetGetGetFoo__not_set_case case_M9_GetGetGetFoo_ = 0
+const M9_GetGetFoo_case case_M9_GetGetGetFoo_ = 3
+const M9_GetFoo__case case_M9_GetGetGetFoo_ = 2
+
+func (x *M9) WhichGetGetGetFoo() case_M9_GetGetGetFoo_ {
+	if x == nil {
+		return M9_GetGetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo_.(type) {
+	case *m9_GetGetFoo:
+		return M9_GetGetFoo_case
+	case *m9_GetFoo_:
+		return M9_GetFoo__case
+	default:
+		return M9_GetGetGetFoo__not_set_case
+	}
+}
+
+type M9_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//  GetFoo                | get_get_foo        | 2    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetGetFoo_:
+	GetGetFoo *int32
+	GetFoo    *int32
+	// -- end of xxx_hidden_GetGetGetFoo_
+	Foo *int32
+}
+
+func (b0 M9_builder) Build() *M9 {
+	m0 := &M9{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m9_GetGetFoo{*b.GetGetFoo}
+	}
+	if b.GetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m9_GetFoo_{*b.GetFoo}
+	}
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	return m0
+}
+
+type case_M9_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M9_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[8].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type m9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type m9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*m9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*m9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+type M10 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetFoo      int32                  `protobuf:"varint,2,opt,name=set_foo,json=setFoo" json:"set_foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M10) Reset() {
+	*x = M10{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M10) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M10) ProtoMessage() {}
+
+func (x *M10) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M10) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M10) GetSetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_SetFoo
+	}
+	return 0
+}
+
+func (x *M10) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M10) SetSetFoo(v int32) {
+	x.xxx_hidden_SetFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *M10) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M10) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M10) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M10) ClearSetFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_SetFoo = 0
+}
+
+type M10_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo    *int32
+	SetFoo *int32
+}
+
+func (b0 M10_builder) Build() *M10 {
+	m0 := &M10{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.SetFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_SetFoo = *b.SetFoo
+	}
+	return m0
+}
+
+type M11 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetFoo      isM11_SetFoo           `protobuf_oneof:"set_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M11) Reset() {
+	*x = M11{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M11) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M11) ProtoMessage() {}
+
+func (x *M11) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M11) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M11) GetSetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo); ok {
+			return x.SetSetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M11) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M11) SetSetSetFoo(v int32) {
+	x.xxx_hidden_SetFoo = &m11_SetSetFoo{v}
+}
+
+func (x *M11) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M11) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SetFoo != nil
+}
+
+func (x *M11) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo)
+	return ok
+}
+
+func (x *M11) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M11) ClearSetFoo() {
+	x.xxx_hidden_SetFoo = nil
+}
+
+func (x *M11) ClearSetSetFoo() {
+	if _, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo); ok {
+		x.xxx_hidden_SetFoo = nil
+	}
+}
+
+const M11_SetFoo_not_set_case case_M11_SetFoo = 0
+const M11_SetSetFoo_case case_M11_SetFoo = 2
+
+func (x *M11) WhichSetFoo() case_M11_SetFoo {
+	if x == nil {
+		return M11_SetFoo_not_set_case
+	}
+	switch x.xxx_hidden_SetFoo.(type) {
+	case *m11_SetSetFoo:
+		return M11_SetSetFoo_case
+	default:
+		return M11_SetFoo_not_set_case
+	}
+}
+
+type M11_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_SetFoo:
+	SetSetFoo *int32
+	// -- end of xxx_hidden_SetFoo
+}
+
+func (b0 M11_builder) Build() *M11 {
+	m0 := &M11{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.SetSetFoo != nil {
+		x.xxx_hidden_SetFoo = &m11_SetSetFoo{*b.SetSetFoo}
+	}
+	return m0
+}
+
+type case_M11_SetFoo protoreflect.FieldNumber
+
+func (x case_M11_SetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[10].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM11_SetFoo interface {
+	isM11_SetFoo()
+}
+
+type m11_SetSetFoo struct {
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+}
+
+func (*m11_SetSetFoo) isM11_SetFoo() {}
+
+type M12 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetSetFoo   isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M12) Reset() {
+	*x = M12{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M12) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M12) ProtoMessage() {}
+
+func (x *M12) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M12) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M12) GetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo); ok {
+			return x.SetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M12) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M12) SetSetFoo(v int32) {
+	x.xxx_hidden_SetSetFoo = &m12_SetFoo{v}
+}
+
+func (x *M12) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M12) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SetSetFoo != nil
+}
+
+func (x *M12) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo)
+	return ok
+}
+
+func (x *M12) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M12) ClearSetSetFoo() {
+	x.xxx_hidden_SetSetFoo = nil
+}
+
+func (x *M12) ClearSetFoo() {
+	if _, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo); ok {
+		x.xxx_hidden_SetSetFoo = nil
+	}
+}
+
+const M12_SetSetFoo_not_set_case case_M12_SetSetFoo = 0
+const M12_SetFoo_case case_M12_SetSetFoo = 2
+
+func (x *M12) WhichSetSetFoo() case_M12_SetSetFoo {
+	if x == nil {
+		return M12_SetSetFoo_not_set_case
+	}
+	switch x.xxx_hidden_SetSetFoo.(type) {
+	case *m12_SetFoo:
+		return M12_SetFoo_case
+	default:
+		return M12_SetSetFoo_not_set_case
+	}
+}
+
+type M12_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_SetSetFoo:
+	SetFoo *int32
+	// -- end of xxx_hidden_SetSetFoo
+}
+
+func (b0 M12_builder) Build() *M12 {
+	m0 := &M12{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.SetFoo != nil {
+		x.xxx_hidden_SetSetFoo = &m12_SetFoo{*b.SetFoo}
+	}
+	return m0
+}
+
+type case_M12_SetSetFoo protoreflect.FieldNumber
+
+func (x case_M12_SetSetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[11].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM12_SetSetFoo interface {
+	isM12_SetSetFoo()
+}
+
+type m12_SetFoo struct {
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+}
+
+func (*m12_SetFoo) isM12_SetSetFoo() {}
+
+type M13 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasFoo      int32                  `protobuf:"varint,2,opt,name=has_foo,json=hasFoo" json:"has_foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M13) Reset() {
+	*x = M13{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M13) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M13) ProtoMessage() {}
+
+func (x *M13) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M13) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M13) GetHasFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_HasFoo
+	}
+	return 0
+}
+
+func (x *M13) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M13) SetHasFoo(v int32) {
+	x.xxx_hidden_HasFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *M13) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M13) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M13) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M13) ClearHasFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_HasFoo = 0
+}
+
+type M13_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo    *int32
+	HasFoo *int32
+}
+
+func (b0 M13_builder) Build() *M13 {
+	m0 := &M13{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.HasFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_HasFoo = *b.HasFoo
+	}
+	return m0
+}
+
+type M14 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasFoo      isM14_HasFoo           `protobuf_oneof:"has_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M14) Reset() {
+	*x = M14{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M14) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M14) ProtoMessage() {}
+
+func (x *M14) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M14) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M14) GetHasHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo); ok {
+			return x.HasHasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M14) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M14) SetHasHasFoo(v int32) {
+	x.xxx_hidden_HasFoo = &m14_HasHasFoo{v}
+}
+
+func (x *M14) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M14) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_HasFoo != nil
+}
+
+func (x *M14) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo)
+	return ok
+}
+
+func (x *M14) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M14) ClearHasFoo() {
+	x.xxx_hidden_HasFoo = nil
+}
+
+func (x *M14) ClearHasHasFoo() {
+	if _, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo); ok {
+		x.xxx_hidden_HasFoo = nil
+	}
+}
+
+const M14_HasFoo_not_set_case case_M14_HasFoo = 0
+const M14_HasHasFoo_case case_M14_HasFoo = 2
+
+func (x *M14) WhichHasFoo() case_M14_HasFoo {
+	if x == nil {
+		return M14_HasFoo_not_set_case
+	}
+	switch x.xxx_hidden_HasFoo.(type) {
+	case *m14_HasHasFoo:
+		return M14_HasHasFoo_case
+	default:
+		return M14_HasFoo_not_set_case
+	}
+}
+
+type M14_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_HasFoo:
+	HasHasFoo *int32
+	// -- end of xxx_hidden_HasFoo
+}
+
+func (b0 M14_builder) Build() *M14 {
+	m0 := &M14{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.HasHasFoo != nil {
+		x.xxx_hidden_HasFoo = &m14_HasHasFoo{*b.HasHasFoo}
+	}
+	return m0
+}
+
+type case_M14_HasFoo protoreflect.FieldNumber
+
+func (x case_M14_HasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[13].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM14_HasFoo interface {
+	isM14_HasFoo()
+}
+
+type m14_HasHasFoo struct {
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+}
+
+func (*m14_HasHasFoo) isM14_HasFoo() {}
+
+type M15 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasHasFoo   isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M15) Reset() {
+	*x = M15{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M15) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M15) ProtoMessage() {}
+
+func (x *M15) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M15) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M15) GetHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo); ok {
+			return x.HasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M15) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M15) SetHasFoo(v int32) {
+	x.xxx_hidden_HasHasFoo = &m15_HasFoo{v}
+}
+
+func (x *M15) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M15) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_HasHasFoo != nil
+}
+
+func (x *M15) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo)
+	return ok
+}
+
+func (x *M15) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M15) ClearHasHasFoo() {
+	x.xxx_hidden_HasHasFoo = nil
+}
+
+func (x *M15) ClearHasFoo() {
+	if _, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo); ok {
+		x.xxx_hidden_HasHasFoo = nil
+	}
+}
+
+const M15_HasHasFoo_not_set_case case_M15_HasHasFoo = 0
+const M15_HasFoo_case case_M15_HasHasFoo = 2
+
+func (x *M15) WhichHasHasFoo() case_M15_HasHasFoo {
+	if x == nil {
+		return M15_HasHasFoo_not_set_case
+	}
+	switch x.xxx_hidden_HasHasFoo.(type) {
+	case *m15_HasFoo:
+		return M15_HasFoo_case
+	default:
+		return M15_HasHasFoo_not_set_case
+	}
+}
+
+type M15_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_HasHasFoo:
+	HasFoo *int32
+	// -- end of xxx_hidden_HasHasFoo
+}
+
+func (b0 M15_builder) Build() *M15 {
+	m0 := &M15{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.HasFoo != nil {
+		x.xxx_hidden_HasHasFoo = &m15_HasFoo{*b.HasFoo}
+	}
+	return m0
+}
+
+type case_M15_HasHasFoo protoreflect.FieldNumber
+
+func (x case_M15_HasHasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[14].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM15_HasHasFoo interface {
+	isM15_HasHasFoo()
+}
+
+type m15_HasFoo struct {
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+}
+
+func (*m15_HasFoo) isM15_HasHasFoo() {}
+
+type M16 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearFoo    int32                  `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo" json:"clear_foo,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M16) Reset() {
+	*x = M16{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M16) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M16) ProtoMessage() {}
+
+func (x *M16) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M16) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M16) GetClearFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_ClearFoo
+	}
+	return 0
+}
+
+func (x *M16) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M16) SetClearFoo(v int32) {
+	x.xxx_hidden_ClearFoo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *M16) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M16) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M16) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M16) ClearClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_ClearFoo = 0
+}
+
+type M16_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo      *int32
+	ClearFoo *int32
+}
+
+func (b0 M16_builder) Build() *M16 {
+	m0 := &M16{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.ClearFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_ClearFoo = *b.ClearFoo
+	}
+	return m0
+}
+
+type M17 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearFoo    isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M17) Reset() {
+	*x = M17{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M17) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M17) ProtoMessage() {}
+
+func (x *M17) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M17) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M17) GetClearClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo); ok {
+			return x.ClearClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M17) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M17) SetClearClearFoo(v int32) {
+	x.xxx_hidden_ClearFoo = &m17_ClearClearFoo{v}
+}
+
+func (x *M17) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M17) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ClearFoo != nil
+}
+
+func (x *M17) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo)
+	return ok
+}
+
+func (x *M17) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M17) ClearClearFoo() {
+	x.xxx_hidden_ClearFoo = nil
+}
+
+func (x *M17) ClearClearClearFoo() {
+	if _, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo); ok {
+		x.xxx_hidden_ClearFoo = nil
+	}
+}
+
+const M17_ClearFoo_not_set_case case_M17_ClearFoo = 0
+const M17_ClearClearFoo_case case_M17_ClearFoo = 2
+
+func (x *M17) WhichClearFoo() case_M17_ClearFoo {
+	if x == nil {
+		return M17_ClearFoo_not_set_case
+	}
+	switch x.xxx_hidden_ClearFoo.(type) {
+	case *m17_ClearClearFoo:
+		return M17_ClearClearFoo_case
+	default:
+		return M17_ClearFoo_not_set_case
+	}
+}
+
+type M17_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_ClearFoo:
+	ClearClearFoo *int32
+	// -- end of xxx_hidden_ClearFoo
+}
+
+func (b0 M17_builder) Build() *M17 {
+	m0 := &M17{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.ClearClearFoo != nil {
+		x.xxx_hidden_ClearFoo = &m17_ClearClearFoo{*b.ClearClearFoo}
+	}
+	return m0
+}
+
+type case_M17_ClearFoo protoreflect.FieldNumber
+
+func (x case_M17_ClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[16].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM17_ClearFoo interface {
+	isM17_ClearFoo()
+}
+
+type m17_ClearClearFoo struct {
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+}
+
+func (*m17_ClearClearFoo) isM17_ClearFoo() {}
+
+type M18 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M18) Reset() {
+	*x = M18{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M18) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M18) ProtoMessage() {}
+
+func (x *M18) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M18) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M18) GetClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo); ok {
+			return x.ClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M18) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M18) SetClearFoo(v int32) {
+	x.xxx_hidden_ClearClearFoo = &m18_ClearFoo{v}
+}
+
+func (x *M18) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M18) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ClearClearFoo != nil
+}
+
+func (x *M18) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo)
+	return ok
+}
+
+func (x *M18) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M18) ClearClearClearFoo() {
+	x.xxx_hidden_ClearClearFoo = nil
+}
+
+func (x *M18) ClearClearFoo() {
+	if _, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo); ok {
+		x.xxx_hidden_ClearClearFoo = nil
+	}
+}
+
+const M18_ClearClearFoo_not_set_case case_M18_ClearClearFoo = 0
+const M18_ClearFoo_case case_M18_ClearClearFoo = 2
+
+func (x *M18) WhichClearClearFoo() case_M18_ClearClearFoo {
+	if x == nil {
+		return M18_ClearClearFoo_not_set_case
+	}
+	switch x.xxx_hidden_ClearClearFoo.(type) {
+	case *m18_ClearFoo:
+		return M18_ClearFoo_case
+	default:
+		return M18_ClearClearFoo_not_set_case
+	}
+}
+
+type M18_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_ClearClearFoo:
+	ClearFoo *int32
+	// -- end of xxx_hidden_ClearClearFoo
+}
+
+func (b0 M18_builder) Build() *M18 {
+	m0 := &M18{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.ClearFoo != nil {
+		x.xxx_hidden_ClearClearFoo = &m18_ClearFoo{*b.ClearFoo}
+	}
+	return m0
+}
+
+type case_M18_ClearClearFoo protoreflect.FieldNumber
+
+func (x case_M18_ClearClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[17].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM18_ClearClearFoo interface {
+	isM18_ClearClearFoo()
+}
+
+type m18_ClearFoo struct {
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+}
+
+func (*m18_ClearFoo) isM18_ClearClearFoo() {}
+
+type M19 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M19) Reset() {
+	*x = M19{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M19) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M19) ProtoMessage() {}
+
+func (x *M19) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M19) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M19) GetWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo); ok {
+			return x.WhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M19) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M19) SetWhichFoo(v int32) {
+	x.xxx_hidden_WhichWhichFoo = &m19_WhichFoo{v}
+}
+
+func (x *M19) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M19) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_WhichWhichFoo != nil
+}
+
+func (x *M19) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo)
+	return ok
+}
+
+func (x *M19) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M19) ClearWhichWhichFoo() {
+	x.xxx_hidden_WhichWhichFoo = nil
+}
+
+func (x *M19) ClearWhichFoo() {
+	if _, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo); ok {
+		x.xxx_hidden_WhichWhichFoo = nil
+	}
+}
+
+const M19_WhichWhichFoo_not_set_case case_M19_WhichWhichFoo = 0
+const M19_WhichFoo_case case_M19_WhichWhichFoo = 2
+
+func (x *M19) WhichWhichWhichFoo() case_M19_WhichWhichFoo {
+	if x == nil {
+		return M19_WhichWhichFoo_not_set_case
+	}
+	switch x.xxx_hidden_WhichWhichFoo.(type) {
+	case *m19_WhichFoo:
+		return M19_WhichFoo_case
+	default:
+		return M19_WhichWhichFoo_not_set_case
+	}
+}
+
+type M19_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *int32
+	// Fields of oneof xxx_hidden_WhichWhichFoo:
+	WhichFoo *int32
+	// -- end of xxx_hidden_WhichWhichFoo
+}
+
+func (b0 M19_builder) Build() *M19 {
+	m0 := &M19{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.WhichFoo != nil {
+		x.xxx_hidden_WhichWhichFoo = &m19_WhichFoo{*b.WhichFoo}
+	}
+	return m0
+}
+
+type case_M19_WhichWhichFoo protoreflect.FieldNumber
+
+func (x case_M19_WhichWhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[18].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM19_WhichWhichFoo interface {
+	isM19_WhichWhichFoo()
+}
+
+type m19_WhichFoo struct {
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+}
+
+func (*m19_WhichFoo) isM19_WhichWhichFoo() {}
+
+type M20 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_WhichFoo    isM20_WhichFoo         `protobuf_oneof:"which_foo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M20) Reset() {
+	*x = M20{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M20) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M20) ProtoMessage() {}
+
+func (x *M20) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M20) GetFoo() int32 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return 0
+}
+
+func (x *M20) GetWhichWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo); ok {
+			return x.WhichWhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M20) SetFoo(v int32) {
+	x.xxx_hidden_Foo = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *M20) SetWhichWhichFoo(v int32) {
+	x.xxx_hidden_WhichFoo = &m20_WhichWhichFoo{v}
+}
+
+func (x *M20) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M20) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_WhichFoo != nil
+}
+
+func (x *M20) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo)
+	return ok
+}
+
+func (x *M20) ClearFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Foo = 0
+}
+
+func (x *M20) ClearWhichFoo() {
+	x.xxx_hidden_WhichFoo = nil
+}
+
+func (x *M20) ClearWhichWhichFoo() {
+	if _, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo); ok {
+		x.xxx_hidden_WhichFoo = nil
+	}
+}
+
+const M20_WhichFoo_not_set_case case_M20_WhichFoo = 0
+const M20_WhichWhichFoo_case case_M20_WhichFoo = 2
+
+func (x *M20) WhichWhichFoo() case_M20_WhichFoo {
+	if x == nil {
+		return M20_WhichFoo_not_set_case
+	}
+	switch x.xxx_hidden_WhichFoo.(type) {
+	case *m20_WhichWhichFoo:
+		return M20_WhichWhichFoo_case
+	default:
+		return M20_WhichFoo_not_set_case
+	}
+}
+
+type M20_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *int32
+	// Fields of oneof xxx_hidden_WhichFoo:
+	WhichWhichFoo *int32
+	// -- end of xxx_hidden_WhichFoo
+}
+
+func (b0 M20_builder) Build() *M20 {
+	m0 := &M20{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Foo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Foo = *b.Foo
+	}
+	if b.WhichWhichFoo != nil {
+		x.xxx_hidden_WhichFoo = &m20_WhichWhichFoo{*b.WhichWhichFoo}
+	}
+	return m0
+}
+
+type case_M20_WhichFoo protoreflect.FieldNumber
+
+func (x case_M20_WhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[19].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM20_WhichFoo interface {
+	isM20_WhichFoo()
+}
+
+type m20_WhichWhichFoo struct {
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+}
+
+func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc = []byte{
+	0x0a, 0x41, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x26, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
+	0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
+	0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x1a, 0x21, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f,
+	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4f,
+	0x0a, 0x02, 0x4d, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0x4f, 0x0a, 0x02, 0x4d, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10,
+	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f,
+	0x22, 0x4f, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x22, 0x67, 0x0a, 0x02, 0x4d, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74,
+	0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x64, 0x0a, 0x02, 0x4d, 0x35,
+	0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74,
+	0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
+	0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a,
+	0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x22, 0x67, 0x0a, 0x02, 0x4d, 0x36, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x54, 0x0a, 0x02, 0x4d, 0x37, 0x12,
+	0x12, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03,
+	0x62, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10,
+	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f,
+	0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x64, 0x0a, 0x02, 0x4d, 0x38, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x66, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x19, 0x0a,
+	0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
+	0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x30, 0x0a,
+	0x03, 0x4d, 0x31, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0x44, 0x0a, 0x03, 0x4d, 0x31, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x73, 0x65, 0x74, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x41, 0x0a, 0x03, 0x4d, 0x31, 0x32, 0x12, 0x10, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19,
+	0x0a, 0x07, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x74,
+	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x30, 0x0a, 0x03, 0x4d, 0x31, 0x33, 0x12,
+	0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x22, 0x44, 0x0a, 0x03, 0x4d, 0x31,
+	0x34, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
+	0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x68, 0x61, 0x73, 0x48,
+	0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f,
+	0x22, 0x41, 0x0a, 0x03, 0x4d, 0x31, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x68, 0x61, 0x73,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x68, 0x61,
+	0x73, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x34, 0x0a, 0x03, 0x4d, 0x31, 0x36, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1b, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x22, 0x4e, 0x0a, 0x03, 0x4d, 0x31, 0x37,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61,
+	0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x63,
+	0x6c, 0x65, 0x61, 0x72, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x31, 0x38,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f,
+	0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72,
+	0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x31, 0x39, 0x12, 0x10, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1d, 0x0a,
+	0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x08, 0x77, 0x68, 0x69, 0x63, 0x68, 0x46, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f,
+	0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x4e, 0x0a, 0x03, 0x4d, 0x32, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63,
+	0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68, 0x46,
+	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x42,
+	0x60, 0x5a, 0x56, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
+	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
+	0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_goTypes = []any{
+	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashopaque.M1
+	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashopaque.M2
+	(*M3)(nil),  // 2: net.proto2.go.testdata.nameclashopaque.M3
+	(*M4)(nil),  // 3: net.proto2.go.testdata.nameclashopaque.M4
+	(*M5)(nil),  // 4: net.proto2.go.testdata.nameclashopaque.M5
+	(*M6)(nil),  // 5: net.proto2.go.testdata.nameclashopaque.M6
+	(*M7)(nil),  // 6: net.proto2.go.testdata.nameclashopaque.M7
+	(*M8)(nil),  // 7: net.proto2.go.testdata.nameclashopaque.M8
+	(*M9)(nil),  // 8: net.proto2.go.testdata.nameclashopaque.M9
+	(*M10)(nil), // 9: net.proto2.go.testdata.nameclashopaque.M10
+	(*M11)(nil), // 10: net.proto2.go.testdata.nameclashopaque.M11
+	(*M12)(nil), // 11: net.proto2.go.testdata.nameclashopaque.M12
+	(*M13)(nil), // 12: net.proto2.go.testdata.nameclashopaque.M13
+	(*M14)(nil), // 13: net.proto2.go.testdata.nameclashopaque.M14
+	(*M15)(nil), // 14: net.proto2.go.testdata.nameclashopaque.M15
+	(*M16)(nil), // 15: net.proto2.go.testdata.nameclashopaque.M16
+	(*M17)(nil), // 16: net.proto2.go.testdata.nameclashopaque.M17
+	(*M18)(nil), // 17: net.proto2.go.testdata.nameclashopaque.M18
+	(*M19)(nil), // 18: net.proto2.go.testdata.nameclashopaque.M19
+	(*M20)(nil), // 19: net.proto2.go.testdata.nameclashopaque.M20
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[3].OneofWrappers = []any{
+		(*m4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[4].OneofWrappers = []any{
+		(*m5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[5].OneofWrappers = []any{
+		(*m6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[6].OneofWrappers = []any{
+		(*m7_Bar)(nil),
+		(*m7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[7].OneofWrappers = []any{
+		(*m8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[8].OneofWrappers = []any{
+		(*m9_GetGetFoo)(nil),
+		(*m9_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[10].OneofWrappers = []any{
+		(*m11_SetSetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[11].OneofWrappers = []any{
+		(*m12_SetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[13].OneofWrappers = []any{
+		(*m14_HasHasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[14].OneofWrappers = []any{
+		(*m15_HasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[16].OneofWrappers = []any{
+		(*m17_ClearClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[17].OneofWrappers = []any{
+		(*m18_ClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[18].OneofWrappers = []any{
+		(*m19_WhichFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[19].OneofWrappers = []any{
+		(*m20_WhichWhichFoo)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3/test_name_clash_opaque3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3/test_name_clash_opaque3.pb.go
new file mode 100644
index 0000000..b393d4e
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3/test_name_clash_opaque3.pb.go
@@ -0,0 +1,3498 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3.proto
+
+package test_name_clash_opaque3
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type M0 struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M0) Reset() {
+	*x = M0{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M0) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M0) ProtoMessage() {}
+
+func (x *M0) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M0) GetI1() int32 {
+	if x != nil {
+		return x.xxx_hidden_I1
+	}
+	return 0
+}
+
+func (x *M0) SetI1(v int32) {
+	x.xxx_hidden_I1 = v
+}
+
+type M0_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	I1 int32
+}
+
+func (b0 M0_builder) Build() *M0 {
+	m0 := &M0{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_I1 = b.I1
+	return m0
+}
+
+type M1 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M1) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M1) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return nil
+}
+
+func (x *M1) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo
+	}
+	return nil
+}
+
+func (x *M1) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M1) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo_ = v
+}
+
+func (x *M1) SetGetGetFoo(v *M0) {
+	x.xxx_hidden_GetGetFoo = v
+}
+
+func (x *M1) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M1) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo_ != nil
+}
+
+func (x *M1) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M1) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M1) ClearGetFoo() {
+	x.xxx_hidden_GetFoo_ = nil
+}
+
+func (x *M1) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+type M1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	Foo       *M0
+	GetFoo    *M0
+	GetGetFoo *M0
+}
+
+func (b0 M1_builder) Build() *M1 {
+	m0 := &M1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	x.xxx_hidden_GetFoo_ = b.GetFoo
+	x.xxx_hidden_GetGetFoo = b.GetGetFoo
+	return m0
+}
+
+type M2 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M2) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo
+	}
+	return nil
+}
+
+func (x *M2) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return nil
+}
+
+func (x *M2) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M2) SetGetGetFoo(v *M0) {
+	x.xxx_hidden_GetGetFoo = v
+}
+
+func (x *M2) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo_ = v
+}
+
+func (x *M2) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M2) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M2) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo_ != nil
+}
+
+func (x *M2) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M2) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+func (x *M2) ClearGetFoo() {
+	x.xxx_hidden_GetFoo_ = nil
+}
+
+func (x *M2) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+type M2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetGetFoo *M0
+	GetFoo    *M0
+	Foo       *M0
+}
+
+func (b0 M2_builder) Build() *M2 {
+	m0 := &M2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_GetGetFoo = b.GetGetFoo
+	x.xxx_hidden_GetFoo_ = b.GetFoo
+	x.xxx_hidden_Foo = b.Foo
+	return m0
+}
+
+type M3 struct {
+	state                 protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo_ *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M3) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return nil
+}
+
+func (x *M3) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M3) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return nil
+}
+
+func (x *M3) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo = v
+}
+
+func (x *M3) SetGetGetFoo(v *M0) {
+	x.xxx_hidden_GetGetFoo_ = v
+}
+
+func (x *M3) SetFoo(v *M0) {
+	x.xxx_hidden_Foo_ = v
+}
+
+func (x *M3) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo != nil
+}
+
+func (x *M3) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo_ != nil
+}
+
+func (x *M3) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo_ != nil
+}
+
+func (x *M3) ClearGetFoo() {
+	x.xxx_hidden_GetFoo = nil
+}
+
+func (x *M3) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo_ = nil
+}
+
+func (x *M3) ClearFoo() {
+	x.xxx_hidden_Foo_ = nil
+}
+
+type M3_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | -                  | -    | GetGetGetFoo
+	GetFoo    *M0
+	GetGetFoo *M0
+	Foo       *M0
+}
+
+func (b0 M3_builder) Build() *M3 {
+	m0 := &M3{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_GetFoo = b.GetFoo
+	x.xxx_hidden_GetGetFoo_ = b.GetGetFoo
+	x.xxx_hidden_Foo_ = b.Foo
+	return m0
+}
+
+type M4 struct {
+	state                 protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetFoo_ isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M4) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return nil
+}
+
+func (x *M4) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo = v
+}
+
+func (x *M4) SetGetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo_ = &m4_GetGetGetFoo{v}
+}
+
+func (x *M4) SetFoo(v *M0) {
+	x.xxx_hidden_Foo_ = v
+}
+
+func (x *M4) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo != nil
+}
+
+func (x *M4) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo_ != nil
+}
+
+func (x *M4) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo)
+	return ok
+}
+
+func (x *M4) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo_ != nil
+}
+
+func (x *M4) ClearGetFoo() {
+	x.xxx_hidden_GetFoo = nil
+}
+
+func (x *M4) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo_ = nil
+}
+
+func (x *M4) ClearGetGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo_.(*m4_GetGetGetFoo); ok {
+		x.xxx_hidden_GetGetFoo_ = nil
+	}
+}
+
+func (x *M4) ClearFoo() {
+	x.xxx_hidden_Foo_ = nil
+}
+
+const M4_GetGetFoo__not_set_case case_M4_GetGetFoo_ = 0
+const M4_GetGetGetFoo_case case_M4_GetGetFoo_ = 3
+
+func (x *M4) WhichGetGetFoo() case_M4_GetGetFoo_ {
+	if x == nil {
+		return M4_GetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo_.(type) {
+	case *m4_GetGetGetFoo:
+		return M4_GetGetGetFoo_case
+	default:
+		return M4_GetGetFoo__not_set_case
+	}
+}
+
+type M4_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+	GetFoo *M0
+	// Fields of oneof xxx_hidden_GetGetFoo_:
+	GetGetGetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo_
+	Foo *M0
+}
+
+func (b0 M4_builder) Build() *M4 {
+	m0 := &M4{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_GetFoo = b.GetFoo
+	if b.GetGetGetFoo != nil {
+		x.xxx_hidden_GetGetFoo_ = &m4_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.xxx_hidden_Foo_ = b.Foo
+	return m0
+}
+
+type case_M4_GetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M4_GetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type m4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*m4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state                   protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M5) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo
+	}
+	return nil
+}
+
+func (x *M5) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M5) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo_
+	}
+	return nil
+}
+
+func (x *M5) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo = v
+}
+
+func (x *M5) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo = &m5_GetGetFoo_{v}
+}
+
+func (x *M5) SetFoo(v *M0) {
+	x.xxx_hidden_Foo_ = v
+}
+
+func (x *M5) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo != nil
+}
+
+func (x *M5) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo != nil
+}
+
+func (x *M5) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_)
+	return ok
+}
+
+func (x *M5) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo_ != nil
+}
+
+func (x *M5) ClearGetFoo() {
+	x.xxx_hidden_GetFoo = nil
+}
+
+func (x *M5) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo = nil
+}
+
+func (x *M5) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo.(*m5_GetGetFoo_); ok {
+		x.xxx_hidden_GetGetGetFoo = nil
+	}
+}
+
+func (x *M5) ClearFoo() {
+	x.xxx_hidden_Foo_ = nil
+}
+
+const M5_GetGetGetFoo_not_set_case case_M5_GetGetGetFoo = 0
+const M5_GetGetFoo__case case_M5_GetGetGetFoo = 3
+
+func (x *M5) WhichGetGetGetFoo() case_M5_GetGetGetFoo {
+	if x == nil {
+		return M5_GetGetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo.(type) {
+	case *m5_GetGetFoo_:
+		return M5_GetGetFoo__case
+	default:
+		return M5_GetGetGetFoo_not_set_case
+	}
+}
+
+type M5_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Old Scheme:
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+	GetFoo *M0
+	// Fields of oneof xxx_hidden_GetGetGetFoo:
+	GetGetFoo *int32
+	// -- end of xxx_hidden_GetGetGetFoo
+	Foo *M0
+}
+
+func (b0 M5_builder) Build() *M5 {
+	m0 := &M5{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_GetFoo = b.GetFoo
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo = &m5_GetGetFoo_{*b.GetGetFoo}
+	}
+	x.xxx_hidden_Foo_ = b.Foo
+	return m0
+}
+
+type case_M5_GetGetGetFoo protoreflect.FieldNumber
+
+func (x case_M5_GetGetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[5].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type m5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*m5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo isM6_GetGetFoo         `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return nil
+}
+
+func (x *M6) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M6) SetGetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = &m6_GetGetGetFoo{v}
+}
+
+func (x *M6) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo_ = v
+}
+
+func (x *M6) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M6) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M6) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo)
+	return ok
+}
+
+func (x *M6) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo_ != nil
+}
+
+func (x *M6) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M6) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+func (x *M6) ClearGetGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m6_GetGetGetFoo); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M6) ClearGetFoo() {
+	x.xxx_hidden_GetFoo_ = nil
+}
+
+func (x *M6) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+const M6_GetGetFoo_not_set_case case_M6_GetGetFoo = 0
+const M6_GetGetGetFoo_case case_M6_GetGetFoo = 3
+
+func (x *M6) WhichGetGetFoo() case_M6_GetGetFoo {
+	if x == nil {
+		return M6_GetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo.(type) {
+	case *m6_GetGetGetFoo:
+		return M6_GetGetGetFoo_case
+	default:
+		return M6_GetGetFoo_not_set_case
+	}
+}
+
+type M6_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetFoo:
+	GetGetGetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo
+	GetFoo *M0
+	Foo    *M0
+}
+
+func (b0 M6_builder) Build() *M6 {
+	m0 := &M6{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetGetFoo != nil {
+		x.xxx_hidden_GetGetFoo = &m6_GetGetGetFoo{*b.GetGetGetFoo}
+	}
+	x.xxx_hidden_GetFoo_ = b.GetFoo
+	x.xxx_hidden_Foo = b.Foo
+	return m0
+}
+
+type case_M6_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M6_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[6].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type m6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*m6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetFoo isM7_GetGetFoo         `protobuf_oneof:"get_get_foo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M7) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M7) SetBar(v bool) {
+	x.xxx_hidden_GetGetFoo = &m7_Bar{v}
+}
+
+func (x *M7) SetGetFoo(v int32) {
+	x.xxx_hidden_GetGetFoo = &m7_GetFoo_{v}
+}
+
+func (x *M7) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M7) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetFoo != nil
+}
+
+func (x *M7) HasBar() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar)
+	return ok
+}
+
+func (x *M7) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_)
+	return ok
+}
+
+func (x *M7) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M7) ClearGetGetFoo() {
+	x.xxx_hidden_GetGetFoo = nil
+}
+
+func (x *M7) ClearBar() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m7_Bar); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M7) ClearGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetFoo.(*m7_GetFoo_); ok {
+		x.xxx_hidden_GetGetFoo = nil
+	}
+}
+
+func (x *M7) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+const M7_GetGetFoo_not_set_case case_M7_GetGetFoo = 0
+const M7_Bar_case case_M7_GetGetFoo = 4
+const M7_GetFoo__case case_M7_GetGetFoo = 3
+
+func (x *M7) WhichGetGetFoo() case_M7_GetGetFoo {
+	if x == nil {
+		return M7_GetGetFoo_not_set_case
+	}
+	switch x.xxx_hidden_GetGetFoo.(type) {
+	case *m7_Bar:
+		return M7_Bar_case
+	case *m7_GetFoo_:
+		return M7_GetFoo__case
+	default:
+		return M7_GetGetFoo_not_set_case
+	}
+}
+
+type M7_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//  Bar                   | -                  | -    | Bar
+	//  GetFoo                | foo                | 1    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// Bar                    | -                  | -    | GetBar
+
+	// Fields of oneof xxx_hidden_GetGetFoo:
+	Bar    *bool
+	GetFoo *int32
+	// -- end of xxx_hidden_GetGetFoo
+	Foo *M0
+}
+
+func (b0 M7_builder) Build() *M7 {
+	m0 := &M7{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Bar != nil {
+		x.xxx_hidden_GetGetFoo = &m7_Bar{*b.Bar}
+	}
+	if b.GetFoo != nil {
+		x.xxx_hidden_GetGetFoo = &m7_GetFoo_{*b.GetFoo}
+	}
+	x.xxx_hidden_Foo = b.Foo
+	return m0
+}
+
+type case_M7_GetGetFoo protoreflect.FieldNumber
+
+func (x case_M7_GetGetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[7].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type m7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type m7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*m7_Bar) isM7_GetGetFoo() {}
+
+func (*m7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetGetFoo_ isM8_GetGetGetFoo_     `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_GetFoo_       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M8) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M8) GetGetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_GetFoo_
+	}
+	return nil
+}
+
+func (x *M8) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M8) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m8_GetGetFoo{v}
+}
+
+func (x *M8) SetGetFoo(v *M0) {
+	x.xxx_hidden_GetFoo_ = v
+}
+
+func (x *M8) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M8) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo_ != nil
+}
+
+func (x *M8) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo)
+	return ok
+}
+
+func (x *M8) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetFoo_ != nil
+}
+
+func (x *M8) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M8) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo_ = nil
+}
+
+func (x *M8) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m8_GetGetFoo); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M8) ClearGetFoo() {
+	x.xxx_hidden_GetFoo_ = nil
+}
+
+func (x *M8) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+const M8_GetGetGetFoo__not_set_case case_M8_GetGetGetFoo_ = 0
+const M8_GetGetFoo_case case_M8_GetGetGetFoo_ = 3
+
+func (x *M8) WhichGetGetGetFoo() case_M8_GetGetGetFoo_ {
+	if x == nil {
+		return M8_GetGetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo_.(type) {
+	case *m8_GetGetFoo:
+		return M8_GetGetFoo_case
+	default:
+		return M8_GetGetGetFoo__not_set_case
+	}
+}
+
+type M8_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//                        |                    |      |
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetGetFoo_:
+	GetGetFoo *int32
+	// -- end of xxx_hidden_GetGetGetFoo_
+	GetFoo *M0
+	Foo    *M0
+}
+
+func (b0 M8_builder) Build() *M8 {
+	m0 := &M8{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m8_GetGetFoo{*b.GetGetFoo}
+	}
+	x.xxx_hidden_GetFoo_ = b.GetFoo
+	x.xxx_hidden_Foo = b.Foo
+	return m0
+}
+
+type case_M8_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M8_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[8].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type m8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*m8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_GetGetGetFoo_ isM9_GetGetGetFoo_     `protobuf_oneof:"get_get_get_foo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M9) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M9) SetGetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m9_GetGetFoo{v}
+}
+
+func (x *M9) SetGetFoo(v int32) {
+	x.xxx_hidden_GetGetGetFoo_ = &m9_GetFoo_{v}
+}
+
+func (x *M9) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M9) HasGetGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_GetGetGetFoo_ != nil
+}
+
+func (x *M9) HasGetGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo)
+	return ok
+}
+
+func (x *M9) HasGetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_)
+	return ok
+}
+
+func (x *M9) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M9) ClearGetGetGetFoo() {
+	x.xxx_hidden_GetGetGetFoo_ = nil
+}
+
+func (x *M9) ClearGetGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetGetFoo); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) ClearGetFoo() {
+	if _, ok := x.xxx_hidden_GetGetGetFoo_.(*m9_GetFoo_); ok {
+		x.xxx_hidden_GetGetGetFoo_ = nil
+	}
+}
+
+func (x *M9) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+const M9_GetGetGetFoo__not_set_case case_M9_GetGetGetFoo_ = 0
+const M9_GetGetFoo_case case_M9_GetGetGetFoo_ = 3
+const M9_GetFoo__case case_M9_GetGetGetFoo_ = 2
+
+func (x *M9) WhichGetGetGetFoo() case_M9_GetGetGetFoo_ {
+	if x == nil {
+		return M9_GetGetGetFoo__not_set_case
+	}
+	switch x.xxx_hidden_GetGetGetFoo_.(type) {
+	case *m9_GetGetFoo:
+		return M9_GetGetFoo_case
+	case *m9_GetFoo_:
+		return M9_GetFoo__case
+	default:
+		return M9_GetGetGetFoo__not_set_case
+	}
+}
+
+type M9_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//  GetGetFoo             | -                  | -    | GetGetFoo
+	//  GetFoo                | get_get_foo        | 2    | GetFoo_
+	//                        |                    |      |
+	// Foo                    | -                  | -    | Foo
+	// New Scheme:
+	// initial name in Go     | Clashes with field | type | Getter name
+	// Foo                    | get_foo            | G    | Get_Foo
+	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
+	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
+
+	// Fields of oneof xxx_hidden_GetGetGetFoo_:
+	GetGetFoo *int32
+	GetFoo    *int32
+	// -- end of xxx_hidden_GetGetGetFoo_
+	Foo *M0
+}
+
+func (b0 M9_builder) Build() *M9 {
+	m0 := &M9{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.GetGetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m9_GetGetFoo{*b.GetGetFoo}
+	}
+	if b.GetFoo != nil {
+		x.xxx_hidden_GetGetGetFoo_ = &m9_GetFoo_{*b.GetFoo}
+	}
+	x.xxx_hidden_Foo = b.Foo
+	return m0
+}
+
+type case_M9_GetGetGetFoo_ protoreflect.FieldNumber
+
+func (x case_M9_GetGetGetFoo_) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[9].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type m9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type m9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*m9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*m9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+type M10 struct {
+	state             protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo" json:"set_foo,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *M10) Reset() {
+	*x = M10{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M10) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M10) ProtoMessage() {}
+
+func (x *M10) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M10) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M10) GetSetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_SetFoo
+	}
+	return nil
+}
+
+func (x *M10) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M10) SetSetFoo(v *M0) {
+	x.xxx_hidden_SetFoo = v
+}
+
+func (x *M10) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M10) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SetFoo != nil
+}
+
+func (x *M10) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M10) ClearSetFoo() {
+	x.xxx_hidden_SetFoo = nil
+}
+
+type M10_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | -                  | SetSetFoo
+	Foo    *M0
+	SetFoo *M0
+}
+
+func (b0 M10_builder) Build() *M10 {
+	m0 := &M10{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	x.xxx_hidden_SetFoo = b.SetFoo
+	return m0
+}
+
+type M11 struct {
+	state             protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetFoo isM11_SetFoo           `protobuf_oneof:"set_foo"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *M11) Reset() {
+	*x = M11{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M11) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M11) ProtoMessage() {}
+
+func (x *M11) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M11) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M11) GetSetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo); ok {
+			return x.SetSetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M11) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M11) SetSetSetFoo(v int32) {
+	x.xxx_hidden_SetFoo = &m11_SetSetFoo{v}
+}
+
+func (x *M11) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M11) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SetFoo != nil
+}
+
+func (x *M11) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo)
+	return ok
+}
+
+func (x *M11) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M11) ClearSetFoo() {
+	x.xxx_hidden_SetFoo = nil
+}
+
+func (x *M11) ClearSetSetFoo() {
+	if _, ok := x.xxx_hidden_SetFoo.(*m11_SetSetFoo); ok {
+		x.xxx_hidden_SetFoo = nil
+	}
+}
+
+const M11_SetFoo_not_set_case case_M11_SetFoo = 0
+const M11_SetSetFoo_case case_M11_SetFoo = 2
+
+func (x *M11) WhichSetFoo() case_M11_SetFoo {
+	if x == nil {
+		return M11_SetFoo_not_set_case
+	}
+	switch x.xxx_hidden_SetFoo.(type) {
+	case *m11_SetSetFoo:
+		return M11_SetSetFoo_case
+	default:
+		return M11_SetFoo_not_set_case
+	}
+}
+
+type M11_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetSetFoo              | -                  | SetSetSetFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_SetFoo:
+	SetSetFoo *int32
+	// -- end of xxx_hidden_SetFoo
+}
+
+func (b0 M11_builder) Build() *M11 {
+	m0 := &M11{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.SetSetFoo != nil {
+		x.xxx_hidden_SetFoo = &m11_SetSetFoo{*b.SetSetFoo}
+	}
+	return m0
+}
+
+type case_M11_SetFoo protoreflect.FieldNumber
+
+func (x case_M11_SetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[11].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM11_SetFoo interface {
+	isM11_SetFoo()
+}
+
+type m11_SetSetFoo struct {
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+}
+
+func (*m11_SetSetFoo) isM11_SetFoo() {}
+
+type M12 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_SetSetFoo isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M12) Reset() {
+	*x = M12{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M12) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M12) ProtoMessage() {}
+
+func (x *M12) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M12) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M12) GetSetFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo); ok {
+			return x.SetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M12) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M12) SetSetFoo(v int32) {
+	x.xxx_hidden_SetSetFoo = &m12_SetFoo{v}
+}
+
+func (x *M12) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M12) HasSetSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SetSetFoo != nil
+}
+
+func (x *M12) HasSetFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo)
+	return ok
+}
+
+func (x *M12) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M12) ClearSetSetFoo() {
+	x.xxx_hidden_SetSetFoo = nil
+}
+
+func (x *M12) ClearSetFoo() {
+	if _, ok := x.xxx_hidden_SetSetFoo.(*m12_SetFoo); ok {
+		x.xxx_hidden_SetSetFoo = nil
+	}
+}
+
+const M12_SetSetFoo_not_set_case case_M12_SetSetFoo = 0
+const M12_SetFoo_case case_M12_SetSetFoo = 2
+
+func (x *M12) WhichSetSetFoo() case_M12_SetSetFoo {
+	if x == nil {
+		return M12_SetSetFoo_not_set_case
+	}
+	switch x.xxx_hidden_SetSetFoo.(type) {
+	case *m12_SetFoo:
+		return M12_SetFoo_case
+	default:
+		return M12_SetSetFoo_not_set_case
+	}
+}
+
+type M12_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Set Clashes - no concerns with get-mangling as legacy open struct
+	// does not have setters except for weak fields:
+	// initial name in Go     | Clashes with field | Setter name
+	// Foo                    | set_foo            | Set_Foo
+	// SetFoo                 | set_set_foo        | Set_SetFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_SetSetFoo:
+	SetFoo *int32
+	// -- end of xxx_hidden_SetSetFoo
+}
+
+func (b0 M12_builder) Build() *M12 {
+	m0 := &M12{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.SetFoo != nil {
+		x.xxx_hidden_SetSetFoo = &m12_SetFoo{*b.SetFoo}
+	}
+	return m0
+}
+
+type case_M12_SetSetFoo protoreflect.FieldNumber
+
+func (x case_M12_SetSetFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[12].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM12_SetSetFoo interface {
+	isM12_SetSetFoo()
+}
+
+type m12_SetFoo struct {
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+}
+
+func (*m12_SetFoo) isM12_SetSetFoo() {}
+
+type M13 struct {
+	state             protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo" json:"has_foo,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *M13) Reset() {
+	*x = M13{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M13) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M13) ProtoMessage() {}
+
+func (x *M13) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M13) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M13) GetHasFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_HasFoo
+	}
+	return nil
+}
+
+func (x *M13) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M13) SetHasFoo(v *M0) {
+	x.xxx_hidden_HasFoo = v
+}
+
+func (x *M13) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M13) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_HasFoo != nil
+}
+
+func (x *M13) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M13) ClearHasFoo() {
+	x.xxx_hidden_HasFoo = nil
+}
+
+type M13_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | -                  | HasHasFoo
+	Foo    *M0
+	HasFoo *M0
+}
+
+func (b0 M13_builder) Build() *M13 {
+	m0 := &M13{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	x.xxx_hidden_HasFoo = b.HasFoo
+	return m0
+}
+
+type M14 struct {
+	state             protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasFoo isM14_HasFoo           `protobuf_oneof:"has_foo"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *M14) Reset() {
+	*x = M14{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M14) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M14) ProtoMessage() {}
+
+func (x *M14) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M14) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M14) GetHasHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo); ok {
+			return x.HasHasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M14) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M14) SetHasHasFoo(v int32) {
+	x.xxx_hidden_HasFoo = &m14_HasHasFoo{v}
+}
+
+func (x *M14) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M14) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_HasFoo != nil
+}
+
+func (x *M14) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo)
+	return ok
+}
+
+func (x *M14) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M14) ClearHasFoo() {
+	x.xxx_hidden_HasFoo = nil
+}
+
+func (x *M14) ClearHasHasFoo() {
+	if _, ok := x.xxx_hidden_HasFoo.(*m14_HasHasFoo); ok {
+		x.xxx_hidden_HasFoo = nil
+	}
+}
+
+const M14_HasFoo_not_set_case case_M14_HasFoo = 0
+const M14_HasHasFoo_case case_M14_HasFoo = 2
+
+func (x *M14) WhichHasFoo() case_M14_HasFoo {
+	if x == nil {
+		return M14_HasFoo_not_set_case
+	}
+	switch x.xxx_hidden_HasFoo.(type) {
+	case *m14_HasHasFoo:
+		return M14_HasHasFoo_case
+	default:
+		return M14_HasFoo_not_set_case
+	}
+}
+
+type M14_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_HasFoo:
+	HasHasFoo *int32
+	// -- end of xxx_hidden_HasFoo
+}
+
+func (b0 M14_builder) Build() *M14 {
+	m0 := &M14{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.HasHasFoo != nil {
+		x.xxx_hidden_HasFoo = &m14_HasHasFoo{*b.HasHasFoo}
+	}
+	return m0
+}
+
+type case_M14_HasFoo protoreflect.FieldNumber
+
+func (x case_M14_HasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[14].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM14_HasFoo interface {
+	isM14_HasFoo()
+}
+
+type m14_HasHasFoo struct {
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+}
+
+func (*m14_HasHasFoo) isM14_HasFoo() {}
+
+type M15 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_HasHasFoo isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M15) Reset() {
+	*x = M15{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M15) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M15) ProtoMessage() {}
+
+func (x *M15) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M15) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M15) GetHasFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo); ok {
+			return x.HasFoo
+		}
+	}
+	return 0
+}
+
+func (x *M15) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M15) SetHasFoo(v int32) {
+	x.xxx_hidden_HasHasFoo = &m15_HasFoo{v}
+}
+
+func (x *M15) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M15) HasHasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_HasHasFoo != nil
+}
+
+func (x *M15) HasHasFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo)
+	return ok
+}
+
+func (x *M15) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M15) ClearHasHasFoo() {
+	x.xxx_hidden_HasHasFoo = nil
+}
+
+func (x *M15) ClearHasFoo() {
+	if _, ok := x.xxx_hidden_HasHasFoo.(*m15_HasFoo); ok {
+		x.xxx_hidden_HasHasFoo = nil
+	}
+}
+
+const M15_HasHasFoo_not_set_case case_M15_HasHasFoo = 0
+const M15_HasFoo_case case_M15_HasHasFoo = 2
+
+func (x *M15) WhichHasHasFoo() case_M15_HasHasFoo {
+	if x == nil {
+		return M15_HasHasFoo_not_set_case
+	}
+	switch x.xxx_hidden_HasHasFoo.(type) {
+	case *m15_HasFoo:
+		return M15_HasFoo_case
+	default:
+		return M15_HasHasFoo_not_set_case
+	}
+}
+
+type M15_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Has Clashes - no concerns with get-mangling as legacy open struct
+	// does not have hassers except for weak fields:
+	// initial name in Go     | Clashes with field | Hasser name
+	// Foo                    | has_foo            | Has_Foo
+	// HasFoo                 | has_has_foo        | Has_HasFoo
+	// HasHasFoo              | -                  | HasHasHasFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_HasHasFoo:
+	HasFoo *int32
+	// -- end of xxx_hidden_HasHasFoo
+}
+
+func (b0 M15_builder) Build() *M15 {
+	m0 := &M15{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.HasFoo != nil {
+		x.xxx_hidden_HasHasFoo = &m15_HasFoo{*b.HasFoo}
+	}
+	return m0
+}
+
+type case_M15_HasHasFoo protoreflect.FieldNumber
+
+func (x case_M15_HasHasFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[15].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM15_HasHasFoo interface {
+	isM15_HasHasFoo()
+}
+
+type m15_HasFoo struct {
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+}
+
+func (*m15_HasFoo) isM15_HasHasFoo() {}
+
+type M16 struct {
+	state               protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo" json:"clear_foo,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *M16) Reset() {
+	*x = M16{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M16) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M16) ProtoMessage() {}
+
+func (x *M16) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M16) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M16) GetClearFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_ClearFoo
+	}
+	return nil
+}
+
+func (x *M16) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M16) SetClearFoo(v *M0) {
+	x.xxx_hidden_ClearFoo = v
+}
+
+func (x *M16) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M16) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ClearFoo != nil
+}
+
+func (x *M16) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M16) ClearClearFoo() {
+	x.xxx_hidden_ClearFoo = nil
+}
+
+type M16_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo            | Clear_Foo
+	// ClearFoo               | -                  | ClearClearFoo
+	Foo      *M0
+	ClearFoo *M0
+}
+
+func (b0 M16_builder) Build() *M16 {
+	m0 := &M16{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	x.xxx_hidden_ClearFoo = b.ClearFoo
+	return m0
+}
+
+type M17 struct {
+	state               protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearFoo isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *M17) Reset() {
+	*x = M17{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M17) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M17) ProtoMessage() {}
+
+func (x *M17) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M17) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M17) GetClearClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo); ok {
+			return x.ClearClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M17) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M17) SetClearClearFoo(v int32) {
+	x.xxx_hidden_ClearFoo = &m17_ClearClearFoo{v}
+}
+
+func (x *M17) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M17) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ClearFoo != nil
+}
+
+func (x *M17) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo)
+	return ok
+}
+
+func (x *M17) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M17) ClearClearFoo() {
+	x.xxx_hidden_ClearFoo = nil
+}
+
+func (x *M17) ClearClearClearFoo() {
+	if _, ok := x.xxx_hidden_ClearFoo.(*m17_ClearClearFoo); ok {
+		x.xxx_hidden_ClearFoo = nil
+	}
+}
+
+const M17_ClearFoo_not_set_case case_M17_ClearFoo = 0
+const M17_ClearClearFoo_case case_M17_ClearFoo = 2
+
+func (x *M17) WhichClearFoo() case_M17_ClearFoo {
+	if x == nil {
+		return M17_ClearFoo_not_set_case
+	}
+	switch x.xxx_hidden_ClearFoo.(type) {
+	case *m17_ClearClearFoo:
+		return M17_ClearClearFoo_case
+	default:
+		return M17_ClearFoo_not_set_case
+	}
+}
+
+type M17_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_ClearFoo:
+	ClearClearFoo *int32
+	// -- end of xxx_hidden_ClearFoo
+}
+
+func (b0 M17_builder) Build() *M17 {
+	m0 := &M17{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.ClearClearFoo != nil {
+		x.xxx_hidden_ClearFoo = &m17_ClearClearFoo{*b.ClearClearFoo}
+	}
+	return m0
+}
+
+type case_M17_ClearFoo protoreflect.FieldNumber
+
+func (x case_M17_ClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[17].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM17_ClearFoo interface {
+	isM17_ClearFoo()
+}
+
+type m17_ClearClearFoo struct {
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+}
+
+func (*m17_ClearClearFoo) isM17_ClearFoo() {}
+
+type M18 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M18) Reset() {
+	*x = M18{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M18) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M18) ProtoMessage() {}
+
+func (x *M18) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M18) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M18) GetClearFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo); ok {
+			return x.ClearFoo
+		}
+	}
+	return 0
+}
+
+func (x *M18) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M18) SetClearFoo(v int32) {
+	x.xxx_hidden_ClearClearFoo = &m18_ClearFoo{v}
+}
+
+func (x *M18) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M18) HasClearClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ClearClearFoo != nil
+}
+
+func (x *M18) HasClearFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo)
+	return ok
+}
+
+func (x *M18) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M18) ClearClearClearFoo() {
+	x.xxx_hidden_ClearClearFoo = nil
+}
+
+func (x *M18) ClearClearFoo() {
+	if _, ok := x.xxx_hidden_ClearClearFoo.(*m18_ClearFoo); ok {
+		x.xxx_hidden_ClearClearFoo = nil
+	}
+}
+
+const M18_ClearClearFoo_not_set_case case_M18_ClearClearFoo = 0
+const M18_ClearFoo_case case_M18_ClearClearFoo = 2
+
+func (x *M18) WhichClearClearFoo() case_M18_ClearClearFoo {
+	if x == nil {
+		return M18_ClearClearFoo_not_set_case
+	}
+	switch x.xxx_hidden_ClearClearFoo.(type) {
+	case *m18_ClearFoo:
+		return M18_ClearFoo_case
+	default:
+		return M18_ClearClearFoo_not_set_case
+	}
+}
+
+type M18_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Clear Clashes - no concerns with get-mangling as legacy open
+	// struct does not have clearers except for weak fields:
+	// initial name in Go     | Clashes with field | Clearer name
+	// Foo                    | clear_foo          | Clear_Foo
+	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
+	// ClearClearFoo          | -                  | ClearClearClearFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_ClearClearFoo:
+	ClearFoo *int32
+	// -- end of xxx_hidden_ClearClearFoo
+}
+
+func (b0 M18_builder) Build() *M18 {
+	m0 := &M18{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.ClearFoo != nil {
+		x.xxx_hidden_ClearClearFoo = &m18_ClearFoo{*b.ClearFoo}
+	}
+	return m0
+}
+
+type case_M18_ClearClearFoo protoreflect.FieldNumber
+
+func (x case_M18_ClearClearFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[18].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM18_ClearClearFoo interface {
+	isM18_ClearClearFoo()
+}
+
+type m18_ClearFoo struct {
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+}
+
+func (*m18_ClearFoo) isM18_ClearClearFoo() {}
+
+type M19 struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *M19) Reset() {
+	*x = M19{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M19) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M19) ProtoMessage() {}
+
+func (x *M19) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M19) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M19) GetWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo); ok {
+			return x.WhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M19) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M19) SetWhichFoo(v int32) {
+	x.xxx_hidden_WhichWhichFoo = &m19_WhichFoo{v}
+}
+
+func (x *M19) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M19) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_WhichWhichFoo != nil
+}
+
+func (x *M19) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo)
+	return ok
+}
+
+func (x *M19) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M19) ClearWhichWhichFoo() {
+	x.xxx_hidden_WhichWhichFoo = nil
+}
+
+func (x *M19) ClearWhichFoo() {
+	if _, ok := x.xxx_hidden_WhichWhichFoo.(*m19_WhichFoo); ok {
+		x.xxx_hidden_WhichWhichFoo = nil
+	}
+}
+
+const M19_WhichWhichFoo_not_set_case case_M19_WhichWhichFoo = 0
+const M19_WhichFoo_case case_M19_WhichWhichFoo = 2
+
+func (x *M19) WhichWhichWhichFoo() case_M19_WhichWhichFoo {
+	if x == nil {
+		return M19_WhichWhichFoo_not_set_case
+	}
+	switch x.xxx_hidden_WhichWhichFoo.(type) {
+	case *m19_WhichFoo:
+		return M19_WhichFoo_case
+	default:
+		return M19_WhichWhichFoo_not_set_case
+	}
+}
+
+type M19_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | -                  | -
+	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
+	Foo *M0
+	// Fields of oneof xxx_hidden_WhichWhichFoo:
+	WhichFoo *int32
+	// -- end of xxx_hidden_WhichWhichFoo
+}
+
+func (b0 M19_builder) Build() *M19 {
+	m0 := &M19{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.WhichFoo != nil {
+		x.xxx_hidden_WhichWhichFoo = &m19_WhichFoo{*b.WhichFoo}
+	}
+	return m0
+}
+
+type case_M19_WhichWhichFoo protoreflect.FieldNumber
+
+func (x case_M19_WhichWhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[19].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM19_WhichWhichFoo interface {
+	isM19_WhichWhichFoo()
+}
+
+type m19_WhichFoo struct {
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+}
+
+func (*m19_WhichFoo) isM19_WhichWhichFoo() {}
+
+type M20 struct {
+	state               protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_WhichFoo isM20_WhichFoo         `protobuf_oneof:"which_foo"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *M20) Reset() {
+	*x = M20{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M20) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M20) ProtoMessage() {}
+
+func (x *M20) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M20) GetFoo() *M0 {
+	if x != nil {
+		return x.xxx_hidden_Foo
+	}
+	return nil
+}
+
+func (x *M20) GetWhichWhichFoo() int32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo); ok {
+			return x.WhichWhichFoo
+		}
+	}
+	return 0
+}
+
+func (x *M20) SetFoo(v *M0) {
+	x.xxx_hidden_Foo = v
+}
+
+func (x *M20) SetWhichWhichFoo(v int32) {
+	x.xxx_hidden_WhichFoo = &m20_WhichWhichFoo{v}
+}
+
+func (x *M20) HasFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Foo != nil
+}
+
+func (x *M20) HasWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_WhichFoo != nil
+}
+
+func (x *M20) HasWhichWhichFoo() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo)
+	return ok
+}
+
+func (x *M20) ClearFoo() {
+	x.xxx_hidden_Foo = nil
+}
+
+func (x *M20) ClearWhichFoo() {
+	x.xxx_hidden_WhichFoo = nil
+}
+
+func (x *M20) ClearWhichWhichFoo() {
+	if _, ok := x.xxx_hidden_WhichFoo.(*m20_WhichWhichFoo); ok {
+		x.xxx_hidden_WhichFoo = nil
+	}
+}
+
+const M20_WhichFoo_not_set_case case_M20_WhichFoo = 0
+const M20_WhichWhichFoo_case case_M20_WhichFoo = 2
+
+func (x *M20) WhichWhichFoo() case_M20_WhichFoo {
+	if x == nil {
+		return M20_WhichFoo_not_set_case
+	}
+	switch x.xxx_hidden_WhichFoo.(type) {
+	case *m20_WhichWhichFoo:
+		return M20_WhichWhichFoo_case
+	default:
+		return M20_WhichFoo_not_set_case
+	}
+}
+
+type M20_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// Which Clashes - no concerns with get-mangling as legacy open
+	// struct does not have whichers except for weak fields:
+	// initial name in Go     | Clashes with field | Whicher name
+	// Foo                    | -                  | -
+	// WhichFoo               | which_which_foo    | Which_WhichFoo
+	// WhichWhichFoo          | -                  | -
+	Foo *M0
+	// Fields of oneof xxx_hidden_WhichFoo:
+	WhichWhichFoo *int32
+	// -- end of xxx_hidden_WhichFoo
+}
+
+func (b0 M20_builder) Build() *M20 {
+	m0 := &M20{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Foo = b.Foo
+	if b.WhichWhichFoo != nil {
+		x.xxx_hidden_WhichFoo = &m20_WhichWhichFoo{*b.WhichWhichFoo}
+	}
+	return m0
+}
+
+type case_M20_WhichFoo protoreflect.FieldNumber
+
+func (x case_M20_WhichFoo) String() string {
+	md := file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[20].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isM20_WhichFoo interface {
+	isM20_WhichFoo()
+}
+
+type m20_WhichWhichFoo struct {
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+}
+
+func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc = []byte{
+	0x0a, 0x42, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0x14, 0x0a, 0x02, 0x4d, 0x30, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x31, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x02, 0x69, 0x31, 0x22, 0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x31, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22,
+	0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x32, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65,
+	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61,
+	0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d,
+	0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0xd6, 0x01, 0x0a, 0x02, 0x4d, 0x33, 0x12,
+	0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x4b, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x02, 0x4d, 0x34, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x27,
+	0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61,
+	0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d,
+	0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xbe, 0x01, 0x0a, 0x02, 0x4d, 0x35, 0x12, 0x44, 0x0a, 0x07,
+	0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65,
+	0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63,
+	0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03,
+	0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x02, 0x4d, 0x36, 0x12, 0x27, 0x0a,
+	0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74,
+	0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x02, 0x4d,
+	0x37, 0x12, 0x12, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
+	0x52, 0x03, 0x62, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f,
+	0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42,
+	0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xbe,
+	0x01, 0x0a, 0x02, 0x4d, 0x38, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
+	0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x93, 0x01, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67,
+	0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8a, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x30, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x73, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x22, 0x71, 0x0a, 0x03, 0x4d, 0x31, 0x31, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x73, 0x65, 0x74, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x6e, 0x0a, 0x03, 0x4d, 0x31, 0x32, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x73,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06,
+	0x73, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8a, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x33, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x44, 0x0a, 0x07,
+	0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x68, 0x61, 0x73, 0x46,
+	0x6f, 0x6f, 0x22, 0x71, 0x0a, 0x03, 0x4d, 0x31, 0x34, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f,
+	0x68, 0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x09, 0x68, 0x61, 0x73, 0x48, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x09, 0x0a, 0x07, 0x68, 0x61,
+	0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x6e, 0x0a, 0x03, 0x4d, 0x31, 0x35, 0x12, 0x3d, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x68,
+	0x61, 0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06,
+	0x68, 0x61, 0x73, 0x46, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61,
+	0x73, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x03, 0x4d, 0x31, 0x36, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x48, 0x0a, 0x09,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x08, 0x63, 0x6c,
+	0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x22, 0x7b, 0x0a, 0x03, 0x4d, 0x31, 0x37, 0x12, 0x3d, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6c,
+	0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x76, 0x0a, 0x03, 0x4d, 0x31, 0x38, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x63, 0x6c, 0x65,
+	0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08,
+	0x63, 0x6c, 0x65, 0x61, 0x72, 0x46, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61,
+	0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x76, 0x0a, 0x03, 0x4d,
+	0x31, 0x39, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f,
+	0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x77, 0x68, 0x69, 0x63, 0x68, 0x46, 0x6f, 0x6f,
+	0x42, 0x11, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f,
+	0x66, 0x6f, 0x6f, 0x22, 0x7b, 0x0a, 0x03, 0x4d, 0x32, 0x30, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69,
+	0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68,
+	0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f,
+	0x42, 0x63, 0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63,
+	0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e,
+	0x02, 0x10, 0x03, 0x08, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
+	0xe8, 0x07,
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_goTypes = []any{
+	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashopaque3.M0
+	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashopaque3.M1
+	(*M2)(nil),  // 2: net.proto2.go.testdata.nameclashopaque3.M2
+	(*M3)(nil),  // 3: net.proto2.go.testdata.nameclashopaque3.M3
+	(*M4)(nil),  // 4: net.proto2.go.testdata.nameclashopaque3.M4
+	(*M5)(nil),  // 5: net.proto2.go.testdata.nameclashopaque3.M5
+	(*M6)(nil),  // 6: net.proto2.go.testdata.nameclashopaque3.M6
+	(*M7)(nil),  // 7: net.proto2.go.testdata.nameclashopaque3.M7
+	(*M8)(nil),  // 8: net.proto2.go.testdata.nameclashopaque3.M8
+	(*M9)(nil),  // 9: net.proto2.go.testdata.nameclashopaque3.M9
+	(*M10)(nil), // 10: net.proto2.go.testdata.nameclashopaque3.M10
+	(*M11)(nil), // 11: net.proto2.go.testdata.nameclashopaque3.M11
+	(*M12)(nil), // 12: net.proto2.go.testdata.nameclashopaque3.M12
+	(*M13)(nil), // 13: net.proto2.go.testdata.nameclashopaque3.M13
+	(*M14)(nil), // 14: net.proto2.go.testdata.nameclashopaque3.M14
+	(*M15)(nil), // 15: net.proto2.go.testdata.nameclashopaque3.M15
+	(*M16)(nil), // 16: net.proto2.go.testdata.nameclashopaque3.M16
+	(*M17)(nil), // 17: net.proto2.go.testdata.nameclashopaque3.M17
+	(*M18)(nil), // 18: net.proto2.go.testdata.nameclashopaque3.M18
+	(*M19)(nil), // 19: net.proto2.go.testdata.nameclashopaque3.M19
+	(*M20)(nil), // 20: net.proto2.go.testdata.nameclashopaque3.M20
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_depIdxs = []int32{
+	0,  // 0: net.proto2.go.testdata.nameclashopaque3.M1.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 1: net.proto2.go.testdata.nameclashopaque3.M1.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 2: net.proto2.go.testdata.nameclashopaque3.M1.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 3: net.proto2.go.testdata.nameclashopaque3.M2.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 4: net.proto2.go.testdata.nameclashopaque3.M2.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 5: net.proto2.go.testdata.nameclashopaque3.M2.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 6: net.proto2.go.testdata.nameclashopaque3.M3.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 7: net.proto2.go.testdata.nameclashopaque3.M3.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 8: net.proto2.go.testdata.nameclashopaque3.M3.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 9: net.proto2.go.testdata.nameclashopaque3.M4.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 10: net.proto2.go.testdata.nameclashopaque3.M4.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 11: net.proto2.go.testdata.nameclashopaque3.M5.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 12: net.proto2.go.testdata.nameclashopaque3.M5.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 13: net.proto2.go.testdata.nameclashopaque3.M6.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 14: net.proto2.go.testdata.nameclashopaque3.M6.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 15: net.proto2.go.testdata.nameclashopaque3.M7.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 16: net.proto2.go.testdata.nameclashopaque3.M8.get_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 17: net.proto2.go.testdata.nameclashopaque3.M8.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 18: net.proto2.go.testdata.nameclashopaque3.M9.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 19: net.proto2.go.testdata.nameclashopaque3.M10.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 20: net.proto2.go.testdata.nameclashopaque3.M10.set_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 21: net.proto2.go.testdata.nameclashopaque3.M11.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 22: net.proto2.go.testdata.nameclashopaque3.M12.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 23: net.proto2.go.testdata.nameclashopaque3.M13.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 24: net.proto2.go.testdata.nameclashopaque3.M13.has_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 25: net.proto2.go.testdata.nameclashopaque3.M14.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 26: net.proto2.go.testdata.nameclashopaque3.M15.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 27: net.proto2.go.testdata.nameclashopaque3.M16.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 28: net.proto2.go.testdata.nameclashopaque3.M16.clear_foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 29: net.proto2.go.testdata.nameclashopaque3.M17.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 30: net.proto2.go.testdata.nameclashopaque3.M18.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 31: net.proto2.go.testdata.nameclashopaque3.M19.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	0,  // 32: net.proto2.go.testdata.nameclashopaque3.M20.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
+	33, // [33:33] is the sub-list for method output_type
+	33, // [33:33] is the sub-list for method input_type
+	33, // [33:33] is the sub-list for extension type_name
+	33, // [33:33] is the sub-list for extension extendee
+	0,  // [0:33] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[4].OneofWrappers = []any{
+		(*m4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[5].OneofWrappers = []any{
+		(*m5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[6].OneofWrappers = []any{
+		(*m6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[7].OneofWrappers = []any{
+		(*m7_Bar)(nil),
+		(*m7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[8].OneofWrappers = []any{
+		(*m8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[9].OneofWrappers = []any{
+		(*m9_GetGetFoo)(nil),
+		(*m9_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[11].OneofWrappers = []any{
+		(*m11_SetSetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[12].OneofWrappers = []any{
+		(*m12_SetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[14].OneofWrappers = []any{
+		(*m14_HasHasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[15].OneofWrappers = []any{
+		(*m15_HasFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[17].OneofWrappers = []any{
+		(*m17_ClearClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[18].OneofWrappers = []any{
+		(*m18_ClearFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[19].OneofWrappers = []any{
+		(*m19_WhichFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[20].OneofWrappers = []any{
+		(*m20_WhichWhichFoo)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   21,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
new file mode 100644
index 0000000..0eb31c4
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
@@ -0,0 +1,943 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open.proto
+
+package test_name_clash_open
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+	sync "sync"
+)
+
+type M1 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo     *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[0]
+	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 M1.ProtoReflect.Descriptor instead.
+func (*M1) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *M1) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+func (x *M1) GetGetFoo_() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+func (x *M1) GetGetGetFoo() int32 {
+	if x != nil && x.GetGetFoo != nil {
+		return *x.GetGetFoo
+	}
+	return 0
+}
+
+type M2 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	GetGetFoo     *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	GetFoo_       *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[1]
+	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 M2.ProtoReflect.Descriptor instead.
+func (*M2) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *M2) GetGetGetFoo() int32 {
+	if x != nil && x.GetGetFoo != nil {
+		return *x.GetGetFoo
+	}
+	return 0
+}
+
+func (x *M2) GetGetFoo_() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+func (x *M2) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+type M3 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo        *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo_    *int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo_          *int32 `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[2]
+	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 M3.ProtoReflect.Descriptor instead.
+func (*M3) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *M3) GetGetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+func (x *M3) GetGetGetFoo_() int32 {
+	if x != nil && x.GetGetFoo_ != nil {
+		return *x.GetGetFoo_
+	}
+	return 0
+}
+
+func (x *M3) GetFoo_() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+type M4 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetFoo_:
+	//
+	//	*M4_GetGetGetFoo
+	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
+	Foo_          *int32          `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[3]
+	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 M4.ProtoReflect.Descriptor instead.
+func (*M4) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *M4) GetGetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+func (x *M4) GetGetGetFoo_() isM4_GetGetFoo_ {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) GetFoo_() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type M4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo *int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetGetFoo:
+	//
+	//	*M5_GetGetFoo_
+	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
+	Foo_          *int32            `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[4]
+	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 M5.ProtoReflect.Descriptor instead.
+func (*M5) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *M5) GetGetFoo() int32 {
+	if x != nil && x.GetFoo != nil {
+		return *x.GetFoo
+	}
+	return 0
+}
+
+func (x *M5) GetGetGetGetFoo() isM5_GetGetGetFoo {
+	if x != nil {
+		return x.GetGetGetFoo
+	}
+	return nil
+}
+
+func (x *M5) GetGetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M5) GetFoo_() int32 {
+	if x != nil && x.Foo_ != nil {
+		return *x.Foo_
+	}
+	return 0
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type M5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M6_GetGetGetFoo
+	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	GetFoo_       *int32         `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32         `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[5]
+	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 M6.ProtoReflect.Descriptor instead.
+func (*M6) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *M6) GetGetGetFoo() isM6_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) GetGetFoo_() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+func (x *M6) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type M6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	Bar                   | -                  | -    | Bar
+	//	GetFoo                | foo                | 1    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M7_Bar
+	//	*M7_GetFoo_
+	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	Foo           *int32         `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[6]
+	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 M7.ProtoReflect.Descriptor instead.
+func (*M7) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *M7) GetGetGetFoo() isM7_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) GetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M7) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type M7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type M7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M7_Bar) isM7_GetGetFoo() {}
+
+func (*M7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M8_GetGetFoo
+	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	GetFoo_       *int32             `protobuf:"varint,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *int32             `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[7]
+	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 M8.ProtoReflect.Descriptor instead.
+func (*M8) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *M8) GetGetGetGetFoo_() isM8_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M8) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M8) GetGetFoo_() int32 {
+	if x != nil && x.GetFoo_ != nil {
+		return *x.GetFoo_
+	}
+	return 0
+}
+
+func (x *M8) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type M8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	GetFoo                | get_get_foo        | 2    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M9_GetGetFoo
+	//	*M9_GetFoo_
+	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	Foo           *int32             `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[8]
+	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 M9.ProtoReflect.Descriptor instead.
+func (*M9) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *M9) GetGetGetGetFoo_() isM9_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M9) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
+	}
+	return 0
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type M9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type M9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc = []byte{
+	0x0a, 0x3f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x24, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74,
+	0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4f, 0x0a, 0x02, 0x4d, 0x31,
+	0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66,
+	0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x1e, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22, 0x4f, 0x0a, 0x02, 0x4d,
+	0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f,
+	0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0x4f, 0x0a, 0x02,
+	0x4d, 0x33, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x1e, 0x0a, 0x0b, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0x67, 0x0a,
+	0x02, 0x4d, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x27, 0x0a, 0x0f,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x47,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x64, 0x0a, 0x02, 0x4d, 0x35, 0x12, 0x17, 0x0a, 0x07,
+	0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74,
+	0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x67, 0x0a, 0x02,
+	0x4d, 0x36, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67,
+	0x65, 0x74, 0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65,
+	0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x54, 0x0a, 0x02, 0x4d, 0x37, 0x12, 0x12, 0x0a, 0x03, 0x62,
+	0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x62, 0x61, 0x72, 0x12,
+	0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x64, 0x0a, 0x02, 0x4d,
+	0x38, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11,
+	0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x22, 0x66, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09,
+	0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74,
+	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65,
+	0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x42, 0x5e, 0x5a, 0x54, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65,
+	0x6e, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var (
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescOnce sync.Once
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc
+)
+
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP() []byte {
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescOnce.Do(func() {
+		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData)
+	})
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_goTypes = []any{
+	(*M1)(nil), // 0: net.proto2.go.testdata.nameclashopen.M1
+	(*M2)(nil), // 1: net.proto2.go.testdata.nameclashopen.M2
+	(*M3)(nil), // 2: net.proto2.go.testdata.nameclashopen.M3
+	(*M4)(nil), // 3: net.proto2.go.testdata.nameclashopen.M4
+	(*M5)(nil), // 4: net.proto2.go.testdata.nameclashopen.M5
+	(*M6)(nil), // 5: net.proto2.go.testdata.nameclashopen.M6
+	(*M7)(nil), // 6: net.proto2.go.testdata.nameclashopen.M7
+	(*M8)(nil), // 7: net.proto2.go.testdata.nameclashopen.M8
+	(*M9)(nil), // 8: net.proto2.go.testdata.nameclashopen.M9
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[3].OneofWrappers = []any{
+		(*M4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[4].OneofWrappers = []any{
+		(*M5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[5].OneofWrappers = []any{
+		(*M6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[6].OneofWrappers = []any{
+		(*M7_Bar)(nil),
+		(*M7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[7].OneofWrappers = []any{
+		(*M8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[8].OneofWrappers = []any{
+		(*M9_GetGetFoo)(nil),
+		(*M9_GetFoo_)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
new file mode 100644
index 0000000..8fa6e30
--- /dev/null
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
@@ -0,0 +1,1060 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This proto verifies that we keep the name mangling algorithm (which is
+// position dependent) intact in the protoc_gen_go generator. The field names
+// and the getter names have to be kept intact over time, both in the OPEN and
+// in the HYBRID API. How fields are "mangled" is described in a comment per
+// field.
+
+// The order of "evaluation" of fields is important. Fields are evaluated in
+// order of appearance, except the oneof union names, that are evaluated after
+// their first member. For each field, check if there is a previous field name
+// or getter name that clashes with this field or it's getter. In case there is
+// a clash, add an _ to the field name and repeat. In the case of oneof's, the
+// union will be renamed if it clashes with it's first member, but not if it
+// clashes with it's second.
+
+// This scheme is here for backwards compatibility.
+// The type of clashes that can be are the following:
+// 1 - My field name clashes with their getter name
+// 2 - My getter name clashes with their field name
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3.proto
+
+package test_name_clash_open3
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+	sync "sync"
+)
+
+type M0 struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I1            int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M0) Reset() {
+	*x = M0{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M0) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M0) ProtoMessage() {}
+
+func (x *M0) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[0]
+	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 M0.ProtoReflect.Descriptor instead.
+func (*M0) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *M0) GetI1() int32 {
+	if x != nil {
+		return x.I1
+	}
+	return 0
+}
+
+type M1 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// Foo                    | -                  | -    | Foo
+	// GetFoo                 | foo                | 1    | GetFoo_
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M1) Reset() {
+	*x = M1{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M1) ProtoMessage() {}
+
+func (x *M1) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[1]
+	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 M1.ProtoReflect.Descriptor instead.
+func (*M1) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *M1) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+func (x *M1) GetGetFoo_() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+func (x *M1) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+type M2 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M2) Reset() {
+	*x = M2{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M2) ProtoMessage() {}
+
+func (x *M2) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[2]
+	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 M2.ProtoReflect.Descriptor instead.
+func (*M2) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *M2) GetGetGetFoo() *M0 {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M2) GetGetFoo_() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+func (x *M2) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+type M3 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M3) Reset() {
+	*x = M3{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M3) ProtoMessage() {}
+
+func (x *M3) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[3]
+	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 M3.ProtoReflect.Descriptor instead.
+func (*M3) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *M3) GetGetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+func (x *M3) GetGetGetFoo_() *M0 {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M3) GetFoo_() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+type M4 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetFoo_:
+	//
+	//	*M4_GetGetGetFoo
+	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
+	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M4) Reset() {
+	*x = M4{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M4) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M4) ProtoMessage() {}
+
+func (x *M4) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[4]
+	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 M4.ProtoReflect.Descriptor instead.
+func (*M4) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *M4) GetGetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetFoo_() isM4_GetGetFoo_ {
+	if x != nil {
+		return x.GetGetFoo_
+	}
+	return nil
+}
+
+func (x *M4) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo_.(*M4_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M4) GetFoo_() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+type isM4_GetGetFoo_ interface {
+	isM4_GetGetFoo_()
+}
+
+type M4_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
+
+type M5 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetFoo                 | -                  | -    | GetFoo
+	// GetGetGetFoo           | -                  | -    | GetGetGetFoo
+	//
+	//	GetGetFoo             | get_foo            | 1    | GetGetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | get_foo            | 2    | Foo_
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	// Types that are valid to be assigned to GetGetGetFoo:
+	//
+	//	*M5_GetGetFoo_
+	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
+	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M5) Reset() {
+	*x = M5{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M5) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M5) ProtoMessage() {}
+
+func (x *M5) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[5]
+	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 M5.ProtoReflect.Descriptor instead.
+func (*M5) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *M5) GetGetFoo() *M0 {
+	if x != nil {
+		return x.GetFoo
+	}
+	return nil
+}
+
+func (x *M5) GetGetGetGetFoo() isM5_GetGetGetFoo {
+	if x != nil {
+		return x.GetGetGetFoo
+	}
+	return nil
+}
+
+func (x *M5) GetGetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo.(*M5_GetGetFoo_); ok {
+			return x.GetGetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M5) GetFoo_() *M0 {
+	if x != nil {
+		return x.Foo_
+	}
+	return nil
+}
+
+type isM5_GetGetGetFoo interface {
+	isM5_GetGetGetFoo()
+}
+
+type M5_GetGetFoo_ struct {
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
+
+type M6 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_get_foo before get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	GetGetGetFoo          | -                  | -    | GetGetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M6_GetGetGetFoo
+	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M6) Reset() {
+	*x = M6{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M6) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M6) ProtoMessage() {}
+
+func (x *M6) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[6]
+	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 M6.ProtoReflect.Descriptor instead.
+func (*M6) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *M6) GetGetGetFoo() isM6_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M6) GetGetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M6_GetGetGetFoo); ok {
+			return x.GetGetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M6) GetGetFoo_() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+func (x *M6) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+type isM6_GetGetFoo interface {
+	isM6_GetGetFoo()
+}
+
+type M6_GetGetGetFoo struct {
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+}
+
+func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
+
+type M7 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - bar before get_get_foo, then get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetFoo              | -                  | -    | GetGetFoo
+	//
+	//	Bar                   | -                  | -    | Bar
+	//	GetFoo                | foo                | 1    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetFoo:
+	//
+	//	*M7_Bar
+	//	*M7_GetFoo_
+	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M7) Reset() {
+	*x = M7{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M7) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M7) ProtoMessage() {}
+
+func (x *M7) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[7]
+	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 M7.ProtoReflect.Descriptor instead.
+func (*M7) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *M7) GetGetGetFoo() isM7_GetGetFoo {
+	if x != nil {
+		return x.GetGetFoo
+	}
+	return nil
+}
+
+func (x *M7) GetBar() bool {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_Bar); ok {
+			return x.Bar
+		}
+	}
+	return false
+}
+
+func (x *M7) GetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetFoo.(*M7_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M7) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+type isM7_GetGetFoo interface {
+	isM7_GetGetFoo()
+}
+
+type M7_Bar struct {
+	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+}
+
+type M7_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M7_Bar) isM7_GetGetFoo() {}
+
+func (*M7_GetFoo_) isM7_GetGetFoo() {}
+
+type M8 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	                      |                    |      |
+	//
+	// GetFoo                 | get_get_foo        | 2    | GetFoo_
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M8_GetGetFoo
+	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M8) Reset() {
+	*x = M8{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M8) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M8) ProtoMessage() {}
+
+func (x *M8) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[8]
+	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 M8.ProtoReflect.Descriptor instead.
+func (*M8) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *M8) GetGetGetGetFoo_() isM8_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M8) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M8_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M8) GetGetFoo_() *M0 {
+	if x != nil {
+		return x.GetFoo_
+	}
+	return nil
+}
+
+func (x *M8) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+type isM8_GetGetGetFoo_ interface {
+	isM8_GetGetGetFoo_()
+}
+
+type M8_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
+
+type M9 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Note evaluation order - get_get_foo before get_get_get_foo, then get_foo
+	// initial name in Go     | Clashes with field | type | final name
+	// GetGetGetFoo           | get_get_foo        | 1    | GetGetGetFoo_
+	//
+	//	GetGetFoo             | -                  | -    | GetGetFoo
+	//	GetFoo                | get_get_foo        | 2    | GetFoo_
+	//	                      |                    |      |
+	//
+	// Foo                    | -                  | -    | Foo
+	//
+	// Types that are valid to be assigned to GetGetGetFoo_:
+	//
+	//	*M9_GetGetFoo
+	//	*M9_GetFoo_
+	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M9) Reset() {
+	*x = M9{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M9) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M9) ProtoMessage() {}
+
+func (x *M9) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[9]
+	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 M9.ProtoReflect.Descriptor instead.
+func (*M9) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *M9) GetGetGetGetFoo_() isM9_GetGetGetFoo_ {
+	if x != nil {
+		return x.GetGetGetFoo_
+	}
+	return nil
+}
+
+func (x *M9) GetGetGetFoo() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetGetFoo); ok {
+			return x.GetGetFoo
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetGetFoo_() int32 {
+	if x != nil {
+		if x, ok := x.GetGetGetFoo_.(*M9_GetFoo_); ok {
+			return x.GetFoo_
+		}
+	}
+	return 0
+}
+
+func (x *M9) GetFoo() *M0 {
+	if x != nil {
+		return x.Foo
+	}
+	return nil
+}
+
+type isM9_GetGetGetFoo_ interface {
+	isM9_GetGetGetFoo_()
+}
+
+type M9_GetGetFoo struct {
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+}
+
+type M9_GetFoo_ struct {
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+}
+
+func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
+
+func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
+
+var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto protoreflect.FileDescriptor
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc = []byte{
+	0x0a, 0x40, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
+	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x25, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63,
+	0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x02,
+	0x4d, 0x30, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
+	0x69, 0x31, 0x22, 0xd0, 0x01, 0x0a, 0x02, 0x4d, 0x31, 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e,
+	0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d,
+	0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e,
+	0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x49, 0x0a, 0x0b, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
+	0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47,
+	0x65, 0x74, 0x46, 0x6f, 0x6f, 0x22, 0xd0, 0x01, 0x0a, 0x02, 0x4d, 0x32, 0x12, 0x49, 0x0a, 0x0b,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63,
+	0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65,
+	0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
+	0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a, 0x03, 0x66,
+	0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
+	0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0xd0, 0x01, 0x0a, 0x02, 0x4d, 0x33, 0x12,
+	0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
+	0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74,
+	0x46, 0x6f, 0x6f, 0x12, 0x49, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
+	0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33,
+	0x2e, 0x4d, 0x30, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b,
+	0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65,
+	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70,
+	0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0xbd, 0x01, 0x0a, 0x02,
+	0x4d, 0x34, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06,
+	0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x3b, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e,
+	0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f,
+	0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b,
+	0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xba, 0x01, 0x0a, 0x02,
+	0x4d, 0x35, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06,
+	0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
+	0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67,
+	0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e,
+	0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30,
+	0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74,
+	0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xbd, 0x01, 0x0a, 0x02, 0x4d, 0x36, 0x12,
+	0x27, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x47,
+	0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a, 0x03,
+	0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
+	0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e,
+	0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65, 0x74,
+	0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x7f, 0x0a, 0x02, 0x4d, 0x37, 0x12, 0x12,
+	0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x62,
+	0x61, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a,
+	0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65,
+	0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x67, 0x65,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0xba, 0x01, 0x0a, 0x02, 0x4d, 0x38,
+	0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46,
+	0x6f, 0x6f, 0x12, 0x42, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x06,
+	0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
+	0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e, 0x4d, 0x30, 0x52, 0x03,
+	0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x91, 0x01, 0x0a, 0x02, 0x4d, 0x39, 0x12, 0x20, 0x0a,
+	0x0b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x67, 0x65, 0x74, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12,
+	0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6f, 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x6f,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
+	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e,
+	0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x42, 0x61, 0x5a, 0x55, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70,
+	0x65, 0x6e, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x08, 0x02, 0x62, 0x08, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var (
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescOnce sync.Once
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc
+)
+
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP() []byte {
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescOnce.Do(func() {
+		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData)
+	})
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData
+}
+
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_goTypes = []any{
+	(*M0)(nil), // 0: net.proto2.go.testdata.nameclashopen3.M0
+	(*M1)(nil), // 1: net.proto2.go.testdata.nameclashopen3.M1
+	(*M2)(nil), // 2: net.proto2.go.testdata.nameclashopen3.M2
+	(*M3)(nil), // 3: net.proto2.go.testdata.nameclashopen3.M3
+	(*M4)(nil), // 4: net.proto2.go.testdata.nameclashopen3.M4
+	(*M5)(nil), // 5: net.proto2.go.testdata.nameclashopen3.M5
+	(*M6)(nil), // 6: net.proto2.go.testdata.nameclashopen3.M6
+	(*M7)(nil), // 7: net.proto2.go.testdata.nameclashopen3.M7
+	(*M8)(nil), // 8: net.proto2.go.testdata.nameclashopen3.M8
+	(*M9)(nil), // 9: net.proto2.go.testdata.nameclashopen3.M9
+}
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_depIdxs = []int32{
+	0,  // 0: net.proto2.go.testdata.nameclashopen3.M1.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 1: net.proto2.go.testdata.nameclashopen3.M1.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 2: net.proto2.go.testdata.nameclashopen3.M1.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 3: net.proto2.go.testdata.nameclashopen3.M2.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 4: net.proto2.go.testdata.nameclashopen3.M2.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 5: net.proto2.go.testdata.nameclashopen3.M2.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 6: net.proto2.go.testdata.nameclashopen3.M3.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 7: net.proto2.go.testdata.nameclashopen3.M3.get_get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 8: net.proto2.go.testdata.nameclashopen3.M3.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 9: net.proto2.go.testdata.nameclashopen3.M4.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 10: net.proto2.go.testdata.nameclashopen3.M4.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 11: net.proto2.go.testdata.nameclashopen3.M5.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 12: net.proto2.go.testdata.nameclashopen3.M5.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 13: net.proto2.go.testdata.nameclashopen3.M6.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 14: net.proto2.go.testdata.nameclashopen3.M6.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 15: net.proto2.go.testdata.nameclashopen3.M7.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 16: net.proto2.go.testdata.nameclashopen3.M8.get_foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 17: net.proto2.go.testdata.nameclashopen3.M8.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	0,  // 18: net.proto2.go.testdata.nameclashopen3.M9.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
+	19, // [19:19] is the sub-list for method output_type
+	19, // [19:19] is the sub-list for method input_type
+	19, // [19:19] is the sub-list for extension type_name
+	19, // [19:19] is the sub-list for extension extendee
+	0,  // [0:19] is the sub-list for field type_name
+}
+
+func init() { file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_init() }
+func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_init() {
+	if File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto != nil {
+		return
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[4].OneofWrappers = []any{
+		(*M4_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[5].OneofWrappers = []any{
+		(*M5_GetGetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[6].OneofWrappers = []any{
+		(*M6_GetGetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[7].OneofWrappers = []any{
+		(*M7_Bar)(nil),
+		(*M7_GetFoo_)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[8].OneofWrappers = []any{
+		(*M8_GetGetFoo)(nil),
+	}
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[9].OneofWrappers = []any{
+		(*M9_GetGetFoo)(nil),
+		(*M9_GetFoo_)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   10,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_goTypes,
+		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_depIdxs,
+		MessageInfos:      file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes,
+	}.Build()
+	File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto = out.File
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_goTypes = nil
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_depIdxs = nil
+}
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
index dd74638..a8bb130 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -68,12 +68,11 @@
 }
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	StringField   *string                `protobuf:"bytes,1,opt,name=string_field,json=stringField" json:"string_field,omitempty"`
+	EnumField     *Enum                  `protobuf:"varint,2,opt,name=enum_field,json=enumField,enum=Enum,def=0" json:"enum_field,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	StringField *string `protobuf:"bytes,1,opt,name=string_field,json=stringField" json:"string_field,omitempty"`
-	EnumField   *Enum   `protobuf:"varint,2,opt,name=enum_field,json=enumField,enum=Enum,def=0" json:"enum_field,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for Message fields.
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
index 5eb2ba4..444c69a 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -346,12 +346,11 @@
 }
 
 type EnumContainerMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DefaultDuplicate1 *EnumType2 `protobuf:"varint,1,opt,name=default_duplicate1,json=defaultDuplicate1,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate1,omitempty"`
-	DefaultDuplicate2 *EnumType2 `protobuf:"varint,2,opt,name=default_duplicate2,json=defaultDuplicate2,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate2,omitempty"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	DefaultDuplicate1 *EnumType2             `protobuf:"varint,1,opt,name=default_duplicate1,json=defaultDuplicate1,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate1,omitempty"`
+	DefaultDuplicate2 *EnumType2             `protobuf:"varint,2,opt,name=default_duplicate2,json=defaultDuplicate2,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate2,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
 // Default values for EnumContainerMessage1 fields.
@@ -405,9 +404,9 @@
 }
 
 type EnumContainerMessage1_EnumContainerMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumContainerMessage1_EnumContainerMessage2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
index 74fcdec..5c3be50 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -72,10 +72,7 @@
 }
 
 type FieldTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state               protoimpl.MessageState               `protogen:"open.v1"`
 	OptionalBool        *bool                                `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
 	OptionalEnum        *FieldTestMessage_Enum               `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
 	OptionalInt32       *int32                               `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
@@ -157,7 +154,7 @@
 	MapInt32Int64       map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapStringMessage    map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapFixed64Enum      map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.protoc.proto2.FieldTestMessage_Enum"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*FieldTestMessage_OneofBool
 	//	*FieldTestMessage_OneofEnum
@@ -179,11 +176,13 @@
 	//	*FieldTestMessage_Oneofgroup
 	//	*FieldTestMessage_OneofLargestTag
 	OneofField isFieldTestMessage_OneofField `protobuf_oneof:"oneof_field"`
-	// Types that are assignable to OneofTwo:
+	// Types that are valid to be assigned to OneofTwo:
 	//
 	//	*FieldTestMessage_OneofTwo_1
 	//	*FieldTestMessage_OneofTwo_2
-	OneofTwo isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
+	OneofTwo      isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for FieldTestMessage fields.
@@ -815,163 +814,205 @@
 	return nil
 }
 
-func (m *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *FieldTestMessage) GetOneofEnum() FieldTestMessage_Enum {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return FieldTestMessage_ZERO
 }
 
 func (x *FieldTestMessage) GetOneofInt32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt32); ok {
-		return x.OneofInt32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofInt32); ok {
+			return x.OneofInt32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSint32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint32); ok {
-		return x.OneofSint32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSint32); ok {
+			return x.OneofSint32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofInt64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt64); ok {
-		return x.OneofInt64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofInt64); ok {
+			return x.OneofInt64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSint64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint64); ok {
-		return x.OneofSint64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSint64); ok {
+			return x.OneofSint64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSfixed32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed32); ok {
-		return x.OneofSfixed32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSfixed32); ok {
+			return x.OneofSfixed32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFixed32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed32); ok {
-		return x.OneofFixed32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFixed32); ok {
+			return x.OneofFixed32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSfixed64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed64); ok {
-		return x.OneofSfixed64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSfixed64); ok {
+			return x.OneofSfixed64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFixed64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed64); ok {
-		return x.OneofFixed64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFixed64); ok {
+			return x.OneofFixed64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *FieldTestMessage) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneof_Message() *FieldTestMessage_Message {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneof_Message); ok {
-		return x.Oneof_Message
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_Oneof_Message); ok {
+			return x.Oneof_Message
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofgroup() *FieldTestMessage_OneofGroup {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofLargestTag() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofLargestTag); ok {
-		return x.OneofLargestTag
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofLargestTag); ok {
+			return x.OneofLargestTag
+		}
 	}
 	return 0
 }
 
-func (m *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
-	if m != nil {
-		return m.OneofTwo
+func (x *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
+	if x != nil {
+		return x.OneofTwo
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofTwo_1() int32 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_1); ok {
-		return x.OneofTwo_1
+	if x != nil {
+		if x, ok := x.OneofTwo.(*FieldTestMessage_OneofTwo_1); ok {
+			return x.OneofTwo_1
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofTwo_2() int64 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_2); ok {
-		return x.OneofTwo_2
+	if x != nil {
+		if x, ok := x.OneofTwo.(*FieldTestMessage_OneofTwo_2); ok {
+			return x.OneofTwo_2
+		}
 	}
 	return 0
 }
@@ -1111,11 +1152,10 @@
 func (*FieldTestMessage_OneofTwo_2) isFieldTestMessage_OneofTwo() {}
 
 type FieldTestMessage_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptionalGroup *string                `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptionalGroup *string `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_OptionalGroup) Reset() {
@@ -1156,11 +1196,10 @@
 }
 
 type FieldTestMessage_RequiredGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RequiredGroup *string                `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RequiredGroup *string `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_RequiredGroup) Reset() {
@@ -1201,11 +1240,10 @@
 }
 
 type FieldTestMessage_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RepeatedGroup []string               `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RepeatedGroup []string `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_RepeatedGroup) Reset() {
@@ -1246,11 +1284,10 @@
 }
 
 type FieldTestMessage_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OneofGroupField *string `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	OneofGroupField *string                `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_OneofGroup) Reset() {
@@ -1291,9 +1328,9 @@
 }
 
 type FieldTestMessage_Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
index 877d500..517dc65 100644
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
@@ -15,12 +15,11 @@
 )
 
 type Layer1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	L2            *Layer1_Layer2         `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
+	L3            *Layer1_Layer2_Layer3  `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	L2 *Layer1_Layer2        `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1) Reset() {
@@ -68,11 +67,10 @@
 }
 
 type Layer1_Layer2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	L3            *Layer1_Layer2_Layer3  `protobuf:"bytes,1,opt,name=l3" json:"l3,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,1,opt,name=l3" json:"l3,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1_Layer2) Reset() {
@@ -113,9 +111,9 @@
 }
 
 type Layer1_Layer2_Layer3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1_Layer2_Layer3) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
index b9069a4..171144e 100644
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
@@ -15,12 +15,11 @@
 )
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I32           *int32                 `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
+	M             *Message               `protobuf:"bytes,2,opt,name=m" json:"m,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I32 *int32   `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
-	M   *Message `protobuf:"bytes,2,opt,name=m" json:"m,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
index 02385e7..dfc8ed0 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -58,10 +58,7 @@
 }
 
 type FieldTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state            protoimpl.MessageState               `protogen:"open.v1"`
 	OptionalBool     string                               `protobuf:"bytes,1,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
 	OptionalEnum     FieldTestMessage_Enum                `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
 	OptionalInt32    int32                                `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
@@ -96,9 +93,11 @@
 	RepeatedString   []string                             `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
 	RepeatedBytes    [][]byte                             `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
 	Repeated_Message []*FieldTestMessage_Message          `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage,proto3" json:"repeated_Message,omitempty"`
-	MapInt32Int64    map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64,proto3" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringMessage map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage,proto3" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapFixed64Enum   map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum,proto3" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum"`
+	MapInt32Int64    map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64,proto3" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringMessage map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage,proto3" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapFixed64Enum   map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum,proto3" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.protoc.proto3.FieldTestMessage_Enum"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage) Reset() {
@@ -391,9 +390,9 @@
 }
 
 type FieldTestMessage_Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
index 7a283f7..d73fbec 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
@@ -346,12 +346,11 @@
 }
 
 type EnumContainerMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DefaultDuplicate1 *EnumType2 `protobuf:"varint,1,opt,name=default_duplicate1,json=defaultDuplicate1,enum=goproto.protoc.protoeditions.EnumType2,def=1" json:"default_duplicate1,omitempty"`
-	DefaultDuplicate2 *EnumType2 `protobuf:"varint,2,opt,name=default_duplicate2,json=defaultDuplicate2,enum=goproto.protoc.protoeditions.EnumType2,def=1" json:"default_duplicate2,omitempty"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	DefaultDuplicate1 *EnumType2             `protobuf:"varint,1,opt,name=default_duplicate1,json=defaultDuplicate1,enum=goproto.protoc.protoeditions.EnumType2,def=1" json:"default_duplicate1,omitempty"`
+	DefaultDuplicate2 *EnumType2             `protobuf:"varint,2,opt,name=default_duplicate2,json=defaultDuplicate2,enum=goproto.protoc.protoeditions.EnumType2,def=1" json:"default_duplicate2,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
 // Default values for EnumContainerMessage1 fields.
@@ -405,9 +404,9 @@
 }
 
 type EnumContainerMessage1_EnumContainerMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumContainerMessage1_EnumContainerMessage2) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
index cf3a176..7c1f838 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
@@ -62,10 +62,7 @@
 }
 
 type FieldTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state               protoimpl.MessageState               `protogen:"open.v1"`
 	OptionalBool        *bool                                `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
 	OptionalEnum        *FieldTestMessage_Enum               `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.protoeditions.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
 	OptionalInt32       *int32                               `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
@@ -147,7 +144,7 @@
 	MapInt32Int64       map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	MapStringMessage    map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapFixed64Enum      map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.protoc.protoeditions.FieldTestMessage_Enum"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*FieldTestMessage_OneofBool
 	//	*FieldTestMessage_OneofEnum
@@ -169,11 +166,13 @@
 	//	*FieldTestMessage_Oneofgroup
 	//	*FieldTestMessage_OneofLargestTag
 	OneofField isFieldTestMessage_OneofField `protobuf_oneof:"oneof_field"`
-	// Types that are assignable to OneofTwo:
+	// Types that are valid to be assigned to OneofTwo:
 	//
 	//	*FieldTestMessage_OneofTwo_1
 	//	*FieldTestMessage_OneofTwo_2
-	OneofTwo isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
+	OneofTwo      isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for FieldTestMessage fields.
@@ -805,163 +804,205 @@
 	return nil
 }
 
-func (m *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *FieldTestMessage) GetOneofEnum() FieldTestMessage_Enum {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return FieldTestMessage_ZERO
 }
 
 func (x *FieldTestMessage) GetOneofInt32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt32); ok {
-		return x.OneofInt32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofInt32); ok {
+			return x.OneofInt32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSint32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint32); ok {
-		return x.OneofSint32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSint32); ok {
+			return x.OneofSint32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofInt64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt64); ok {
-		return x.OneofInt64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofInt64); ok {
+			return x.OneofInt64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSint64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint64); ok {
-		return x.OneofSint64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSint64); ok {
+			return x.OneofSint64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSfixed32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed32); ok {
-		return x.OneofSfixed32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSfixed32); ok {
+			return x.OneofSfixed32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFixed32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed32); ok {
-		return x.OneofFixed32
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFixed32); ok {
+			return x.OneofFixed32
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofSfixed64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed64); ok {
-		return x.OneofSfixed64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofSfixed64); ok {
+			return x.OneofSfixed64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofFixed64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed64); ok {
-		return x.OneofFixed64
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofFixed64); ok {
+			return x.OneofFixed64
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *FieldTestMessage) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneof_Message() *FieldTestMessage_Message {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneof_Message); ok {
-		return x.Oneof_Message
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_Oneof_Message); ok {
+			return x.Oneof_Message
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofgroup() *FieldTestMessage_OneofGroup {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofLargestTag() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofLargestTag); ok {
-		return x.OneofLargestTag
+	if x != nil {
+		if x, ok := x.OneofField.(*FieldTestMessage_OneofLargestTag); ok {
+			return x.OneofLargestTag
+		}
 	}
 	return 0
 }
 
-func (m *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
-	if m != nil {
-		return m.OneofTwo
+func (x *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
+	if x != nil {
+		return x.OneofTwo
 	}
 	return nil
 }
 
 func (x *FieldTestMessage) GetOneofTwo_1() int32 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_1); ok {
-		return x.OneofTwo_1
+	if x != nil {
+		if x, ok := x.OneofTwo.(*FieldTestMessage_OneofTwo_1); ok {
+			return x.OneofTwo_1
+		}
 	}
 	return 0
 }
 
 func (x *FieldTestMessage) GetOneofTwo_2() int64 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_2); ok {
-		return x.OneofTwo_2
+	if x != nil {
+		if x, ok := x.OneofTwo.(*FieldTestMessage_OneofTwo_2); ok {
+			return x.OneofTwo_2
+		}
 	}
 	return 0
 }
@@ -1101,11 +1142,10 @@
 func (*FieldTestMessage_OneofTwo_2) isFieldTestMessage_OneofTwo() {}
 
 type FieldTestMessage_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Optionalgroup *string                `protobuf:"bytes,19,opt,name=optionalgroup" json:"optionalgroup,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Optionalgroup *string `protobuf:"bytes,19,opt,name=optionalgroup" json:"optionalgroup,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_OptionalGroup) Reset() {
@@ -1146,11 +1186,10 @@
 }
 
 type FieldTestMessage_RequiredGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RequiredGroup *string                `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RequiredGroup *string `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_RequiredGroup) Reset() {
@@ -1191,11 +1230,10 @@
 }
 
 type FieldTestMessage_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RepeatedGroup []string               `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RepeatedGroup []string `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_RepeatedGroup) Reset() {
@@ -1236,11 +1274,10 @@
 }
 
 type FieldTestMessage_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OneofGroupField *string `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	OneofGroupField *string                `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_OneofGroup) Reset() {
@@ -1281,9 +1318,9 @@
 }
 
 type FieldTestMessage_Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldTestMessage_Message) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
index e821e5b..e2a7fa8 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
@@ -179,9 +179,9 @@
 }
 
 type ContainerForNestedEnum struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ContainerForNestedEnum) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
index 21aef7f..77459c8 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
@@ -15,15 +15,14 @@
 )
 
 type MessageWithMaps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state              protoimpl.MessageState                   `protogen:"open.v1"`
 	MapWithoutMessage  map[string]string                        `protobuf:"bytes,1,rep,name=map_without_message,json=mapWithoutMessage" json:"map_without_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapWithoutMessageB map[uint32][]byte                        `protobuf:"bytes,2,rep,name=map_without_message_b,json=mapWithoutMessageB" json:"map_without_message_b,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapWithMessage     map[int64]*MessageWithMaps_NestedMessage `protobuf:"bytes,3,rep,name=map_with_message,json=mapWithMessage" json:"map_with_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	NestedMessage      *MessageWithMaps_NestedMessage           `protobuf:"group,4,opt,name=NestedMessage,json=nestedMessage" json:"nested_message,omitempty"`
 	RepeatedMessage    []*MessageWithMaps_NestedMessage         `protobuf:"group,5,rep,name=NestedMessage,json=repeatedMessage" json:"repeated_message,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
 func (x *MessageWithMaps) Reset() {
@@ -92,12 +91,11 @@
 }
 
 type MessageWithMaps_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            *uint64                `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	Name          *string                `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Id   *uint64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MessageWithMaps_NestedMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
index fe15bdf..a87691f 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
@@ -15,12 +15,11 @@
 )
 
 type Layer1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	L2            *Layer1_Layer2         `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
+	L3            *Layer1_Layer2_Layer3  `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	L2 *Layer1_Layer2        `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1) Reset() {
@@ -68,11 +67,10 @@
 }
 
 type Layer1_Layer2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	L3            *Layer1_Layer2_Layer3  `protobuf:"bytes,1,opt,name=l3" json:"l3,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,1,opt,name=l3" json:"l3,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1_Layer2) Reset() {
@@ -113,9 +111,9 @@
 }
 
 type Layer1_Layer2_Layer3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Layer1_Layer2_Layer3) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/retention/options_message.pb.go b/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
index d2725de..762aa63 100755
--- a/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
+++ b/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
@@ -17,13 +17,12 @@
 
 // Retention attributes set on fields nested within a message
 type OptionsMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PlainField            *int32 `protobuf:"varint,1,opt,name=plain_field,json=plainField" json:"plain_field,omitempty"`
-	RuntimeRetentionField *int32 `protobuf:"varint,2,opt,name=runtime_retention_field,json=runtimeRetentionField" json:"runtime_retention_field,omitempty"`
-	SourceRetentionField  *int32 `protobuf:"varint,3,opt,name=source_retention_field,json=sourceRetentionField" json:"source_retention_field,omitempty"`
+	state                 protoimpl.MessageState `protogen:"open.v1"`
+	PlainField            *int32                 `protobuf:"varint,1,opt,name=plain_field,json=plainField" json:"plain_field,omitempty"`
+	RuntimeRetentionField *int32                 `protobuf:"varint,2,opt,name=runtime_retention_field,json=runtimeRetentionField" json:"runtime_retention_field,omitempty"`
+	SourceRetentionField  *int32                 `protobuf:"varint,3,opt,name=source_retention_field,json=sourceRetentionField" json:"source_retention_field,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *OptionsMessage) Reset() {
diff --git a/cmd/protoc-gen-go/testdata/retention/retention.pb.go b/cmd/protoc-gen-go/testdata/retention/retention.pb.go
index 2b0f934..ef73b91 100755
--- a/cmd/protoc-gen-go/testdata/retention/retention.pb.go
+++ b/cmd/protoc-gen-go/testdata/retention/retention.pb.go
@@ -122,10 +122,10 @@
 }
 
 type Extendee struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Extendee) Reset() {
@@ -159,16 +159,15 @@
 }
 
 type TopLevelMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	F *float32 `protobuf:"fixed32,1,opt,name=f" json:"f,omitempty"`
-	// Types that are assignable to O:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	F     *float32               `protobuf:"fixed32,1,opt,name=f" json:"f,omitempty"`
+	// Types that are valid to be assigned to O:
 	//
 	//	*TopLevelMessage_I
-	O isTopLevelMessage_O `protobuf_oneof:"o"`
+	O               isTopLevelMessage_O `protobuf_oneof:"o"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TopLevelMessage) Reset() {
@@ -208,16 +207,18 @@
 	return 0
 }
 
-func (m *TopLevelMessage) GetO() isTopLevelMessage_O {
-	if m != nil {
-		return m.O
+func (x *TopLevelMessage) GetO() isTopLevelMessage_O {
+	if x != nil {
+		return x.O
 	}
 	return nil
 }
 
 func (x *TopLevelMessage) GetI() int64 {
-	if x, ok := x.GetO().(*TopLevelMessage_I); ok {
-		return x.I
+	if x != nil {
+		if x, ok := x.O.(*TopLevelMessage_I); ok {
+			return x.I
+		}
 	}
 	return 0
 }
@@ -233,9 +234,9 @@
 func (*TopLevelMessage_I) isTopLevelMessage_O() {}
 
 type TopLevelMessage_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TopLevelMessage_NestedMessage) Reset() {
diff --git a/internal/editiondefaults/editions_defaults.binpb b/internal/editiondefaults/editions_defaults.binpb
index 02666ae..5a57ef6 100644
--- a/internal/editiondefaults/editions_defaults.binpb
+++ b/internal/editiondefaults/editions_defaults.binpb
Binary files differ
diff --git a/internal/genid/descriptor_gen.go b/internal/genid/descriptor_gen.go
index 30a2fa6..f30ab6b 100644
--- a/internal/genid/descriptor_gen.go
+++ b/internal/genid/descriptor_gen.go
@@ -1120,26 +1120,20 @@
 
 // Field names for google.protobuf.FeatureSetDefaults.
 const (
-	FeatureSetDefaults_Defaults_field_name                 protoreflect.Name = "defaults"
-	FeatureSetDefaults_MinimumEditionDeprecated_field_name protoreflect.Name = "minimum_edition"
-	FeatureSetDefaults_MaximumEditionDeprecated_field_name protoreflect.Name = "maximum_edition"
-	FeatureSetDefaults_MinimumEdition_field_name           protoreflect.Name = "minimum_edition"
-	FeatureSetDefaults_MaximumEdition_field_name           protoreflect.Name = "maximum_edition"
+	FeatureSetDefaults_Defaults_field_name       protoreflect.Name = "defaults"
+	FeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = "minimum_edition"
+	FeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = "maximum_edition"
 
-	FeatureSetDefaults_Defaults_field_fullname                 protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults"
-	FeatureSetDefaults_MinimumEditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition"
-	FeatureSetDefaults_MaximumEditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition"
-	FeatureSetDefaults_MinimumEdition_field_fullname           protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition"
-	FeatureSetDefaults_MaximumEdition_field_fullname           protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition"
+	FeatureSetDefaults_Defaults_field_fullname       protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults"
+	FeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition"
+	FeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition"
 )
 
 // Field numbers for google.protobuf.FeatureSetDefaults.
 const (
-	FeatureSetDefaults_Defaults_field_number                 protoreflect.FieldNumber = 1
-	FeatureSetDefaults_MinimumEditionDeprecated_field_number protoreflect.FieldNumber = 2
-	FeatureSetDefaults_MaximumEditionDeprecated_field_number protoreflect.FieldNumber = 3
-	FeatureSetDefaults_MinimumEdition_field_number           protoreflect.FieldNumber = 4
-	FeatureSetDefaults_MaximumEdition_field_number           protoreflect.FieldNumber = 5
+	FeatureSetDefaults_Defaults_field_number       protoreflect.FieldNumber = 1
+	FeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4
+	FeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5
 )
 
 // Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.
@@ -1153,12 +1147,10 @@
 	FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name             protoreflect.Name = "edition"
 	FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = "overridable_features"
 	FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name       protoreflect.Name = "fixed_features"
-	FeatureSetDefaults_FeatureSetEditionDefault_Features_field_name            protoreflect.Name = "features"
 
 	FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname             protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition"
 	FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features"
 	FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname       protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features"
-	FeatureSetDefaults_FeatureSetEditionDefault_Features_field_fullname            protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features"
 )
 
 // Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.
@@ -1166,7 +1158,6 @@
 	FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number             protoreflect.FieldNumber = 3
 	FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4
 	FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number       protoreflect.FieldNumber = 5
-	FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number            protoreflect.FieldNumber = 2
 )
 
 // Names for google.protobuf.SourceCodeInfo.
diff --git a/internal/testprotos/benchmarks/micro/micro.pb.go b/internal/testprotos/benchmarks/micro/micro.pb.go
index 8392e46..dd88e1b 100644
--- a/internal/testprotos/benchmarks/micro/micro.pb.go
+++ b/internal/testprotos/benchmarks/micro/micro.pb.go
@@ -15,26 +15,25 @@
 )
 
 type SixteenRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	F1            *int32                 `protobuf:"varint,1,req,name=f1" json:"f1,omitempty"`
+	F2            *int32                 `protobuf:"varint,2,req,name=f2" json:"f2,omitempty"`
+	F3            *int32                 `protobuf:"varint,3,req,name=f3" json:"f3,omitempty"`
+	F4            *int32                 `protobuf:"varint,4,req,name=f4" json:"f4,omitempty"`
+	F5            *int32                 `protobuf:"varint,5,req,name=f5" json:"f5,omitempty"`
+	F6            *int32                 `protobuf:"varint,6,req,name=f6" json:"f6,omitempty"`
+	F7            *int32                 `protobuf:"varint,7,req,name=f7" json:"f7,omitempty"`
+	F8            *int32                 `protobuf:"varint,8,req,name=f8" json:"f8,omitempty"`
+	F9            *int32                 `protobuf:"varint,9,req,name=f9" json:"f9,omitempty"`
+	F10           *int32                 `protobuf:"varint,10,req,name=f10" json:"f10,omitempty"`
+	F11           *int32                 `protobuf:"varint,11,req,name=f11" json:"f11,omitempty"`
+	F12           *int32                 `protobuf:"varint,12,req,name=f12" json:"f12,omitempty"`
+	F13           *int32                 `protobuf:"varint,13,req,name=f13" json:"f13,omitempty"`
+	F14           *int32                 `protobuf:"varint,14,req,name=f14" json:"f14,omitempty"`
+	F15           *int32                 `protobuf:"varint,15,req,name=f15" json:"f15,omitempty"`
+	F16           *int32                 `protobuf:"varint,16,req,name=f16" json:"f16,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	F1  *int32 `protobuf:"varint,1,req,name=f1" json:"f1,omitempty"`
-	F2  *int32 `protobuf:"varint,2,req,name=f2" json:"f2,omitempty"`
-	F3  *int32 `protobuf:"varint,3,req,name=f3" json:"f3,omitempty"`
-	F4  *int32 `protobuf:"varint,4,req,name=f4" json:"f4,omitempty"`
-	F5  *int32 `protobuf:"varint,5,req,name=f5" json:"f5,omitempty"`
-	F6  *int32 `protobuf:"varint,6,req,name=f6" json:"f6,omitempty"`
-	F7  *int32 `protobuf:"varint,7,req,name=f7" json:"f7,omitempty"`
-	F8  *int32 `protobuf:"varint,8,req,name=f8" json:"f8,omitempty"`
-	F9  *int32 `protobuf:"varint,9,req,name=f9" json:"f9,omitempty"`
-	F10 *int32 `protobuf:"varint,10,req,name=f10" json:"f10,omitempty"`
-	F11 *int32 `protobuf:"varint,11,req,name=f11" json:"f11,omitempty"`
-	F12 *int32 `protobuf:"varint,12,req,name=f12" json:"f12,omitempty"`
-	F13 *int32 `protobuf:"varint,13,req,name=f13" json:"f13,omitempty"`
-	F14 *int32 `protobuf:"varint,14,req,name=f14" json:"f14,omitempty"`
-	F15 *int32 `protobuf:"varint,15,req,name=f15" json:"f15,omitempty"`
-	F16 *int32 `protobuf:"varint,16,req,name=f16" json:"f16,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *SixteenRequired) Reset() {
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
index b9c047e..ec67d7a 100644
--- a/internal/testprotos/conformance/conformance.pb.go
+++ b/internal/testprotos/conformance/conformance.pb.go
@@ -143,15 +143,14 @@
 // Therefore, this may or may not have a failure message. Failure messages
 // may be truncated for our failure lists.
 type TestStatus struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name           string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	FailureMessage string `protobuf:"bytes,2,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	Name           string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	FailureMessage string                 `protobuf:"bytes,2,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"`
 	// What an actual test name matched to in a failure list. Can be wildcarded or
 	// an exact match without wildcards.
-	MatchedName string `protobuf:"bytes,3,opt,name=matched_name,json=matchedName,proto3" json:"matched_name,omitempty"`
+	MatchedName   string `protobuf:"bytes,3,opt,name=matched_name,json=matchedName,proto3" json:"matched_name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestStatus) Reset() {
@@ -209,11 +208,10 @@
 // This will be known by message_type == "conformance.FailureSet", a conformance
 // test should return a serialized FailureSet in protobuf_payload.
 type FailureSet struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Test          []*TestStatus          `protobuf:"bytes,2,rep,name=test,proto3" json:"test,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Test []*TestStatus `protobuf:"bytes,2,rep,name=test,proto3" json:"test,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FailureSet) Reset() {
@@ -259,15 +257,12 @@
 //  2. parse the protobuf or JSON payload in "payload" (which may fail)
 //  3. if the parse succeeded, serialize the message in the requested format.
 type ConformanceRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The payload (whether protobuf of JSON) is always for a
 	// protobuf_test_messages.proto3.TestAllTypes proto (as defined in
 	// src/google/protobuf/proto3_test_messages.proto).
 	//
-	// Types that are assignable to Payload:
+	// Types that are valid to be assigned to Payload:
 	//
 	//	*ConformanceRequest_ProtobufPayload
 	//	*ConformanceRequest_JsonPayload
@@ -292,6 +287,8 @@
 	// This can be used in json and text format. If true, testee should print
 	// unknown fields instead of ignore. This feature is optional.
 	PrintUnknownFields bool `protobuf:"varint,9,opt,name=print_unknown_fields,json=printUnknownFields,proto3" json:"print_unknown_fields,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
 func (x *ConformanceRequest) Reset() {
@@ -324,37 +321,45 @@
 	return file_conformance_conformance_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ConformanceRequest) GetPayload() isConformanceRequest_Payload {
-	if m != nil {
-		return m.Payload
+func (x *ConformanceRequest) GetPayload() isConformanceRequest_Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 func (x *ConformanceRequest) GetProtobufPayload() []byte {
-	if x, ok := x.GetPayload().(*ConformanceRequest_ProtobufPayload); ok {
-		return x.ProtobufPayload
+	if x != nil {
+		if x, ok := x.Payload.(*ConformanceRequest_ProtobufPayload); ok {
+			return x.ProtobufPayload
+		}
 	}
 	return nil
 }
 
 func (x *ConformanceRequest) GetJsonPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_JsonPayload); ok {
-		return x.JsonPayload
+	if x != nil {
+		if x, ok := x.Payload.(*ConformanceRequest_JsonPayload); ok {
+			return x.JsonPayload
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceRequest) GetJspbPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_JspbPayload); ok {
-		return x.JspbPayload
+	if x != nil {
+		if x, ok := x.Payload.(*ConformanceRequest_JspbPayload); ok {
+			return x.JspbPayload
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceRequest) GetTextPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_TextPayload); ok {
-		return x.TextPayload
+	if x != nil {
+		if x, ok := x.Payload.(*ConformanceRequest_TextPayload); ok {
+			return x.TextPayload
+		}
 	}
 	return ""
 }
@@ -425,11 +430,8 @@
 
 // Represents a single test case's output.
 type ConformanceResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Result:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to Result:
 	//
 	//	*ConformanceResponse_ParseError
 	//	*ConformanceResponse_SerializeError
@@ -440,7 +442,9 @@
 	//	*ConformanceResponse_Skipped
 	//	*ConformanceResponse_JspbPayload
 	//	*ConformanceResponse_TextPayload
-	Result isConformanceResponse_Result `protobuf_oneof:"result"`
+	Result        isConformanceResponse_Result `protobuf_oneof:"result"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ConformanceResponse) Reset() {
@@ -473,72 +477,90 @@
 	return file_conformance_conformance_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ConformanceResponse) GetResult() isConformanceResponse_Result {
-	if m != nil {
-		return m.Result
+func (x *ConformanceResponse) GetResult() isConformanceResponse_Result {
+	if x != nil {
+		return x.Result
 	}
 	return nil
 }
 
 func (x *ConformanceResponse) GetParseError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_ParseError); ok {
-		return x.ParseError
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_ParseError); ok {
+			return x.ParseError
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetSerializeError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_SerializeError); ok {
-		return x.SerializeError
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_SerializeError); ok {
+			return x.SerializeError
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetTimeoutError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_TimeoutError); ok {
-		return x.TimeoutError
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_TimeoutError); ok {
+			return x.TimeoutError
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetRuntimeError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_RuntimeError); ok {
-		return x.RuntimeError
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_RuntimeError); ok {
+			return x.RuntimeError
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetProtobufPayload() []byte {
-	if x, ok := x.GetResult().(*ConformanceResponse_ProtobufPayload); ok {
-		return x.ProtobufPayload
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_ProtobufPayload); ok {
+			return x.ProtobufPayload
+		}
 	}
 	return nil
 }
 
 func (x *ConformanceResponse) GetJsonPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_JsonPayload); ok {
-		return x.JsonPayload
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_JsonPayload); ok {
+			return x.JsonPayload
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetSkipped() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_Skipped); ok {
-		return x.Skipped
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_Skipped); ok {
+			return x.Skipped
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetJspbPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_JspbPayload); ok {
-		return x.JspbPayload
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_JspbPayload); ok {
+			return x.JspbPayload
+		}
 	}
 	return ""
 }
 
 func (x *ConformanceResponse) GetTextPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_TextPayload); ok {
-		return x.TextPayload
+	if x != nil {
+		if x, ok := x.Result.(*ConformanceResponse_TextPayload); ok {
+			return x.TextPayload
+		}
 	}
 	return ""
 }
@@ -628,12 +650,11 @@
 
 // Encoding options for jspb format.
 type JspbEncodingConfig struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Encode the value field of Any as jspb array if true, otherwise binary.
 	UseJspbArrayAnyFormat bool `protobuf:"varint,1,opt,name=use_jspb_array_any_format,json=useJspbArrayAnyFormat,proto3" json:"use_jspb_array_any_format,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *JspbEncodingConfig) Reset() {
diff --git a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
index 591fa15..b16ef8d 100644
--- a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
+++ b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
@@ -119,11 +119,10 @@
 }
 
 type ComplexMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	D             *int32                 `protobuf:"varint,1,opt,name=d" json:"d,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	D *int32 `protobuf:"varint,1,opt,name=d" json:"d,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ComplexMessage) Reset() {
@@ -164,11 +163,7 @@
 }
 
 type TestAllTypesEdition2023 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	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"`
@@ -264,7 +259,7 @@
 	MapStringForeignMessage map[string]*ForeignMessageEdition2023             `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringNestedEnum     map[string]TestAllTypesEdition2023_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.TestAllTypesEdition2023_NestedEnum"`
 	MapStringForeignEnum    map[string]ForeignEnumEdition2023                 `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.ForeignEnumEdition2023"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesEdition2023_OneofUint32
 	//	*TestAllTypesEdition2023_OneofNestedMessage
@@ -275,9 +270,12 @@
 	//	*TestAllTypesEdition2023_OneofFloat
 	//	*TestAllTypesEdition2023_OneofDouble
 	//	*TestAllTypesEdition2023_OneofEnum
-	OneofField     isTestAllTypesEdition2023_OneofField   `protobuf_oneof:"oneof_field"`
-	Groupliketype  *TestAllTypesEdition2023_GroupLikeType `protobuf:"group,201,opt,name=GroupLikeType,json=groupliketype" json:"groupliketype,omitempty"`
-	DelimitedField *TestAllTypesEdition2023_GroupLikeType `protobuf:"group,202,opt,name=GroupLikeType,json=delimitedField" json:"delimited_field,omitempty"`
+	OneofField      isTestAllTypesEdition2023_OneofField   `protobuf_oneof:"oneof_field"`
+	Groupliketype   *TestAllTypesEdition2023_GroupLikeType `protobuf:"group,201,opt,name=GroupLikeType,json=groupliketype" json:"groupliketype,omitempty"`
+	DelimitedField  *TestAllTypesEdition2023_GroupLikeType `protobuf:"group,202,opt,name=GroupLikeType,json=delimitedField" json:"delimited_field,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllTypesEdition2023) Reset() {
@@ -940,72 +938,90 @@
 	return nil
 }
 
-func (m *TestAllTypesEdition2023) GetOneofField() isTestAllTypesEdition2023_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesEdition2023) GetOneofField() isTestAllTypesEdition2023_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesEdition2023) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesEdition2023) GetOneofNestedMessage() *TestAllTypesEdition2023_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesEdition2023) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesEdition2023) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesEdition2023) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesEdition2023) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesEdition2023) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesEdition2023) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesEdition2023) GetOneofEnum() TestAllTypesEdition2023_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesEdition2023_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesEdition2023_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesEdition2023_FOO
 }
@@ -1083,11 +1099,10 @@
 func (*TestAllTypesEdition2023_OneofEnum) isTestAllTypesEdition2023_OneofField() {}
 
 type ForeignMessageEdition2023 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessageEdition2023) Reset() {
@@ -1128,11 +1143,10 @@
 }
 
 type GroupLikeType struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GroupLikeType) Reset() {
@@ -1173,12 +1187,11 @@
 }
 
 type TestAllTypesEdition2023_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	A             *int32                   `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesEdition2023 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32                   `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesEdition2023 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesEdition2023_NestedMessage) Reset() {
@@ -1227,12 +1240,11 @@
 
 // groups
 type TestAllTypesEdition2023_GroupLikeType struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesEdition2023_GroupLikeType) Reset() {
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 a06d814..a9d7724 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
@@ -230,11 +230,7 @@
 // could trigger bugs that occur in any message type in this file.  We verify
 // this stays true in a unit test.
 type TestAllTypesProto2 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	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"`
@@ -330,7 +326,7 @@
 	MapStringForeignMessage map[string]*ForeignMessageProto2             `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringNestedEnum     map[string]TestAllTypesProto2_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.proto2.TestAllTypesProto2_NestedEnum"`
 	MapStringForeignEnum    map[string]ForeignEnumProto2                 `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.proto2.ForeignEnumProto2"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto2_OneofUint32
 	//	*TestAllTypesProto2_OneofNestedMessage
@@ -362,24 +358,27 @@
 	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"`
+	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
 }
 
 // Default values for TestAllTypesProto2 fields.
@@ -1065,72 +1064,90 @@
 	return nil
 }
 
-func (m *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofNestedMessage() *TestAllTypesProto2_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto2) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto2) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofEnum() TestAllTypesProto2_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto2_FOO
 }
@@ -1439,11 +1456,10 @@
 func (*TestAllTypesProto2_OneofEnum) isTestAllTypesProto2_OneofField() {}
 
 type ForeignMessageProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessageProto2) Reset() {
@@ -1484,12 +1500,11 @@
 }
 
 type GroupField struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,122,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,123,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,122,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,123,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GroupField) Reset() {
@@ -1537,16 +1552,15 @@
 }
 
 type UnknownToTestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state          protoimpl.MessageState               `protogen:"open.v1"`
 	OptionalInt32  *int32                               `protobuf:"varint,1001,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
 	OptionalString *string                              `protobuf:"bytes,1002,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
 	NestedMessage  *ForeignMessageProto2                `protobuf:"bytes,1003,opt,name=nested_message,json=nestedMessage" json:"nested_message,omitempty"`
 	Optionalgroup  *UnknownToTestAllTypes_OptionalGroup `protobuf:"group,1004,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
 	OptionalBool   *bool                                `protobuf:"varint,1006,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
 	RepeatedInt32  []int32                              `protobuf:"varint,1011,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *UnknownToTestAllTypes) Reset() {
@@ -1622,9 +1636,9 @@
 }
 
 type NullHypothesisProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NullHypothesisProto2) Reset() {
@@ -1658,9 +1672,9 @@
 }
 
 type EnumOnlyProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumOnlyProto2) Reset() {
@@ -1694,11 +1708,10 @@
 }
 
 type OneStringProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Data          *string                `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Data *string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OneStringProto2) Reset() {
@@ -1739,13 +1752,12 @@
 }
 
 type ProtoWithKeywords struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Inline        *int32                 `protobuf:"varint,1,opt,name=inline" json:"inline,omitempty"`
+	Concept       *string                `protobuf:"bytes,2,opt,name=concept" json:"concept,omitempty"`
+	Requires      []string               `protobuf:"bytes,3,rep,name=requires" json:"requires,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Inline   *int32   `protobuf:"varint,1,opt,name=inline" json:"inline,omitempty"`
-	Concept  *string  `protobuf:"bytes,2,opt,name=concept" json:"concept,omitempty"`
-	Requires []string `protobuf:"bytes,3,rep,name=requires" json:"requires,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ProtoWithKeywords) Reset() {
@@ -1800,11 +1812,7 @@
 }
 
 type TestAllRequiredTypesProto2 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	RequiredInt32            *int32                                    `protobuf:"varint,1,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
 	RequiredInt64            *int64                                    `protobuf:"varint,2,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
@@ -1846,6 +1854,9 @@
 	DefaultBool     *bool    `protobuf:"varint,253,req,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
 	DefaultString   *string  `protobuf:"bytes,254,req,name=default_string,json=defaultString,def=Rosebud" json:"default_string,omitempty"`
 	DefaultBytes    []byte   `protobuf:"bytes,255,req,name=default_bytes,json=defaultBytes,def=joshua" json:"default_bytes,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 // Default values for TestAllRequiredTypesProto2 fields.
@@ -2175,12 +2186,11 @@
 }
 
 type TestAllTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto2    `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32              `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto2 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_NestedMessage) Reset() {
@@ -2229,12 +2239,11 @@
 
 // groups
 type TestAllTypesProto2_Data struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_Data) Reset() {
@@ -2282,12 +2291,11 @@
 }
 
 type TestAllTypesProto2_MultiWordGroupField struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,205,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,206,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,205,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,206,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MultiWordGroupField) Reset() {
@@ -2336,10 +2344,10 @@
 
 // message_set test case.
 type TestAllTypesProto2_MessageSetCorrect struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrect) Reset() {
@@ -2373,11 +2381,10 @@
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Str           *string                `protobuf:"bytes,25,opt,name=str" json:"str,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Str *string `protobuf:"bytes,25,opt,name=str" json:"str,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) Reset() {
@@ -2418,11 +2425,10 @@
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I             *int32                 `protobuf:"varint,9,opt,name=i" json:"i,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I *int32 `protobuf:"varint,9,opt,name=i" json:"i,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) Reset() {
@@ -2463,11 +2469,10 @@
 }
 
 type UnknownToTestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UnknownToTestAllTypes_OptionalGroup) Reset() {
@@ -2508,13 +2513,12 @@
 }
 
 type TestAllRequiredTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state               protoimpl.MessageState      `protogen:"open.v1"`
 	A                   *int32                      `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
 	Corecursive         *TestAllRequiredTypesProto2 `protobuf:"bytes,2,req,name=corecursive" json:"corecursive,omitempty"`
 	OptionalCorecursive *TestAllRequiredTypesProto2 `protobuf:"bytes,3,opt,name=optional_corecursive,json=optionalCorecursive" json:"optional_corecursive,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) Reset() {
@@ -2570,12 +2574,11 @@
 
 // groups
 type TestAllRequiredTypesProto2_Data struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,202,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,203,req,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,req,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_Data) Reset() {
@@ -2624,10 +2627,10 @@
 
 // message_set test case.
 type TestAllRequiredTypesProto2_MessageSetCorrect struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) Reset() {
@@ -2661,11 +2664,10 @@
 }
 
 type TestAllRequiredTypesProto2_MessageSetCorrectExtension1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Str           *string                `protobuf:"bytes,25,req,name=str" json:"str,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Str *string `protobuf:"bytes,25,req,name=str" json:"str,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) Reset() {
@@ -2706,11 +2708,10 @@
 }
 
 type TestAllRequiredTypesProto2_MessageSetCorrectExtension2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I             *int32                 `protobuf:"varint,9,req,name=i" json:"i,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I *int32 `protobuf:"varint,9,req,name=i" json:"i,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) Reset() {
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 da1052b..1047e81 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
@@ -242,10 +242,7 @@
 // could trigger bugs that occur in any message type in this file.  We verify
 // this stays true in a unit test.
 type TestAllTypesProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	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"`
@@ -342,7 +339,7 @@
 	MapStringForeignMessage map[string]*ForeignMessage                   `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringNestedEnum     map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.proto3.TestAllTypesProto3_NestedEnum"`
 	MapStringForeignEnum    map[string]ForeignEnum                       `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.editions.proto3.ForeignEnum"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto3_OneofUint32
 	//	*TestAllTypesProto3_OneofNestedMessage
@@ -408,6 +405,8 @@
 	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3) Reset() {
@@ -1077,79 +1076,99 @@
 	return nil
 }
 
-func (m *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofNestedMessage() *TestAllTypesProto3_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto3) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto3) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofEnum() TestAllTypesProto3_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto3_FOO
 }
 
 func (x *TestAllTypesProto3) GetOneofNullValue() structpb.NullValue {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNullValue); ok {
-		return x.OneofNullValue
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofNullValue); ok {
+			return x.OneofNullValue
+		}
 	}
 	return structpb.NullValue(0)
 }
@@ -1569,11 +1588,10 @@
 func (*TestAllTypesProto3_OneofNullValue) isTestAllTypesProto3_OneofField() {}
 
 type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessage) Reset() {
@@ -1614,9 +1632,9 @@
 }
 
 type NullHypothesisProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NullHypothesisProto3) Reset() {
@@ -1650,9 +1668,9 @@
 }
 
 type EnumOnlyProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumOnlyProto3) Reset() {
@@ -1686,12 +1704,11 @@
 }
 
 type TestAllTypesProto3_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             int32                  `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto3    `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           int32               `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto3 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3_NestedMessage) Reset() {
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index f848893..60918c7 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -271,11 +271,7 @@
 // could trigger bugs that occur in any message type in this file.  We verify
 // this stays true in a unit test.
 type TestAllTypesProto2 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	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"`
@@ -371,7 +367,7 @@
 	MapStringForeignMessage map[string]*ForeignMessageProto2             `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringNestedEnum     map[string]TestAllTypesProto2_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum"`
 	MapStringForeignEnum    map[string]ForeignEnumProto2                 `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto2.ForeignEnumProto2"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto2_OneofUint32
 	//	*TestAllTypesProto2_OneofNestedMessage
@@ -403,24 +399,27 @@
 	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"`
+	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
 }
 
 // Default values for TestAllTypesProto2 fields.
@@ -1106,72 +1105,90 @@
 	return nil
 }
 
-func (m *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofNestedMessage() *TestAllTypesProto2_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto2) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto2) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofEnum() TestAllTypesProto2_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto2_FOO
 }
@@ -1480,11 +1497,10 @@
 func (*TestAllTypesProto2_OneofEnum) isTestAllTypesProto2_OneofField() {}
 
 type ForeignMessageProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessageProto2) Reset() {
@@ -1525,12 +1541,11 @@
 }
 
 type GroupField struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,122,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,123,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,122,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,123,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GroupField) Reset() {
@@ -1578,16 +1593,15 @@
 }
 
 type UnknownToTestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state          protoimpl.MessageState               `protogen:"open.v1"`
 	OptionalInt32  *int32                               `protobuf:"varint,1001,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
 	OptionalString *string                              `protobuf:"bytes,1002,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
 	NestedMessage  *ForeignMessageProto2                `protobuf:"bytes,1003,opt,name=nested_message,json=nestedMessage" json:"nested_message,omitempty"`
 	Optionalgroup  *UnknownToTestAllTypes_OptionalGroup `protobuf:"group,1004,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
 	OptionalBool   *bool                                `protobuf:"varint,1006,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
 	RepeatedInt32  []int32                              `protobuf:"varint,1011,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *UnknownToTestAllTypes) Reset() {
@@ -1663,9 +1677,9 @@
 }
 
 type NullHypothesisProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NullHypothesisProto2) Reset() {
@@ -1699,9 +1713,9 @@
 }
 
 type EnumOnlyProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumOnlyProto2) Reset() {
@@ -1735,11 +1749,10 @@
 }
 
 type OneStringProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Data          *string                `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Data *string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OneStringProto2) Reset() {
@@ -1780,13 +1793,12 @@
 }
 
 type ProtoWithKeywords struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Inline        *int32                 `protobuf:"varint,1,opt,name=inline" json:"inline,omitempty"`
+	Concept       *string                `protobuf:"bytes,2,opt,name=concept" json:"concept,omitempty"`
+	Requires      []string               `protobuf:"bytes,3,rep,name=requires" json:"requires,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Inline   *int32   `protobuf:"varint,1,opt,name=inline" json:"inline,omitempty"`
-	Concept  *string  `protobuf:"bytes,2,opt,name=concept" json:"concept,omitempty"`
-	Requires []string `protobuf:"bytes,3,rep,name=requires" json:"requires,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ProtoWithKeywords) Reset() {
@@ -1841,11 +1853,7 @@
 }
 
 type TestAllRequiredTypesProto2 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	RequiredInt32            *int32                                    `protobuf:"varint,1,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
 	RequiredInt64            *int64                                    `protobuf:"varint,2,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
@@ -1887,6 +1895,9 @@
 	DefaultBool     *bool    `protobuf:"varint,253,req,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
 	DefaultString   *string  `protobuf:"bytes,254,req,name=default_string,json=defaultString,def=Rosebud" json:"default_string,omitempty"`
 	DefaultBytes    []byte   `protobuf:"bytes,255,req,name=default_bytes,json=defaultBytes,def=joshua" json:"default_bytes,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 // Default values for TestAllRequiredTypesProto2 fields.
@@ -2216,12 +2227,11 @@
 }
 
 type TestAllTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto2    `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32              `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto2 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_NestedMessage) Reset() {
@@ -2270,12 +2280,11 @@
 
 // groups
 type TestAllTypesProto2_Data struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_Data) Reset() {
@@ -2323,12 +2332,11 @@
 }
 
 type TestAllTypesProto2_MultiWordGroupField struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,205,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,206,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,205,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,206,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MultiWordGroupField) Reset() {
@@ -2377,10 +2385,10 @@
 
 // message_set test case.
 type TestAllTypesProto2_MessageSetCorrect struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrect) Reset() {
@@ -2414,11 +2422,10 @@
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Str           *string                `protobuf:"bytes,25,opt,name=str" json:"str,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Str *string `protobuf:"bytes,25,opt,name=str" json:"str,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension1) Reset() {
@@ -2459,11 +2466,10 @@
 }
 
 type TestAllTypesProto2_MessageSetCorrectExtension2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I             *int32                 `protobuf:"varint,9,opt,name=i" json:"i,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I *int32 `protobuf:"varint,9,opt,name=i" json:"i,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_MessageSetCorrectExtension2) Reset() {
@@ -2504,11 +2510,10 @@
 }
 
 type UnknownToTestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UnknownToTestAllTypes_OptionalGroup) Reset() {
@@ -2549,13 +2554,12 @@
 }
 
 type TestAllRequiredTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state               protoimpl.MessageState      `protogen:"open.v1"`
 	A                   *int32                      `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
 	Corecursive         *TestAllRequiredTypesProto2 `protobuf:"bytes,2,req,name=corecursive" json:"corecursive,omitempty"`
 	OptionalCorecursive *TestAllRequiredTypesProto2 `protobuf:"bytes,3,opt,name=optional_corecursive,json=optionalCorecursive" json:"optional_corecursive,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_NestedMessage) Reset() {
@@ -2611,12 +2615,11 @@
 
 // groups
 type TestAllRequiredTypesProto2_Data struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupInt32    *int32                 `protobuf:"varint,202,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupUint32   *uint32                `protobuf:"varint,203,req,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,req,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_Data) Reset() {
@@ -2665,10 +2668,10 @@
 
 // message_set test case.
 type TestAllRequiredTypesProto2_MessageSetCorrect struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrect) Reset() {
@@ -2702,11 +2705,10 @@
 }
 
 type TestAllRequiredTypesProto2_MessageSetCorrectExtension1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Str           *string                `protobuf:"bytes,25,req,name=str" json:"str,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Str *string `protobuf:"bytes,25,req,name=str" json:"str,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension1) Reset() {
@@ -2747,11 +2749,10 @@
 }
 
 type TestAllRequiredTypesProto2_MessageSetCorrectExtension2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I             *int32                 `protobuf:"varint,9,req,name=i" json:"i,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I *int32 `protobuf:"varint,9,req,name=i" json:"i,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllRequiredTypesProto2_MessageSetCorrectExtension2) Reset() {
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
index 4460be2..82be0fb 100644
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto3.pb.go
@@ -243,10 +243,7 @@
 // could trigger bugs that occur in any message type in this file.  We verify
 // this stays true in a unit test.
 type TestAllTypesProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Singular
 	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"`
@@ -324,26 +321,26 @@
 	UnpackedBool       []bool                          `protobuf:"varint,101,rep,name=unpacked_bool,json=unpackedBool,proto3" json:"unpacked_bool,omitempty"`
 	UnpackedNestedEnum []TestAllTypesProto3_NestedEnum `protobuf:"varint,102,rep,name=unpacked_nested_enum,json=unpackedNestedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum" json:"unpacked_nested_enum,omitempty"`
 	// Map
-	MapInt32Int32           map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Int64           map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Uint32         map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Uint64         map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Sint32         map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapSint64Sint64         map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapFixed32Fixed32       map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapSfixed32Sfixed32     map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapSfixed64Sfixed64     map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapInt32Double          map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringString         map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringBytes          map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedMessage  map[string]*TestAllTypesProto3_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringForeignMessage map[string]*ForeignMessage                   `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage,proto3" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedEnum     map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum"`
-	MapStringForeignEnum    map[string]ForeignEnum                       `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum,proto3" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=protobuf_test_messages.proto3.ForeignEnum"`
-	// Types that are assignable to OneofField:
+	MapInt32Int32           map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64           map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32         map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64         map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32         map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64         map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32       map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" 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,proto3" 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,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" 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,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" 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,proto3" 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,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedMessage  map[string]*TestAllTypesProto3_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringForeignMessage map[string]*ForeignMessage                   `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage,proto3" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum     map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum"`
+	MapStringForeignEnum    map[string]ForeignEnum                       `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum,proto3" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto3.ForeignEnum"`
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto3_OneofUint32
 	//	*TestAllTypesProto3_OneofNestedMessage
@@ -409,6 +406,8 @@
 	Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16,proto3" json:"field__Name16,omitempty"`
 	FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17,proto3" json:"field_name17__,omitempty"`
 	FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18,proto3" json:"Field_name18__,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3) Reset() {
@@ -1078,79 +1077,99 @@
 	return nil
 }
 
-func (m *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofNestedMessage() *TestAllTypesProto3_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto3) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto3) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofEnum() TestAllTypesProto3_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto3_FOO
 }
 
 func (x *TestAllTypesProto3) GetOneofNullValue() structpb.NullValue {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNullValue); ok {
-		return x.OneofNullValue
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofNullValue); ok {
+			return x.OneofNullValue
+		}
 	}
 	return structpb.NullValue(0)
 }
@@ -1570,11 +1589,10 @@
 func (*TestAllTypesProto3_OneofNullValue) isTestAllTypesProto3_OneofField() {}
 
 type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessage) Reset() {
@@ -1615,9 +1633,9 @@
 }
 
 type NullHypothesisProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NullHypothesisProto3) Reset() {
@@ -1651,9 +1669,9 @@
 }
 
 type EnumOnlyProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumOnlyProto3) Reset() {
@@ -1687,12 +1705,11 @@
 }
 
 type TestAllTypesProto3_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto3    `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           int32               `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto3 `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3_NestedMessage) Reset() {
diff --git a/internal/testprotos/editionsfuzztest/test2.pb.go b/internal/testprotos/editionsfuzztest/test2.pb.go
index e9ce2ad..6570717 100644
--- a/internal/testprotos/editionsfuzztest/test2.pb.go
+++ b/internal/testprotos/editionsfuzztest/test2.pb.go
@@ -77,10 +77,7 @@
 }
 
 type TestAllTypesProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                  protoimpl.MessageState                       `protogen:"open.v1"`
 	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"`
@@ -151,7 +148,7 @@
 	DefaultString     *string                        `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
 	DefaultBytes      []byte                         `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
 	DefaultNestedEnum *TestAllTypesProto2_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.test.TestAllTypesProto2_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto2_OneofUint32
 	//	*TestAllTypesProto2_OneofNestedMessage
@@ -166,10 +163,12 @@
 	OneofField isTestAllTypesProto2_OneofField `protobuf_oneof:"oneof_field"`
 	// A oneof with exactly one field.
 	//
-	// Types that are assignable to OneofOptional:
+	// Types that are valid to be assigned to OneofOptional:
 	//
 	//	*TestAllTypesProto2_OneofOptionalUint32
 	OneofOptional isTestAllTypesProto2_OneofOptional `protobuf_oneof:"oneof_optional"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for TestAllTypesProto2 fields.
@@ -709,93 +708,115 @@
 	return Default_TestAllTypesProto2_DefaultNestedEnum
 }
 
-func (m *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofNestedMessage() *TestAllTypesProto2_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto2) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto2) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2) GetOneofEnum() TestAllTypesProto2_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto2_FOO
 }
 
 func (x *TestAllTypesProto2) GetOneofgroup() *TestAllTypesProto2_OneofGroup {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
-func (m *TestAllTypesProto2) GetOneofOptional() isTestAllTypesProto2_OneofOptional {
-	if m != nil {
-		return m.OneofOptional
+func (x *TestAllTypesProto2) GetOneofOptional() isTestAllTypesProto2_OneofOptional {
+	if x != nil {
+		return x.OneofOptional
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2) GetOneofOptionalUint32() uint32 {
-	if x, ok := x.GetOneofOptional().(*TestAllTypesProto2_OneofOptionalUint32); ok {
-		return x.OneofOptionalUint32
+	if x != nil {
+		if x, ok := x.OneofOptional.(*TestAllTypesProto2_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
 	}
 	return 0
 }
@@ -875,12 +896,11 @@
 func (*TestAllTypesProto2_OneofOptionalUint32) isTestAllTypesProto2_OneofOptional() {}
 
 type TestAllTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto2    `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32              `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto2 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_NestedMessage) Reset() {
@@ -928,13 +948,12 @@
 }
 
 type TestAllTypesProto2_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState            `protogen:"open.v1"`
 	A                     *int32                            `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypesProto2_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
 	SameFieldNumber       *int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_OptionalGroup) Reset() {
@@ -989,12 +1008,11 @@
 }
 
 type TestAllTypesProto2_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState            `protogen:"open.v1"`
 	A                     *int32                            `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypesProto2_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_RepeatedGroup) Reset() {
@@ -1042,12 +1060,11 @@
 }
 
 type TestAllTypesProto2_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	B *int32 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2_OneofGroup) Reset() {
diff --git a/internal/testprotos/editionsfuzztest/test2editions.pb.go b/internal/testprotos/editionsfuzztest/test2editions.pb.go
index 84c6dad..ca5f05d 100644
--- a/internal/testprotos/editionsfuzztest/test2editions.pb.go
+++ b/internal/testprotos/editionsfuzztest/test2editions.pb.go
@@ -78,10 +78,7 @@
 }
 
 type TestAllTypesProto2Editions struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                  protoimpl.MessageState                               `protogen:"open.v1"`
 	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"`
@@ -152,7 +149,7 @@
 	DefaultString     *string                                `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
 	DefaultBytes      []byte                                 `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
 	DefaultNestedEnum *TestAllTypesProto2Editions_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.test.TestAllTypesProto2Editions_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto2Editions_OneofUint32
 	//	*TestAllTypesProto2Editions_OneofNestedMessage
@@ -167,10 +164,12 @@
 	OneofField isTestAllTypesProto2Editions_OneofField `protobuf_oneof:"oneof_field"`
 	// A oneof with exactly one field.
 	//
-	// Types that are assignable to OneofOptional:
+	// Types that are valid to be assigned to OneofOptional:
 	//
 	//	*TestAllTypesProto2Editions_OneofOptionalUint32
 	OneofOptional isTestAllTypesProto2Editions_OneofOptional `protobuf_oneof:"oneof_optional"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for TestAllTypesProto2Editions fields.
@@ -710,93 +709,115 @@
 	return Default_TestAllTypesProto2Editions_DefaultNestedEnum
 }
 
-func (m *TestAllTypesProto2Editions) GetOneofField() isTestAllTypesProto2Editions_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto2Editions) GetOneofField() isTestAllTypesProto2Editions_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofNestedMessage() *TestAllTypesProto2Editions_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofEnum() TestAllTypesProto2Editions_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto2Editions_FOO
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofgroup() *TestAllTypesProto2Editions_OneofGroup {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2Editions_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto2Editions_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
-func (m *TestAllTypesProto2Editions) GetOneofOptional() isTestAllTypesProto2Editions_OneofOptional {
-	if m != nil {
-		return m.OneofOptional
+func (x *TestAllTypesProto2Editions) GetOneofOptional() isTestAllTypesProto2Editions_OneofOptional {
+	if x != nil {
+		return x.OneofOptional
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto2Editions) GetOneofOptionalUint32() uint32 {
-	if x, ok := x.GetOneofOptional().(*TestAllTypesProto2Editions_OneofOptionalUint32); ok {
-		return x.OneofOptionalUint32
+	if x != nil {
+		if x, ok := x.OneofOptional.(*TestAllTypesProto2Editions_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
 	}
 	return 0
 }
@@ -876,12 +897,11 @@
 func (*TestAllTypesProto2Editions_OneofOptionalUint32) isTestAllTypesProto2Editions_OneofOptional() {}
 
 type TestAllTypesProto2Editions_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState      `protogen:"open.v1"`
+	A             *int32                      `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto2Editions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32                      `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto2Editions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2Editions_NestedMessage) Reset() {
@@ -929,13 +949,12 @@
 }
 
 type TestAllTypesProto2Editions_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState                    `protogen:"open.v1"`
 	A                     *int32                                    `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypesProto2Editions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
 	SameFieldNumber       *int32                                    `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2Editions_OptionalGroup) Reset() {
@@ -990,12 +1009,11 @@
 }
 
 type TestAllTypesProto2Editions_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState                    `protogen:"open.v1"`
 	A                     *int32                                    `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypesProto2Editions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2Editions_RepeatedGroup) Reset() {
@@ -1043,12 +1061,11 @@
 }
 
 type TestAllTypesProto2Editions_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	B *int32 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto2Editions_OneofGroup) Reset() {
diff --git a/internal/testprotos/editionsfuzztest/test3.pb.go b/internal/testprotos/editionsfuzztest/test3.pb.go
index a60b54e..7dd6310 100644
--- a/internal/testprotos/editionsfuzztest/test3.pb.go
+++ b/internal/testprotos/editionsfuzztest/test3.pb.go
@@ -119,10 +119,7 @@
 }
 
 type TestAllTypesProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                  protoimpl.MessageState                       `protogen:"open.v1"`
 	SingularInt32          int32                                        `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
 	SingularInt64          int64                                        `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
 	SingularUint32         uint32                                       `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
@@ -180,24 +177,24 @@
 	RepeatedForeignMessage []*ForeignMessageProto3                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
 	RepeatedNestedEnum     []TestAllTypesProto3_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=goproto.proto.test.TestAllTypesProto3_NestedEnum" json:"repeated_nested_enum,omitempty"`
 	RepeatedForeignEnum    []ForeignEnumProto3                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=goproto.proto.test.ForeignEnumProto3" json:"repeated_foreign_enum,omitempty"`
-	MapInt32Int32          map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Int64          map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Uint32        map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Uint64        map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Sint32        map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapSint64Sint64        map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapFixed32Fixed32      map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapFixed64Fixed64      map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapSfixed32Sfixed32    map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapSfixed64Sfixed64    map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapInt32Float          map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapInt32Double         map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolBool            map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringString        map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringBytes         map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedMessage map[string]*TestAllTypesProto3_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedEnum    map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.proto.test.TestAllTypesProto3_NestedEnum"`
-	// Types that are assignable to OneofField:
+	MapInt32Int32          map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64          map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32        map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64        map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32        map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64        map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32      map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapFixed64Fixed64      map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" 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,proto3" 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,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Float          map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" 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,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolBool            map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" 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,proto3" 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,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedMessage map[string]*TestAllTypesProto3_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum    map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypesProto3_NestedEnum"`
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto3_OneofUint32
 	//	*TestAllTypesProto3_OneofNestedMessage
@@ -208,7 +205,9 @@
 	//	*TestAllTypesProto3_OneofFloat
 	//	*TestAllTypesProto3_OneofDouble
 	//	*TestAllTypesProto3_OneofEnum
-	OneofField isTestAllTypesProto3_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestAllTypesProto3_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3) Reset() {
@@ -759,72 +758,90 @@
 	return nil
 }
 
-func (m *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofNestedMessage() *TestAllTypesProto3_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto3) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto3) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3) GetOneofEnum() TestAllTypesProto3_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto3_FOO
 }
@@ -888,12 +905,11 @@
 func (*TestAllTypesProto3_OneofEnum) isTestAllTypesProto3_OneofField() {}
 
 type ForeignMessageProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	D             int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-	D int32 `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessageProto3) Reset() {
@@ -941,12 +957,11 @@
 }
 
 type TestAllTypesProto3_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto3    `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           int32               `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto3 `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3_NestedMessage) Reset() {
diff --git a/internal/testprotos/editionsfuzztest/test3editions.pb.go b/internal/testprotos/editionsfuzztest/test3editions.pb.go
index 9e9a334..d1a6395 100644
--- a/internal/testprotos/editionsfuzztest/test3editions.pb.go
+++ b/internal/testprotos/editionsfuzztest/test3editions.pb.go
@@ -119,10 +119,7 @@
 }
 
 type TestAllTypesProto3Editions struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                  protoimpl.MessageState                               `protogen:"open.v1"`
 	SingularInt32          int32                                                `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
 	SingularInt64          int64                                                `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
 	SingularUint32         uint32                                               `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
@@ -197,7 +194,7 @@
 	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"`
 	MapStringNestedMessage map[string]*TestAllTypesProto3Editions_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	MapStringNestedEnum    map[string]TestAllTypesProto3Editions_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypesProto3Editions_NestedEnum"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypesProto3Editions_OneofUint32
 	//	*TestAllTypesProto3Editions_OneofNestedMessage
@@ -208,7 +205,9 @@
 	//	*TestAllTypesProto3Editions_OneofFloat
 	//	*TestAllTypesProto3Editions_OneofDouble
 	//	*TestAllTypesProto3Editions_OneofEnum
-	OneofField isTestAllTypesProto3Editions_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestAllTypesProto3Editions_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3Editions) Reset() {
@@ -759,72 +758,90 @@
 	return nil
 }
 
-func (m *TestAllTypesProto3Editions) GetOneofField() isTestAllTypesProto3Editions_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypesProto3Editions) GetOneofField() isTestAllTypesProto3Editions_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofNestedMessage() *TestAllTypesProto3Editions_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypesProto3Editions) GetOneofEnum() TestAllTypesProto3Editions_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3Editions_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypesProto3Editions_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypesProto3Editions_FOO
 }
@@ -888,12 +905,11 @@
 func (*TestAllTypesProto3Editions_OneofEnum) isTestAllTypesProto3Editions_OneofField() {}
 
 type ForeignMessageProto3Editions struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	D             int32                  `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
-	D int32 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessageProto3Editions) Reset() {
@@ -941,12 +957,11 @@
 }
 
 type TestAllTypesProto3Editions_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState      `protogen:"open.v1"`
+	A             int32                       `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypesProto3Editions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           int32                       `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto3Editions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypesProto3Editions_NestedMessage) Reset() {
diff --git a/internal/testprotos/enums/enums.pb.go b/internal/testprotos/enums/enums.pb.go
index b861bb5..ccb1176 100644
--- a/internal/testprotos/enums/enums.pb.go
+++ b/internal/testprotos/enums/enums.pb.go
@@ -73,16 +73,6 @@
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum(num)
-	return nil
-}
-
 // Deprecated: Use Enum.Descriptor instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
 	return file_internal_testprotos_enums_enums_proto_rawDescGZIP(), []int{0}
@@ -102,11 +92,12 @@
 	0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e,
 	0x10, 0x25, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e,
 	0x10, 0x43, 0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0xff,
-	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x6f,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x3b, 0x5a, 0x34, 0x67, 0x6f, 0x6f,
 	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
 	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d,
-	0x73,
+	0x73, 0x92, 0x03, 0x02, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x70, 0xe8, 0x07,
 }
 
 var (
diff --git a/internal/testprotos/enums/enums_hybrid/enums.hybrid.pb.go b/internal/testprotos/enums/enums_hybrid/enums.hybrid.pb.go
new file mode 100644
index 0000000..e55e5bc
--- /dev/null
+++ b/internal/testprotos/enums/enums_hybrid/enums.hybrid.pb.go
@@ -0,0 +1,138 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/enums/enums_hybrid/enums.hybrid.proto
+
+package enums_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Enum int32
+
+const (
+	Enum_DEFAULT     Enum = 1337
+	Enum_ZERO        Enum = 0
+	Enum_ONE         Enum = 1
+	Enum_ELEVENT     Enum = 11
+	Enum_SEVENTEEN   Enum = 17
+	Enum_THIRTYSEVEN Enum = 37
+	Enum_SIXTYSEVEN  Enum = 67
+	Enum_NEGATIVE    Enum = -1
+)
+
+// Enum value maps for Enum.
+var (
+	Enum_name = map[int32]string{
+		1337: "DEFAULT",
+		0:    "ZERO",
+		1:    "ONE",
+		11:   "ELEVENT",
+		17:   "SEVENTEEN",
+		37:   "THIRTYSEVEN",
+		67:   "SIXTYSEVEN",
+		-1:   "NEGATIVE",
+	}
+	Enum_value = map[string]int32{
+		"DEFAULT":     1337,
+		"ZERO":        0,
+		"ONE":         1,
+		"ELEVENT":     11,
+		"SEVENTEEN":   17,
+		"THIRTYSEVEN": 37,
+		"SIXTYSEVEN":  67,
+		"NEGATIVE":    -1,
+	}
+)
+
+func (x Enum) Enum() *Enum {
+	p := new(Enum)
+	*p = x
+	return p
+}
+
+func (x Enum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (Enum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_enumTypes[0]
+}
+
+func (x Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+var File_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x39, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d,
+	0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74,
+	0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x7b, 0x0a, 0x04, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0xb9, 0x0a,
+	0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e,
+	0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x0b,
+	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x11, 0x12,
+	0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x25,
+	0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x43,
+	0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x4d, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f,
+	0x65, 0x6e, 0x75, 0x6d, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x07, 0xd2,
+	0x3e, 0x02, 0x10, 0x02, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_goTypes = []any{
+	(Enum)(0), // 0: hybrid.goproto.proto.enums.Enum
+}
+var file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_init() }
+func file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_init() {
+	if File_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_enumTypes,
+	}.Build()
+	File_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto = out.File
+	file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_goTypes = nil
+	file_internal_testprotos_enums_enums_hybrid_enums_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/enums/enums_hybrid/enums.hybrid.proto b/internal/testprotos/enums/enums_hybrid/enums.hybrid.proto
new file mode 100644
index 0000000..f6ec8a0
--- /dev/null
+++ b/internal/testprotos/enums/enums_hybrid/enums.hybrid.proto
@@ -0,0 +1,24 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.enums;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/enums/enums_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+option features.enum_type = CLOSED;
+
+enum Enum {
+  DEFAULT = 1337;
+  ZERO = 0;
+  ONE = 1;
+  ELEVENT = 11;
+  SEVENTEEN = 17;
+  THIRTYSEVEN = 37;
+  SIXTYSEVEN = 67;
+  NEGATIVE = -1;
+}
\ No newline at end of file
diff --git a/internal/testprotos/enums/enums_opaque/enums.opaque.pb.go b/internal/testprotos/enums/enums_opaque/enums.opaque.pb.go
new file mode 100644
index 0000000..ef7fe7a
--- /dev/null
+++ b/internal/testprotos/enums/enums_opaque/enums.opaque.pb.go
@@ -0,0 +1,138 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/enums/enums_opaque/enums.opaque.proto
+
+package enums_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Enum int32
+
+const (
+	Enum_DEFAULT     Enum = 1337
+	Enum_ZERO        Enum = 0
+	Enum_ONE         Enum = 1
+	Enum_ELEVENT     Enum = 11
+	Enum_SEVENTEEN   Enum = 17
+	Enum_THIRTYSEVEN Enum = 37
+	Enum_SIXTYSEVEN  Enum = 67
+	Enum_NEGATIVE    Enum = -1
+)
+
+// Enum value maps for Enum.
+var (
+	Enum_name = map[int32]string{
+		1337: "DEFAULT",
+		0:    "ZERO",
+		1:    "ONE",
+		11:   "ELEVENT",
+		17:   "SEVENTEEN",
+		37:   "THIRTYSEVEN",
+		67:   "SIXTYSEVEN",
+		-1:   "NEGATIVE",
+	}
+	Enum_value = map[string]int32{
+		"DEFAULT":     1337,
+		"ZERO":        0,
+		"ONE":         1,
+		"ELEVENT":     11,
+		"SEVENTEEN":   17,
+		"THIRTYSEVEN": 37,
+		"SIXTYSEVEN":  67,
+		"NEGATIVE":    -1,
+	}
+)
+
+func (x Enum) Enum() *Enum {
+	p := new(Enum)
+	*p = x
+	return p
+}
+
+func (x Enum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (Enum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_enumTypes[0]
+}
+
+func (x Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+var File_internal_testprotos_enums_enums_opaque_enums_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_rawDesc = []byte{
+	0x0a, 0x39, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d,
+	0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74,
+	0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x7b, 0x0a, 0x04, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0xb9, 0x0a,
+	0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e,
+	0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x0b,
+	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x11, 0x12,
+	0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x25,
+	0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x43,
+	0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x4d, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f,
+	0x65, 0x6e, 0x75, 0x6d, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x07, 0xd2,
+	0x3e, 0x02, 0x10, 0x03, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_goTypes = []any{
+	(Enum)(0), // 0: opaque.goproto.proto.enums.Enum
+}
+var file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_init() }
+func file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_init() {
+	if File_internal_testprotos_enums_enums_opaque_enums_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_enumTypes,
+	}.Build()
+	File_internal_testprotos_enums_enums_opaque_enums_opaque_proto = out.File
+	file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_rawDesc = nil
+	file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_goTypes = nil
+	file_internal_testprotos_enums_enums_opaque_enums_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/enums/enums_opaque/enums.opaque.proto b/internal/testprotos/enums/enums_opaque/enums.opaque.proto
new file mode 100644
index 0000000..59ca31b
--- /dev/null
+++ b/internal/testprotos/enums/enums_opaque/enums.opaque.proto
@@ -0,0 +1,24 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.enums;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/enums/enums_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+option features.enum_type = CLOSED;
+
+enum Enum {
+  DEFAULT = 1337;
+  ZERO = 0;
+  ONE = 1;
+  ELEVENT = 11;
+  SEVENTEEN = 17;
+  THIRTYSEVEN = 37;
+  SIXTYSEVEN = 67;
+  NEGATIVE = -1;
+}
\ No newline at end of file
diff --git a/internal/testprotos/fieldtrack/fieldtrack.pb.go b/internal/testprotos/fieldtrack/fieldtrack.pb.go
index 6e7d09d..91e7e3f 100644
--- a/internal/testprotos/fieldtrack/fieldtrack.pb.go
+++ b/internal/testprotos/fieldtrack/fieldtrack.pb.go
@@ -18,64 +18,65 @@
 )
 
 type TestFieldTrack struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	weakFields    protoimpl.WeakFields
-	unknownFields protoimpl.UnknownFields
-
-	OptionalInt32         *int32                                      `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty" go:"track"`
-	OptionalInt64         *int64                                      `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty" go:"track"`
-	OptionalUint32        *uint32                                     `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty" go:"track"`
-	OptionalUint64        *uint64                                     `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty" go:"track"`
-	OptionalSint32        *int32                                      `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty" go:"track"`
-	OptionalSint64        *int64                                      `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty" go:"track"`
-	OptionalFixed32       *uint32                                     `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty" go:"track"`
-	OptionalFixed64       *uint64                                     `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty" go:"track"`
-	OptionalSfixed32      *int32                                      `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty" go:"track"`
-	OptionalSfixed64      *int64                                      `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty" go:"track"`
-	OptionalFloat         *float32                                    `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty" go:"track"`
-	OptionalDouble        *float64                                    `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty" go:"track"`
-	OptionalBool          *bool                                       `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty" go:"track"`
-	OptionalString        *string                                     `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty" go:"track"`
-	OptionalBytes         []byte                                      `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty" go:"track"`
-	OptionalEnum          *test.TestAllTypes_NestedEnum               `protobuf:"varint,16,opt,name=optional_enum,json=optionalEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"optional_enum,omitempty" go:"track"`
-	OptionalMessage       *test.TestAllTypes_NestedMessage            `protobuf:"bytes,17,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty" go:"track"`
-	RepeatedInt32         []int32                                     `protobuf:"varint,21,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty" go:"track"`
-	RepeatedInt64         []int64                                     `protobuf:"varint,22,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty" go:"track"`
-	RepeatedUint32        []uint32                                    `protobuf:"varint,23,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty" go:"track"`
-	RepeatedUint64        []uint64                                    `protobuf:"varint,24,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty" go:"track"`
-	RepeatedSint32        []int32                                     `protobuf:"zigzag32,25,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty" go:"track"`
-	RepeatedSint64        []int64                                     `protobuf:"zigzag64,26,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty" go:"track"`
-	RepeatedFixed32       []uint32                                    `protobuf:"fixed32,27,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty" go:"track"`
-	RepeatedFixed64       []uint64                                    `protobuf:"fixed64,28,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty" go:"track"`
-	RepeatedSfixed32      []int32                                     `protobuf:"fixed32,29,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty" go:"track"`
-	RepeatedSfixed64      []int64                                     `protobuf:"fixed64,30,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty" go:"track"`
-	RepeatedFloat         []float32                                   `protobuf:"fixed32,31,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty" go:"track"`
-	RepeatedDouble        []float64                                   `protobuf:"fixed64,32,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty" go:"track"`
-	RepeatedBool          []bool                                      `protobuf:"varint,33,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty" go:"track"`
-	RepeatedString        []string                                    `protobuf:"bytes,34,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty" go:"track"`
-	RepeatedBytes         [][]byte                                    `protobuf:"bytes,35,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty" go:"track"`
-	RepeatedEnum          []test.TestAllTypes_NestedEnum              `protobuf:"varint,36,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"repeated_enum,omitempty" go:"track"`
-	RepeatedMessage       []*test.TestAllTypes_NestedMessage          `protobuf:"bytes,37,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty" go:"track"`
-	MapStringInt32        map[string]int32                            `protobuf:"bytes,41,rep,name=map_string_int32,json=mapStringInt32" json:"map_string_int32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringInt64        map[string]int64                            `protobuf:"bytes,42,rep,name=map_string_int64,json=mapStringInt64" json:"map_string_int64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringUint32       map[string]uint32                           `protobuf:"bytes,43,rep,name=map_string_uint32,json=mapStringUint32" json:"map_string_uint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringUint64       map[string]uint64                           `protobuf:"bytes,44,rep,name=map_string_uint64,json=mapStringUint64" json:"map_string_uint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringSint32       map[string]int32                            `protobuf:"bytes,45,rep,name=map_string_sint32,json=mapStringSint32" json:"map_string_sint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value" go:"track"`
-	MapStringSint64       map[string]int64                            `protobuf:"bytes,46,rep,name=map_string_sint64,json=mapStringSint64" json:"map_string_sint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value" go:"track"`
-	MapStringFixed32      map[string]uint32                           `protobuf:"bytes,47,rep,name=map_string_fixed32,json=mapStringFixed32" json:"map_string_fixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringFixed64      map[string]uint64                           `protobuf:"bytes,48,rep,name=map_string_fixed64,json=mapStringFixed64" json:"map_string_fixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringSfixed32     map[string]int32                            `protobuf:"bytes,49,rep,name=map_string_sfixed32,json=mapStringSfixed32" json:"map_string_sfixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringSfixed64     map[string]int64                            `protobuf:"bytes,50,rep,name=map_string_sfixed64,json=mapStringSfixed64" json:"map_string_sfixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringFloat        map[string]float32                          `protobuf:"bytes,51,rep,name=map_string_float,json=mapStringFloat" json:"map_string_float,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringDouble       map[string]float64                          `protobuf:"bytes,52,rep,name=map_string_double,json=mapStringDouble" json:"map_string_double,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringBool         map[string]bool                             `protobuf:"bytes,53,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringString       map[string]string                           `protobuf:"bytes,54,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" go:"track"`
-	MapStringBytes        map[string][]byte                           `protobuf:"bytes,55,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" go:"track"`
-	MapStringEnum         map[string]test.TestAllTypes_NestedEnum     `protobuf:"bytes,56,rep,name=map_string_enum,json=mapStringEnum" json:"map_string_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypes_NestedEnum" go:"track"`
-	MapStringMessage      map[string]*test.TestAllTypes_NestedMessage `protobuf:"bytes,57,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" go:"track"`
-	XXX_weak_WeakMessage1 struct{}                                    `protobuf:"bytes,100,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty" go:"track"`
-	XXX_weak_WeakMessage2 struct{}                                    `protobuf:"bytes,101,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty" go:"track"`
+	state             protoimpl.MessageState                      `protogen:"open.v1"`
+	OptionalInt32     *int32                                      `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty" go:"track"`
+	OptionalInt64     *int64                                      `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty" go:"track"`
+	OptionalUint32    *uint32                                     `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty" go:"track"`
+	OptionalUint64    *uint64                                     `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty" go:"track"`
+	OptionalSint32    *int32                                      `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty" go:"track"`
+	OptionalSint64    *int64                                      `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty" go:"track"`
+	OptionalFixed32   *uint32                                     `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty" go:"track"`
+	OptionalFixed64   *uint64                                     `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty" go:"track"`
+	OptionalSfixed32  *int32                                      `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty" go:"track"`
+	OptionalSfixed64  *int64                                      `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty" go:"track"`
+	OptionalFloat     *float32                                    `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty" go:"track"`
+	OptionalDouble    *float64                                    `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty" go:"track"`
+	OptionalBool      *bool                                       `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty" go:"track"`
+	OptionalString    *string                                     `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty" go:"track"`
+	OptionalBytes     []byte                                      `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty" go:"track"`
+	OptionalEnum      *test.TestAllTypes_NestedEnum               `protobuf:"varint,16,opt,name=optional_enum,json=optionalEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"optional_enum,omitempty" go:"track"`
+	OptionalMessage   *test.TestAllTypes_NestedMessage            `protobuf:"bytes,17,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty" go:"track"`
+	RepeatedInt32     []int32                                     `protobuf:"varint,21,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty" go:"track"`
+	RepeatedInt64     []int64                                     `protobuf:"varint,22,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty" go:"track"`
+	RepeatedUint32    []uint32                                    `protobuf:"varint,23,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty" go:"track"`
+	RepeatedUint64    []uint64                                    `protobuf:"varint,24,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty" go:"track"`
+	RepeatedSint32    []int32                                     `protobuf:"zigzag32,25,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty" go:"track"`
+	RepeatedSint64    []int64                                     `protobuf:"zigzag64,26,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty" go:"track"`
+	RepeatedFixed32   []uint32                                    `protobuf:"fixed32,27,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty" go:"track"`
+	RepeatedFixed64   []uint64                                    `protobuf:"fixed64,28,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty" go:"track"`
+	RepeatedSfixed32  []int32                                     `protobuf:"fixed32,29,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty" go:"track"`
+	RepeatedSfixed64  []int64                                     `protobuf:"fixed64,30,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty" go:"track"`
+	RepeatedFloat     []float32                                   `protobuf:"fixed32,31,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty" go:"track"`
+	RepeatedDouble    []float64                                   `protobuf:"fixed64,32,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty" go:"track"`
+	RepeatedBool      []bool                                      `protobuf:"varint,33,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty" go:"track"`
+	RepeatedString    []string                                    `protobuf:"bytes,34,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty" go:"track"`
+	RepeatedBytes     [][]byte                                    `protobuf:"bytes,35,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty" go:"track"`
+	RepeatedEnum      []test.TestAllTypes_NestedEnum              `protobuf:"varint,36,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"repeated_enum,omitempty" go:"track"`
+	RepeatedMessage   []*test.TestAllTypes_NestedMessage          `protobuf:"bytes,37,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty" go:"track"`
+	MapStringInt32    map[string]int32                            `protobuf:"bytes,41,rep,name=map_string_int32,json=mapStringInt32" json:"map_string_int32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
+	MapStringInt64    map[string]int64                            `protobuf:"bytes,42,rep,name=map_string_int64,json=mapStringInt64" json:"map_string_int64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
+	MapStringUint32   map[string]uint32                           `protobuf:"bytes,43,rep,name=map_string_uint32,json=mapStringUint32" json:"map_string_uint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
+	MapStringUint64   map[string]uint64                           `protobuf:"bytes,44,rep,name=map_string_uint64,json=mapStringUint64" json:"map_string_uint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
+	MapStringSint32   map[string]int32                            `protobuf:"bytes,45,rep,name=map_string_sint32,json=mapStringSint32" json:"map_string_sint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value" go:"track"`
+	MapStringSint64   map[string]int64                            `protobuf:"bytes,46,rep,name=map_string_sint64,json=mapStringSint64" json:"map_string_sint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value" go:"track"`
+	MapStringFixed32  map[string]uint32                           `protobuf:"bytes,47,rep,name=map_string_fixed32,json=mapStringFixed32" json:"map_string_fixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
+	MapStringFixed64  map[string]uint64                           `protobuf:"bytes,48,rep,name=map_string_fixed64,json=mapStringFixed64" json:"map_string_fixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
+	MapStringSfixed32 map[string]int32                            `protobuf:"bytes,49,rep,name=map_string_sfixed32,json=mapStringSfixed32" json:"map_string_sfixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
+	MapStringSfixed64 map[string]int64                            `protobuf:"bytes,50,rep,name=map_string_sfixed64,json=mapStringSfixed64" json:"map_string_sfixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
+	MapStringFloat    map[string]float32                          `protobuf:"bytes,51,rep,name=map_string_float,json=mapStringFloat" json:"map_string_float,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
+	MapStringDouble   map[string]float64                          `protobuf:"bytes,52,rep,name=map_string_double,json=mapStringDouble" json:"map_string_double,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
+	MapStringBool     map[string]bool                             `protobuf:"bytes,53,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
+	MapStringString   map[string]string                           `protobuf:"bytes,54,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" go:"track"`
+	MapStringBytes    map[string][]byte                           `protobuf:"bytes,55,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" go:"track"`
+	MapStringEnum     map[string]test.TestAllTypes_NestedEnum     `protobuf:"bytes,56,rep,name=map_string_enum,json=mapStringEnum" json:"map_string_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypes_NestedEnum" go:"track"`
+	MapStringMessage  map[string]*test.TestAllTypes_NestedMessage `protobuf:"bytes,57,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" go:"track"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_weak_WeakMessage1 struct{} `protobuf:"bytes,100,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty" go:"track"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_weak_WeakMessage2 struct{} `protobuf:"bytes,101,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty" go:"track"`
+	weakFields            protoimpl.WeakFields
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestFieldTrack) Reset() {
@@ -109,7 +110,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalInt32() int32 {
 	if x != nil && x.OptionalInt32 != nil {
 		return *x.OptionalInt32
@@ -118,7 +118,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalInt64() int64 {
 	if x != nil && x.OptionalInt64 != nil {
 		return *x.OptionalInt64
@@ -127,7 +126,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalUint32() uint32 {
 	if x != nil && x.OptionalUint32 != nil {
 		return *x.OptionalUint32
@@ -136,7 +134,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalUint64() uint64 {
 	if x != nil && x.OptionalUint64 != nil {
 		return *x.OptionalUint64
@@ -145,7 +142,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalSint32() int32 {
 	if x != nil && x.OptionalSint32 != nil {
 		return *x.OptionalSint32
@@ -154,7 +150,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalSint64() int64 {
 	if x != nil && x.OptionalSint64 != nil {
 		return *x.OptionalSint64
@@ -163,7 +158,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalFixed32() uint32 {
 	if x != nil && x.OptionalFixed32 != nil {
 		return *x.OptionalFixed32
@@ -172,7 +166,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalFixed64() uint64 {
 	if x != nil && x.OptionalFixed64 != nil {
 		return *x.OptionalFixed64
@@ -181,7 +174,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalSfixed32() int32 {
 	if x != nil && x.OptionalSfixed32 != nil {
 		return *x.OptionalSfixed32
@@ -190,7 +182,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalSfixed64() int64 {
 	if x != nil && x.OptionalSfixed64 != nil {
 		return *x.OptionalSfixed64
@@ -199,7 +190,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalFloat() float32 {
 	if x != nil && x.OptionalFloat != nil {
 		return *x.OptionalFloat
@@ -208,7 +198,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalDouble() float64 {
 	if x != nil && x.OptionalDouble != nil {
 		return *x.OptionalDouble
@@ -217,7 +206,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalBool() bool {
 	if x != nil && x.OptionalBool != nil {
 		return *x.OptionalBool
@@ -226,7 +214,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalString() string {
 	if x != nil && x.OptionalString != nil {
 		return *x.OptionalString
@@ -235,7 +222,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalBytes() []byte {
 	if x != nil {
 		return x.OptionalBytes
@@ -244,7 +230,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalEnum() test.TestAllTypes_NestedEnum {
 	if x != nil && x.OptionalEnum != nil {
 		return *x.OptionalEnum
@@ -253,7 +238,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetOptionalMessage() *test.TestAllTypes_NestedMessage {
 	if x != nil {
 		return x.OptionalMessage
@@ -262,7 +246,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedInt32() []int32 {
 	if x != nil {
 		return x.RepeatedInt32
@@ -271,7 +254,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedInt64() []int64 {
 	if x != nil {
 		return x.RepeatedInt64
@@ -280,7 +262,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedUint32() []uint32 {
 	if x != nil {
 		return x.RepeatedUint32
@@ -289,7 +270,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedUint64() []uint64 {
 	if x != nil {
 		return x.RepeatedUint64
@@ -298,7 +278,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedSint32() []int32 {
 	if x != nil {
 		return x.RepeatedSint32
@@ -307,7 +286,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedSint64() []int64 {
 	if x != nil {
 		return x.RepeatedSint64
@@ -316,7 +294,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedFixed32() []uint32 {
 	if x != nil {
 		return x.RepeatedFixed32
@@ -325,7 +302,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedFixed64() []uint64 {
 	if x != nil {
 		return x.RepeatedFixed64
@@ -334,7 +310,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedSfixed32() []int32 {
 	if x != nil {
 		return x.RepeatedSfixed32
@@ -343,7 +318,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedSfixed64() []int64 {
 	if x != nil {
 		return x.RepeatedSfixed64
@@ -352,7 +326,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedFloat() []float32 {
 	if x != nil {
 		return x.RepeatedFloat
@@ -361,7 +334,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedDouble() []float64 {
 	if x != nil {
 		return x.RepeatedDouble
@@ -370,7 +342,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedBool() []bool {
 	if x != nil {
 		return x.RepeatedBool
@@ -379,7 +350,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedString() []string {
 	if x != nil {
 		return x.RepeatedString
@@ -388,7 +358,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedBytes() [][]byte {
 	if x != nil {
 		return x.RepeatedBytes
@@ -397,7 +366,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedEnum() []test.TestAllTypes_NestedEnum {
 	if x != nil {
 		return x.RepeatedEnum
@@ -406,7 +374,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetRepeatedMessage() []*test.TestAllTypes_NestedMessage {
 	if x != nil {
 		return x.RepeatedMessage
@@ -415,7 +382,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringInt32() map[string]int32 {
 	if x != nil {
 		return x.MapStringInt32
@@ -424,7 +390,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringInt64() map[string]int64 {
 	if x != nil {
 		return x.MapStringInt64
@@ -433,7 +398,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringUint32() map[string]uint32 {
 	if x != nil {
 		return x.MapStringUint32
@@ -442,7 +406,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringUint64() map[string]uint64 {
 	if x != nil {
 		return x.MapStringUint64
@@ -451,7 +414,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringSint32() map[string]int32 {
 	if x != nil {
 		return x.MapStringSint32
@@ -460,7 +422,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringSint64() map[string]int64 {
 	if x != nil {
 		return x.MapStringSint64
@@ -469,7 +430,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringFixed32() map[string]uint32 {
 	if x != nil {
 		return x.MapStringFixed32
@@ -478,7 +438,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringFixed64() map[string]uint64 {
 	if x != nil {
 		return x.MapStringFixed64
@@ -487,7 +446,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringSfixed32() map[string]int32 {
 	if x != nil {
 		return x.MapStringSfixed32
@@ -496,7 +454,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringSfixed64() map[string]int64 {
 	if x != nil {
 		return x.MapStringSfixed64
@@ -505,7 +462,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringFloat() map[string]float32 {
 	if x != nil {
 		return x.MapStringFloat
@@ -514,7 +470,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringDouble() map[string]float64 {
 	if x != nil {
 		return x.MapStringDouble
@@ -523,7 +478,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringBool() map[string]bool {
 	if x != nil {
 		return x.MapStringBool
@@ -532,7 +486,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringString() map[string]string {
 	if x != nil {
 		return x.MapStringString
@@ -541,7 +494,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringBytes() map[string][]byte {
 	if x != nil {
 		return x.MapStringBytes
@@ -550,7 +502,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringEnum() map[string]test.TestAllTypes_NestedEnum {
 	if x != nil {
 		return x.MapStringEnum
@@ -559,7 +510,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetMapStringMessage() map[string]*test.TestAllTypes_NestedMessage {
 	if x != nil {
 		return x.MapStringMessage
@@ -568,7 +518,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetWeakMessage1() proto.Message {
 	var w protoimpl.WeakFields
 	if x != nil {
@@ -579,7 +528,6 @@
 }
 
 //go:nointerface
-
 func (x *TestFieldTrack) GetWeakMessage2() proto.Message {
 	var w protoimpl.WeakFields
 	if x != nil {
@@ -589,8 +537,6 @@
 	return protoimpl.X.GetWeak(w, 101, "goproto.proto.test.weak.WeakImportMessage2")
 }
 
-//go:nointerface
-
 func (x *TestFieldTrack) SetWeakMessage1(v proto.Message) {
 	var w *protoimpl.WeakFields
 	if x != nil {
@@ -600,8 +546,6 @@
 	protoimpl.X.SetWeak(w, 100, "goproto.proto.test.weak.WeakImportMessage1", v)
 }
 
-//go:nointerface
-
 func (x *TestFieldTrack) SetWeakMessage2(v proto.Message) {
 	var w *protoimpl.WeakFields
 	if x != nil {
diff --git a/internal/testprotos/fuzz/fuzz.pb.go b/internal/testprotos/fuzz/fuzz.pb.go
index fdcc284..a67aac7 100644
--- a/internal/testprotos/fuzz/fuzz.pb.go
+++ b/internal/testprotos/fuzz/fuzz.pb.go
@@ -19,10 +19,7 @@
 // Fuzz is a container for every message we want to make available to the
 // fuzzer.
 type Fuzz struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                   protoimpl.MessageState        `protogen:"open.v1"`
 	TestAllTypes            *test.TestAllTypes            `protobuf:"bytes,1,opt,name=test_all_types,json=testAllTypes" json:"test_all_types,omitempty"`
 	TestAllExtensions       *test.TestAllExtensions       `protobuf:"bytes,2,opt,name=test_all_extensions,json=testAllExtensions" json:"test_all_extensions,omitempty"`
 	TestRequired            *test.TestRequired            `protobuf:"bytes,3,opt,name=test_required,json=testRequired" json:"test_required,omitempty"`
@@ -31,6 +28,8 @@
 	TestPackedTypes         *test.TestPackedTypes         `protobuf:"bytes,6,opt,name=test_packed_types,json=testPackedTypes" json:"test_packed_types,omitempty"`
 	TestPackedExtensions    *test.TestPackedExtensions    `protobuf:"bytes,7,opt,name=test_packed_extensions,json=testPackedExtensions" json:"test_packed_extensions,omitempty"`
 	TestAllTypes3           *test3.TestAllTypes           `protobuf:"bytes,8,opt,name=test_all_types3,json=testAllTypes3" json:"test_all_types3,omitempty"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
 func (x *Fuzz) Reset() {
diff --git a/internal/testprotos/irregular/test.pb.go b/internal/testprotos/irregular/test.pb.go
index 315b384..ca3a6b6 100644
--- a/internal/testprotos/irregular/test.pb.go
+++ b/internal/testprotos/irregular/test.pb.go
@@ -19,15 +19,12 @@
 )
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state           protoimpl.MessageState       `protogen:"open.v1"`
 	OptionalMessage *IrregularMessage            `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
 	RepeatedMessage []*IrregularMessage          `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
 	RequiredMessage *IrregularMessage            `protobuf:"bytes,3,req,name=required_message,json=requiredMessage" json:"required_message,omitempty"`
 	MapMessage      map[string]*IrregularMessage `protobuf:"bytes,4,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to Union:
+	// Types that are valid to be assigned to Union:
 	//
 	//	*Message_OneofMessage
 	//	*Message_OneofAberrantMessage
@@ -36,6 +33,8 @@
 	RepeatedAberrantMessage []*AberrantMessage          `protobuf:"bytes,8,rep,name=repeated_aberrant_message,json=repeatedAberrantMessage" json:"repeated_aberrant_message,omitempty"`
 	RequiredAberrantMessage *AberrantMessage            `protobuf:"bytes,9,req,name=required_aberrant_message,json=requiredAberrantMessage" json:"required_aberrant_message,omitempty"`
 	MapAberrantMessage      map[string]*AberrantMessage `protobuf:"bytes,10,rep,name=map_aberrant_message,json=mapAberrantMessage" json:"map_aberrant_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
@@ -96,23 +95,27 @@
 	return nil
 }
 
-func (m *Message) GetUnion() isMessage_Union {
-	if m != nil {
-		return m.Union
+func (x *Message) GetUnion() isMessage_Union {
+	if x != nil {
+		return x.Union
 	}
 	return nil
 }
 
 func (x *Message) GetOneofMessage() *IrregularMessage {
-	if x, ok := x.GetUnion().(*Message_OneofMessage); ok {
-		return x.OneofMessage
+	if x != nil {
+		if x, ok := x.Union.(*Message_OneofMessage); ok {
+			return x.OneofMessage
+		}
 	}
 	return nil
 }
 
 func (x *Message) GetOneofAberrantMessage() *AberrantMessage {
-	if x, ok := x.GetUnion().(*Message_OneofAberrantMessage); ok {
-		return x.OneofAberrantMessage
+	if x != nil {
+		if x, ok := x.Union.(*Message_OneofAberrantMessage); ok {
+			return x.OneofAberrantMessage
+		}
 	}
 	return nil
 }
diff --git a/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go b/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
index 42901da..59c37d3 100644
--- a/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
+++ b/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
@@ -15,13 +15,12 @@
 )
 
 type Sub struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	C               *uint32                `protobuf:"varint,3,opt,name=c" json:"c,omitempty"`
+	Grandchild      *Sub                   `protobuf:"bytes,4,opt,name=grandchild" json:"grandchild,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	C          *uint32 `protobuf:"varint,3,opt,name=c" json:"c,omitempty"`
-	Grandchild *Sub    `protobuf:"bytes,4,opt,name=grandchild" json:"grandchild,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Sub) Reset() {
@@ -69,12 +68,11 @@
 }
 
 type Top struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *uint32                `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Child         *Sub                   `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A     *uint32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Child *Sub    `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Top) Reset() {
@@ -122,11 +120,10 @@
 }
 
 type Ext struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SomeFlag      *bool                  `protobuf:"varint,1,opt,name=some_flag,json=someFlag" json:"some_flag,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SomeFlag *bool `protobuf:"varint,1,opt,name=some_flag,json=someFlag" json:"some_flag,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Ext) Reset() {
diff --git a/internal/testprotos/lazy/lazy_extension_test.pb.go b/internal/testprotos/lazy/lazy_extension_test.pb.go
index b569251..424b625 100644
--- a/internal/testprotos/lazy/lazy_extension_test.pb.go
+++ b/internal/testprotos/lazy/lazy_extension_test.pb.go
@@ -159,11 +159,10 @@
 
 // This message contains a message set.
 type Holder struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	Data          *messagesetpb.MessageSet `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Data *messagesetpb.MessageSet `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Holder) Reset() {
@@ -205,11 +204,10 @@
 
 // This message may be inserted into a message set.
 type Rabbit struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Rabbit) Reset() {
@@ -250,11 +248,10 @@
 }
 
 type FlyingFox struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Species       *FlyingFoxSpecies      `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.FlyingFoxSpecies" json:"species,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Species *FlyingFoxSpecies `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.FlyingFoxSpecies" json:"species,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FlyingFox) Reset() {
@@ -295,12 +292,11 @@
 }
 
 type Tree struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	Eucalyptus      *bool                  `protobuf:"varint,1,opt,name=eucalyptus" json:"eucalyptus,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	Eucalyptus *bool `protobuf:"varint,1,opt,name=eucalyptus" json:"eucalyptus,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Tree) Reset() {
@@ -341,11 +337,10 @@
 }
 
 type Pipistrelle struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Species       *PipistrelleSpecies    `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.PipistrelleSpecies" json:"species,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Species *PipistrelleSpecies `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.PipistrelleSpecies" json:"species,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Pipistrelle) Reset() {
@@ -386,11 +381,10 @@
 }
 
 type Pipistrelles struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Species       *PipistrelleSpecies    `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.PipistrelleSpecies" json:"species,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Species *PipistrelleSpecies `protobuf:"varint,1,opt,name=species,enum=lazy_extension_test.PipistrelleSpecies" json:"species,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Pipistrelles) Reset() {
@@ -432,9 +426,9 @@
 
 // And the ugly version that is not encouraged
 type BatNest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *BatNest) Reset() {
diff --git a/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.pb.go b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.pb.go
new file mode 100644
index 0000000..4c43901
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.pb.go
@@ -0,0 +1,548 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.proto
+
+package lazy_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Node struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Nested        *Node                  `protobuf:"bytes,99,opt,name=nested" json:"nested,omitempty"`
+	Int32         *int32                 `protobuf:"varint,1,opt,name=int32" json:"int32,omitempty"`
+	Int64         *int64                 `protobuf:"varint,2,opt,name=int64" json:"int64,omitempty"`
+	Uint32        *uint32                `protobuf:"varint,3,opt,name=uint32" json:"uint32,omitempty"`
+	Uint64        *uint64                `protobuf:"varint,4,opt,name=uint64" json:"uint64,omitempty"`
+	Sint32        *int32                 `protobuf:"zigzag32,5,opt,name=sint32" json:"sint32,omitempty"`
+	Sint64        *int64                 `protobuf:"zigzag64,6,opt,name=sint64" json:"sint64,omitempty"`
+	Fixed32       *uint32                `protobuf:"fixed32,7,opt,name=fixed32" json:"fixed32,omitempty"`
+	Fixed64       *uint64                `protobuf:"fixed64,8,opt,name=fixed64" json:"fixed64,omitempty"`
+	Sfixed32      *int32                 `protobuf:"fixed32,9,opt,name=sfixed32" json:"sfixed32,omitempty"`
+	Sfixed64      *int64                 `protobuf:"fixed64,10,opt,name=sfixed64" json:"sfixed64,omitempty"`
+	Float         *float32               `protobuf:"fixed32,11,opt,name=float" json:"float,omitempty"`
+	Double        *float64               `protobuf:"fixed64,12,opt,name=double" json:"double,omitempty"`
+	Bool          *bool                  `protobuf:"varint,13,opt,name=bool" json:"bool,omitempty"`
+	String_       *string                `protobuf:"bytes,14,opt,name=string" json:"string,omitempty"`
+	Bytes         []byte                 `protobuf:"bytes,15,opt,name=bytes" json:"bytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Node) Reset() {
+	*x = Node{}
+	mi := &file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Node) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Node) ProtoMessage() {}
+
+func (x *Node) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Node) GetNested() *Node {
+	if x != nil {
+		return x.Nested
+	}
+	return nil
+}
+
+func (x *Node) GetInt32() int32 {
+	if x != nil && x.Int32 != nil {
+		return *x.Int32
+	}
+	return 0
+}
+
+func (x *Node) GetInt64() int64 {
+	if x != nil && x.Int64 != nil {
+		return *x.Int64
+	}
+	return 0
+}
+
+func (x *Node) GetUint32() uint32 {
+	if x != nil && x.Uint32 != nil {
+		return *x.Uint32
+	}
+	return 0
+}
+
+func (x *Node) GetUint64() uint64 {
+	if x != nil && x.Uint64 != nil {
+		return *x.Uint64
+	}
+	return 0
+}
+
+func (x *Node) GetSint32() int32 {
+	if x != nil && x.Sint32 != nil {
+		return *x.Sint32
+	}
+	return 0
+}
+
+func (x *Node) GetSint64() int64 {
+	if x != nil && x.Sint64 != nil {
+		return *x.Sint64
+	}
+	return 0
+}
+
+func (x *Node) GetFixed32() uint32 {
+	if x != nil && x.Fixed32 != nil {
+		return *x.Fixed32
+	}
+	return 0
+}
+
+func (x *Node) GetFixed64() uint64 {
+	if x != nil && x.Fixed64 != nil {
+		return *x.Fixed64
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed32() int32 {
+	if x != nil && x.Sfixed32 != nil {
+		return *x.Sfixed32
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed64() int64 {
+	if x != nil && x.Sfixed64 != nil {
+		return *x.Sfixed64
+	}
+	return 0
+}
+
+func (x *Node) GetFloat() float32 {
+	if x != nil && x.Float != nil {
+		return *x.Float
+	}
+	return 0
+}
+
+func (x *Node) GetDouble() float64 {
+	if x != nil && x.Double != nil {
+		return *x.Double
+	}
+	return 0
+}
+
+func (x *Node) GetBool() bool {
+	if x != nil && x.Bool != nil {
+		return *x.Bool
+	}
+	return false
+}
+
+func (x *Node) GetString() string {
+	if x != nil && x.String_ != nil {
+		return *x.String_
+	}
+	return ""
+}
+
+// Deprecated: Use GetString instead.
+func (x *Node) GetString_() string {
+	return x.GetString()
+}
+
+func (x *Node) GetBytes() []byte {
+	if x != nil {
+		return x.Bytes
+	}
+	return nil
+}
+
+func (x *Node) SetNested(v *Node) {
+	x.Nested = v
+}
+
+func (x *Node) SetInt32(v int32) {
+	x.Int32 = &v
+}
+
+func (x *Node) SetInt64(v int64) {
+	x.Int64 = &v
+}
+
+func (x *Node) SetUint32(v uint32) {
+	x.Uint32 = &v
+}
+
+func (x *Node) SetUint64(v uint64) {
+	x.Uint64 = &v
+}
+
+func (x *Node) SetSint32(v int32) {
+	x.Sint32 = &v
+}
+
+func (x *Node) SetSint64(v int64) {
+	x.Sint64 = &v
+}
+
+func (x *Node) SetFixed32(v uint32) {
+	x.Fixed32 = &v
+}
+
+func (x *Node) SetFixed64(v uint64) {
+	x.Fixed64 = &v
+}
+
+func (x *Node) SetSfixed32(v int32) {
+	x.Sfixed32 = &v
+}
+
+func (x *Node) SetSfixed64(v int64) {
+	x.Sfixed64 = &v
+}
+
+func (x *Node) SetFloat(v float32) {
+	x.Float = &v
+}
+
+func (x *Node) SetDouble(v float64) {
+	x.Double = &v
+}
+
+func (x *Node) SetBool(v bool) {
+	x.Bool = &v
+}
+
+func (x *Node) SetString(v string) {
+	x.String_ = &v
+}
+
+func (x *Node) SetBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.Bytes = v
+}
+
+func (x *Node) HasNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.Nested != nil
+}
+
+func (x *Node) HasInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.Int32 != nil
+}
+
+func (x *Node) HasInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.Int64 != nil
+}
+
+func (x *Node) HasUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.Uint32 != nil
+}
+
+func (x *Node) HasUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.Uint64 != nil
+}
+
+func (x *Node) HasSint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.Sint32 != nil
+}
+
+func (x *Node) HasSint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.Sint64 != nil
+}
+
+func (x *Node) HasFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.Fixed32 != nil
+}
+
+func (x *Node) HasFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.Fixed64 != nil
+}
+
+func (x *Node) HasSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.Sfixed32 != nil
+}
+
+func (x *Node) HasSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.Sfixed64 != nil
+}
+
+func (x *Node) HasFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.Float != nil
+}
+
+func (x *Node) HasDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.Double != nil
+}
+
+func (x *Node) HasBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.Bool != nil
+}
+
+func (x *Node) HasString() bool {
+	if x == nil {
+		return false
+	}
+	return x.String_ != nil
+}
+
+func (x *Node) HasBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.Bytes != nil
+}
+
+func (x *Node) ClearNested() {
+	x.Nested = nil
+}
+
+func (x *Node) ClearInt32() {
+	x.Int32 = nil
+}
+
+func (x *Node) ClearInt64() {
+	x.Int64 = nil
+}
+
+func (x *Node) ClearUint32() {
+	x.Uint32 = nil
+}
+
+func (x *Node) ClearUint64() {
+	x.Uint64 = nil
+}
+
+func (x *Node) ClearSint32() {
+	x.Sint32 = nil
+}
+
+func (x *Node) ClearSint64() {
+	x.Sint64 = nil
+}
+
+func (x *Node) ClearFixed32() {
+	x.Fixed32 = nil
+}
+
+func (x *Node) ClearFixed64() {
+	x.Fixed64 = nil
+}
+
+func (x *Node) ClearSfixed32() {
+	x.Sfixed32 = nil
+}
+
+func (x *Node) ClearSfixed64() {
+	x.Sfixed64 = nil
+}
+
+func (x *Node) ClearFloat() {
+	x.Float = nil
+}
+
+func (x *Node) ClearDouble() {
+	x.Double = nil
+}
+
+func (x *Node) ClearBool() {
+	x.Bool = nil
+}
+
+func (x *Node) ClearString() {
+	x.String_ = nil
+}
+
+func (x *Node) ClearBytes() {
+	x.Bytes = nil
+}
+
+type Node_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Nested   *Node
+	Int32    *int32
+	Int64    *int64
+	Uint32   *uint32
+	Uint64   *uint64
+	Sint32   *int32
+	Sint64   *int64
+	Fixed32  *uint32
+	Fixed64  *uint64
+	Sfixed32 *int32
+	Sfixed64 *int64
+	Float    *float32
+	Double   *float64
+	Bool     *bool
+	String   *string
+	Bytes    []byte
+}
+
+func (b0 Node_builder) Build() *Node {
+	m0 := &Node{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Nested = b.Nested
+	x.Int32 = b.Int32
+	x.Int64 = b.Int64
+	x.Uint32 = b.Uint32
+	x.Uint64 = b.Uint64
+	x.Sint32 = b.Sint32
+	x.Sint64 = b.Sint64
+	x.Fixed32 = b.Fixed32
+	x.Fixed64 = b.Fixed64
+	x.Sfixed32 = b.Sfixed32
+	x.Sfixed64 = b.Sfixed64
+	x.Float = b.Float
+	x.Double = b.Double
+	x.Bool = b.Bool
+	x.String_ = b.String
+	x.Bytes = b.Bytes
+	return m0
+}
+
+var File_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x3b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x1a,
+	0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x22, 0xa2, 0x03, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x2e, 0x4e,
+	0x6f, 0x64, 0x65, 0x42, 0x02, 0x28, 0x01, 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
+	0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x73,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x12, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x07, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x1a, 0x0a, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x0f, 0x52, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x16, 0x0a,
+	0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x64,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x49, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c,
+	0x61, 0x7a, 0x79, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02,
+	0x10, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_goTypes = []any{
+	(*Node)(nil), // 0: hybrid.lazy_tree.Node
+}
+var file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_depIdxs = []int32{
+	0, // 0: hybrid.lazy_tree.Node.nested:type_name -> hybrid.lazy_tree.Node
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_init() }
+func file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_init() {
+	if File_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto = out.File
+	file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_goTypes = nil
+	file_internal_testprotos_lazy_lazy_hybrid_lazy_tree_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.proto b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.proto
new file mode 100644
index 0000000..9563183
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid.proto
@@ -0,0 +1,31 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.lazy_tree;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/lazy/lazy_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message Node {
+  Node nested = 99 [lazy = true];
+
+  int32 int32 = 1;
+  int64 int64 = 2;
+  uint32 uint32 = 3;
+  uint64 uint64 = 4;
+  sint32 sint32 = 5;
+  sint64 sint64 = 6;
+  fixed32 fixed32 = 7;
+  fixed64 fixed64 = 8;
+  sfixed32 sfixed32 = 9;
+  sfixed64 sfixed64 = 10;
+  float float = 11;
+  double double = 12;
+  bool bool = 13;
+  string string = 14;
+  bytes bytes = 15;
+}
\ No newline at end of file
diff --git a/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go b/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go
new file mode 100644
index 0000000..146fa6c
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go
@@ -0,0 +1,205 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/lazy/lazy_normalized_wire_test.proto
+
+package lazy
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+type FSub struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	B             *uint32                `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	C             *uint32                `protobuf:"varint,3,opt,name=c" json:"c,omitempty"`
+	Grandchild    *FSub                  `protobuf:"bytes,4,opt,name=grandchild" json:"grandchild,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FSub) Reset() {
+	*x = FSub{}
+	mi := &file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FSub) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FSub) ProtoMessage() {}
+
+func (x *FSub) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes[0]
+	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 FSub.ProtoReflect.Descriptor instead.
+func (*FSub) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *FSub) GetB() uint32 {
+	if x != nil && x.B != nil {
+		return *x.B
+	}
+	return 0
+}
+
+func (x *FSub) GetC() uint32 {
+	if x != nil && x.C != nil {
+		return *x.C
+	}
+	return 0
+}
+
+func (x *FSub) GetGrandchild() *FSub {
+	if x != nil {
+		return x.Grandchild
+	}
+	return nil
+}
+
+type FTop struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *uint32                `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Child         *FSub                  `protobuf:"bytes,2,opt,name=child" json:"child,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FTop) Reset() {
+	*x = FTop{}
+	mi := &file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FTop) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FTop) ProtoMessage() {}
+
+func (x *FTop) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes[1]
+	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 FTop.ProtoReflect.Descriptor instead.
+func (*FTop) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *FTop) GetA() uint32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *FTop) GetChild() *FSub {
+	if x != nil {
+		return x.Child
+	}
+	return nil
+}
+
+var File_internal_testprotos_lazy_lazy_normalized_wire_test_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x6c, 0x61, 0x7a, 0x79,
+	0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x72, 0x65,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, 0x67, 0x0a, 0x04, 0x46, 0x53, 0x75, 0x62, 0x12, 0x0c, 0x0a,
+	0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x62, 0x12, 0x0c, 0x0a, 0x01, 0x63,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x63, 0x12, 0x43, 0x0a, 0x0a, 0x67, 0x72, 0x61,
+	0x6e, 0x64, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+	0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f,
+	0x77, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x53, 0x75, 0x62, 0x42, 0x02,
+	0x28, 0x01, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x64, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0x4b,
+	0x0a, 0x04, 0x46, 0x54, 0x6f, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x01, 0x61, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+	0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x46, 0x53, 0x75, 0x62, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x42, 0x35, 0x5a, 0x33, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61,
+	0x7a, 0x79,
+}
+
+var (
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescOnce sync.Once
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData = file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc
+)
+
+func file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescGZIP() []byte {
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescOnce.Do(func() {
+		file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData)
+	})
+	return file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData
+}
+
+var file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_goTypes = []any{
+	(*FSub)(nil), // 0: lazy_normalized_wire_test.FSub
+	(*FTop)(nil), // 1: lazy_normalized_wire_test.FTop
+}
+var file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_depIdxs = []int32{
+	0, // 0: lazy_normalized_wire_test.FSub.grandchild:type_name -> lazy_normalized_wire_test.FSub
+	0, // 1: lazy_normalized_wire_test.FTop.child:type_name -> lazy_normalized_wire_test.FSub
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_init() }
+func file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_init() {
+	if File_internal_testprotos_lazy_lazy_normalized_wire_test_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_lazy_lazy_normalized_wire_test_proto = out.File
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc = nil
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_goTypes = nil
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go
new file mode 100644
index 0000000..ac12ec6
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go
@@ -0,0 +1,641 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.proto
+
+package lazy_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Node struct {
+	state               protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Nested   *Node                  `protobuf:"bytes,99,opt,name=nested" json:"nested,omitempty"`
+	xxx_hidden_Int32    int32                  `protobuf:"varint,1,opt,name=int32" json:"int32,omitempty"`
+	xxx_hidden_Int64    int64                  `protobuf:"varint,2,opt,name=int64" json:"int64,omitempty"`
+	xxx_hidden_Uint32   uint32                 `protobuf:"varint,3,opt,name=uint32" json:"uint32,omitempty"`
+	xxx_hidden_Uint64   uint64                 `protobuf:"varint,4,opt,name=uint64" json:"uint64,omitempty"`
+	xxx_hidden_Sint32   int32                  `protobuf:"zigzag32,5,opt,name=sint32" json:"sint32,omitempty"`
+	xxx_hidden_Sint64   int64                  `protobuf:"zigzag64,6,opt,name=sint64" json:"sint64,omitempty"`
+	xxx_hidden_Fixed32  uint32                 `protobuf:"fixed32,7,opt,name=fixed32" json:"fixed32,omitempty"`
+	xxx_hidden_Fixed64  uint64                 `protobuf:"fixed64,8,opt,name=fixed64" json:"fixed64,omitempty"`
+	xxx_hidden_Sfixed32 int32                  `protobuf:"fixed32,9,opt,name=sfixed32" json:"sfixed32,omitempty"`
+	xxx_hidden_Sfixed64 int64                  `protobuf:"fixed64,10,opt,name=sfixed64" json:"sfixed64,omitempty"`
+	xxx_hidden_Float    float32                `protobuf:"fixed32,11,opt,name=float" json:"float,omitempty"`
+	xxx_hidden_Double   float64                `protobuf:"fixed64,12,opt,name=double" json:"double,omitempty"`
+	xxx_hidden_Bool     bool                   `protobuf:"varint,13,opt,name=bool" json:"bool,omitempty"`
+	xxx_hidden_String_  *string                `protobuf:"bytes,14,opt,name=string" json:"string,omitempty"`
+	xxx_hidden_Bytes    []byte                 `protobuf:"bytes,15,opt,name=bytes" json:"bytes,omitempty"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Node) Reset() {
+	*x = Node{}
+	mi := &file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Node) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Node) ProtoMessage() {}
+
+func (x *Node) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Node) GetNested() *Node {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 0) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_Nested) {
+				protoimpl.X.UnmarshalField(x, 99)
+			}
+			var rv *Node
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_Nested), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *Node) GetInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_Int32
+	}
+	return 0
+}
+
+func (x *Node) GetInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_Int64
+	}
+	return 0
+}
+
+func (x *Node) GetUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_Uint32
+	}
+	return 0
+}
+
+func (x *Node) GetUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_Uint64
+	}
+	return 0
+}
+
+func (x *Node) GetSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_Sint32
+	}
+	return 0
+}
+
+func (x *Node) GetSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_Sint64
+	}
+	return 0
+}
+
+func (x *Node) GetFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_Fixed32
+	}
+	return 0
+}
+
+func (x *Node) GetFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_Fixed64
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_Sfixed32
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_Sfixed64
+	}
+	return 0
+}
+
+func (x *Node) GetFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_Float
+	}
+	return 0
+}
+
+func (x *Node) GetDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_Double
+	}
+	return 0
+}
+
+func (x *Node) GetBool() bool {
+	if x != nil {
+		return x.xxx_hidden_Bool
+	}
+	return false
+}
+
+func (x *Node) GetString() string {
+	if x != nil {
+		if x.xxx_hidden_String_ != nil {
+			return *x.xxx_hidden_String_
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Node) GetBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_Bytes
+	}
+	return nil
+}
+
+func (x *Node) SetNested(v *Node) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Nested, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 16)
+	}
+}
+
+func (x *Node) SetInt32(v int32) {
+	x.xxx_hidden_Int32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 16)
+}
+
+func (x *Node) SetInt64(v int64) {
+	x.xxx_hidden_Int64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 16)
+}
+
+func (x *Node) SetUint32(v uint32) {
+	x.xxx_hidden_Uint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 16)
+}
+
+func (x *Node) SetUint64(v uint64) {
+	x.xxx_hidden_Uint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 4, 16)
+}
+
+func (x *Node) SetSint32(v int32) {
+	x.xxx_hidden_Sint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 5, 16)
+}
+
+func (x *Node) SetSint64(v int64) {
+	x.xxx_hidden_Sint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 6, 16)
+}
+
+func (x *Node) SetFixed32(v uint32) {
+	x.xxx_hidden_Fixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 7, 16)
+}
+
+func (x *Node) SetFixed64(v uint64) {
+	x.xxx_hidden_Fixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 8, 16)
+}
+
+func (x *Node) SetSfixed32(v int32) {
+	x.xxx_hidden_Sfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 9, 16)
+}
+
+func (x *Node) SetSfixed64(v int64) {
+	x.xxx_hidden_Sfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 10, 16)
+}
+
+func (x *Node) SetFloat(v float32) {
+	x.xxx_hidden_Float = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 11, 16)
+}
+
+func (x *Node) SetDouble(v float64) {
+	x.xxx_hidden_Double = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 12, 16)
+}
+
+func (x *Node) SetBool(v bool) {
+	x.xxx_hidden_Bool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 13, 16)
+}
+
+func (x *Node) SetString(v string) {
+	x.xxx_hidden_String_ = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 14, 16)
+}
+
+func (x *Node) SetBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_Bytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 15, 16)
+}
+
+func (x *Node) HasNested() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Node) HasInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *Node) HasInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *Node) HasUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *Node) HasUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 4)
+}
+
+func (x *Node) HasSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 5)
+}
+
+func (x *Node) HasSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 6)
+}
+
+func (x *Node) HasFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 7)
+}
+
+func (x *Node) HasFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 8)
+}
+
+func (x *Node) HasSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 9)
+}
+
+func (x *Node) HasSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 10)
+}
+
+func (x *Node) HasFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 11)
+}
+
+func (x *Node) HasDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 12)
+}
+
+func (x *Node) HasBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 13)
+}
+
+func (x *Node) HasString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 14)
+}
+
+func (x *Node) HasBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 15)
+}
+
+func (x *Node) ClearNested() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Nested, (*Node)(nil))
+}
+
+func (x *Node) ClearInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_Int32 = 0
+}
+
+func (x *Node) ClearInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_Int64 = 0
+}
+
+func (x *Node) ClearUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_Uint32 = 0
+}
+
+func (x *Node) ClearUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 4)
+	x.xxx_hidden_Uint64 = 0
+}
+
+func (x *Node) ClearSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 5)
+	x.xxx_hidden_Sint32 = 0
+}
+
+func (x *Node) ClearSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 6)
+	x.xxx_hidden_Sint64 = 0
+}
+
+func (x *Node) ClearFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 7)
+	x.xxx_hidden_Fixed32 = 0
+}
+
+func (x *Node) ClearFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 8)
+	x.xxx_hidden_Fixed64 = 0
+}
+
+func (x *Node) ClearSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 9)
+	x.xxx_hidden_Sfixed32 = 0
+}
+
+func (x *Node) ClearSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 10)
+	x.xxx_hidden_Sfixed64 = 0
+}
+
+func (x *Node) ClearFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 11)
+	x.xxx_hidden_Float = 0
+}
+
+func (x *Node) ClearDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 12)
+	x.xxx_hidden_Double = 0
+}
+
+func (x *Node) ClearBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 13)
+	x.xxx_hidden_Bool = false
+}
+
+func (x *Node) ClearString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 14)
+	x.xxx_hidden_String_ = nil
+}
+
+func (x *Node) ClearBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 15)
+	x.xxx_hidden_Bytes = nil
+}
+
+type Node_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Nested   *Node
+	Int32    *int32
+	Int64    *int64
+	Uint32   *uint32
+	Uint64   *uint64
+	Sint32   *int32
+	Sint64   *int64
+	Fixed32  *uint32
+	Fixed64  *uint64
+	Sfixed32 *int32
+	Sfixed64 *int64
+	Float    *float32
+	Double   *float64
+	Bool     *bool
+	String   *string
+	Bytes    []byte
+}
+
+func (b0 Node_builder) Build() *Node {
+	m0 := &Node{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Nested != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 16)
+		x.xxx_hidden_Nested = b.Nested
+	}
+	if b.Int32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 16)
+		x.xxx_hidden_Int32 = *b.Int32
+	}
+	if b.Int64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 16)
+		x.xxx_hidden_Int64 = *b.Int64
+	}
+	if b.Uint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 16)
+		x.xxx_hidden_Uint32 = *b.Uint32
+	}
+	if b.Uint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 4, 16)
+		x.xxx_hidden_Uint64 = *b.Uint64
+	}
+	if b.Sint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 5, 16)
+		x.xxx_hidden_Sint32 = *b.Sint32
+	}
+	if b.Sint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 6, 16)
+		x.xxx_hidden_Sint64 = *b.Sint64
+	}
+	if b.Fixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 7, 16)
+		x.xxx_hidden_Fixed32 = *b.Fixed32
+	}
+	if b.Fixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 8, 16)
+		x.xxx_hidden_Fixed64 = *b.Fixed64
+	}
+	if b.Sfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 9, 16)
+		x.xxx_hidden_Sfixed32 = *b.Sfixed32
+	}
+	if b.Sfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 10, 16)
+		x.xxx_hidden_Sfixed64 = *b.Sfixed64
+	}
+	if b.Float != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 11, 16)
+		x.xxx_hidden_Float = *b.Float
+	}
+	if b.Double != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 12, 16)
+		x.xxx_hidden_Double = *b.Double
+	}
+	if b.Bool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 13, 16)
+		x.xxx_hidden_Bool = *b.Bool
+	}
+	if b.String != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 14, 16)
+		x.xxx_hidden_String_ = b.String
+	}
+	if b.Bytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 15, 16)
+		x.xxx_hidden_Bytes = b.Bytes
+	}
+	return m0
+}
+
+var File_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_rawDesc = []byte{
+	0x0a, 0x3b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x1a,
+	0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x22, 0xa2, 0x03, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x2e, 0x4e,
+	0x6f, 0x64, 0x65, 0x42, 0x02, 0x28, 0x01, 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
+	0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x73,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x12, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x07, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x1a, 0x0a, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x0f, 0x52, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x16, 0x0a,
+	0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x64,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x49, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c,
+	0x61, 0x7a, 0x79, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02,
+	0x10, 0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_goTypes = []any{
+	(*Node)(nil), // 0: opaque.lazy_tree.Node
+}
+var file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_depIdxs = []int32{
+	0, // 0: opaque.lazy_tree.Node.nested:type_name -> opaque.lazy_tree.Node
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_init() }
+func file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_init() {
+	if File_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto = out.File
+	file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_rawDesc = nil
+	file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_goTypes = nil
+	file_internal_testprotos_lazy_lazy_opaque_lazy_tree_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.proto b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.proto
new file mode 100644
index 0000000..d2f3a11
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.proto
@@ -0,0 +1,31 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.lazy_tree;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/lazy/lazy_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message Node {
+  Node nested = 99 [lazy = true];
+
+  int32 int32 = 1;
+  int64 int64 = 2;
+  uint32 uint32 = 3;
+  uint64 uint64 = 4;
+  sint32 sint32 = 5;
+  sint64 sint64 = 6;
+  fixed32 fixed32 = 7;
+  fixed64 fixed64 = 8;
+  sfixed32 sfixed32 = 9;
+  sfixed64 sfixed64 = 10;
+  float float = 11;
+  double double = 12;
+  bool bool = 13;
+  string string = 14;
+  bytes bytes = 15;
+}
\ No newline at end of file
diff --git a/internal/testprotos/lazy/lazy_tree.pb.go b/internal/testprotos/lazy/lazy_tree.pb.go
new file mode 100644
index 0000000..79f9eb0
--- /dev/null
+++ b/internal/testprotos/lazy/lazy_tree.pb.go
@@ -0,0 +1,268 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/lazy/lazy_tree.proto
+
+package lazy
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+type Node struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Nested        *Node                  `protobuf:"bytes,99,opt,name=nested" json:"nested,omitempty"`
+	Int32         *int32                 `protobuf:"varint,1,opt,name=int32" json:"int32,omitempty"`
+	Int64         *int64                 `protobuf:"varint,2,opt,name=int64" json:"int64,omitempty"`
+	Uint32        *uint32                `protobuf:"varint,3,opt,name=uint32" json:"uint32,omitempty"`
+	Uint64        *uint64                `protobuf:"varint,4,opt,name=uint64" json:"uint64,omitempty"`
+	Sint32        *int32                 `protobuf:"zigzag32,5,opt,name=sint32" json:"sint32,omitempty"`
+	Sint64        *int64                 `protobuf:"zigzag64,6,opt,name=sint64" json:"sint64,omitempty"`
+	Fixed32       *uint32                `protobuf:"fixed32,7,opt,name=fixed32" json:"fixed32,omitempty"`
+	Fixed64       *uint64                `protobuf:"fixed64,8,opt,name=fixed64" json:"fixed64,omitempty"`
+	Sfixed32      *int32                 `protobuf:"fixed32,9,opt,name=sfixed32" json:"sfixed32,omitempty"`
+	Sfixed64      *int64                 `protobuf:"fixed64,10,opt,name=sfixed64" json:"sfixed64,omitempty"`
+	Float         *float32               `protobuf:"fixed32,11,opt,name=float" json:"float,omitempty"`
+	Double        *float64               `protobuf:"fixed64,12,opt,name=double" json:"double,omitempty"`
+	Bool          *bool                  `protobuf:"varint,13,opt,name=bool" json:"bool,omitempty"`
+	String_       *string                `protobuf:"bytes,14,opt,name=string" json:"string,omitempty"`
+	Bytes         []byte                 `protobuf:"bytes,15,opt,name=bytes" json:"bytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Node) Reset() {
+	*x = Node{}
+	mi := &file_internal_testprotos_lazy_lazy_tree_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Node) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Node) ProtoMessage() {}
+
+func (x *Node) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_lazy_lazy_tree_proto_msgTypes[0]
+	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 Node.ProtoReflect.Descriptor instead.
+func (*Node) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_lazy_lazy_tree_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Node) GetNested() *Node {
+	if x != nil {
+		return x.Nested
+	}
+	return nil
+}
+
+func (x *Node) GetInt32() int32 {
+	if x != nil && x.Int32 != nil {
+		return *x.Int32
+	}
+	return 0
+}
+
+func (x *Node) GetInt64() int64 {
+	if x != nil && x.Int64 != nil {
+		return *x.Int64
+	}
+	return 0
+}
+
+func (x *Node) GetUint32() uint32 {
+	if x != nil && x.Uint32 != nil {
+		return *x.Uint32
+	}
+	return 0
+}
+
+func (x *Node) GetUint64() uint64 {
+	if x != nil && x.Uint64 != nil {
+		return *x.Uint64
+	}
+	return 0
+}
+
+func (x *Node) GetSint32() int32 {
+	if x != nil && x.Sint32 != nil {
+		return *x.Sint32
+	}
+	return 0
+}
+
+func (x *Node) GetSint64() int64 {
+	if x != nil && x.Sint64 != nil {
+		return *x.Sint64
+	}
+	return 0
+}
+
+func (x *Node) GetFixed32() uint32 {
+	if x != nil && x.Fixed32 != nil {
+		return *x.Fixed32
+	}
+	return 0
+}
+
+func (x *Node) GetFixed64() uint64 {
+	if x != nil && x.Fixed64 != nil {
+		return *x.Fixed64
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed32() int32 {
+	if x != nil && x.Sfixed32 != nil {
+		return *x.Sfixed32
+	}
+	return 0
+}
+
+func (x *Node) GetSfixed64() int64 {
+	if x != nil && x.Sfixed64 != nil {
+		return *x.Sfixed64
+	}
+	return 0
+}
+
+func (x *Node) GetFloat() float32 {
+	if x != nil && x.Float != nil {
+		return *x.Float
+	}
+	return 0
+}
+
+func (x *Node) GetDouble() float64 {
+	if x != nil && x.Double != nil {
+		return *x.Double
+	}
+	return 0
+}
+
+func (x *Node) GetBool() bool {
+	if x != nil && x.Bool != nil {
+		return *x.Bool
+	}
+	return false
+}
+
+func (x *Node) GetString_() string {
+	if x != nil && x.String_ != nil {
+		return *x.String_
+	}
+	return ""
+}
+
+func (x *Node) GetBytes() []byte {
+	if x != nil {
+		return x.Bytes
+	}
+	return nil
+}
+
+var File_internal_testprotos_lazy_lazy_tree_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_lazy_lazy_tree_proto_rawDesc = []byte{
+	0x0a, 0x28, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x74, 0x72, 0x65, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6c, 0x61, 0x7a, 0x79,
+	0x5f, 0x74, 0x72, 0x65, 0x65, 0x22, 0x9b, 0x03, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2b,
+	0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
+	0x2e, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x42,
+	0x02, 0x28, 0x01, 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x16, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52,
+	0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x08, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x02, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
+	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a,
+	0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79,
+	0x74, 0x65, 0x73, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
+	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x61, 0x7a, 0x79, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var (
+	file_internal_testprotos_lazy_lazy_tree_proto_rawDescOnce sync.Once
+	file_internal_testprotos_lazy_lazy_tree_proto_rawDescData = file_internal_testprotos_lazy_lazy_tree_proto_rawDesc
+)
+
+func file_internal_testprotos_lazy_lazy_tree_proto_rawDescGZIP() []byte {
+	file_internal_testprotos_lazy_lazy_tree_proto_rawDescOnce.Do(func() {
+		file_internal_testprotos_lazy_lazy_tree_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_lazy_lazy_tree_proto_rawDescData)
+	})
+	return file_internal_testprotos_lazy_lazy_tree_proto_rawDescData
+}
+
+var file_internal_testprotos_lazy_lazy_tree_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_lazy_lazy_tree_proto_goTypes = []any{
+	(*Node)(nil), // 0: lazy_tree.Node
+}
+var file_internal_testprotos_lazy_lazy_tree_proto_depIdxs = []int32{
+	0, // 0: lazy_tree.Node.nested:type_name -> lazy_tree.Node
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_lazy_lazy_tree_proto_init() }
+func file_internal_testprotos_lazy_lazy_tree_proto_init() {
+	if File_internal_testprotos_lazy_lazy_tree_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_lazy_lazy_tree_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_lazy_lazy_tree_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_lazy_lazy_tree_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_lazy_lazy_tree_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_lazy_lazy_tree_proto = out.File
+	file_internal_testprotos_lazy_lazy_tree_proto_rawDesc = nil
+	file_internal_testprotos_lazy_lazy_tree_proto_goTypes = nil
+	file_internal_testprotos_lazy_lazy_tree_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
index 2aa69e4..cb51c6c 100644
--- a/internal/testprotos/legacy/legacy.pb.go
+++ b/internal/testprotos/legacy/legacy.pb.go
@@ -27,22 +27,21 @@
 )
 
 type Legacy struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState            `protogen:"open.v1"`
+	F1            *proto2_20160225_2fc053c5.Message `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
+	F2            *proto3_20160225_2fc053c5.Message `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
+	F3            *proto2_20160519_a4ab9ec5.Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
+	F4            *proto3_20160519_a4ab9ec5.Message `protobuf:"bytes,4,opt,name=f4,proto3" json:"f4,omitempty"`
+	F5            *proto2_20180125_92554152.Message `protobuf:"bytes,5,opt,name=f5,proto3" json:"f5,omitempty"`
+	F6            *proto3_20180125_92554152.Message `protobuf:"bytes,6,opt,name=f6,proto3" json:"f6,omitempty"`
+	F7            *proto2_20180430_b4deda09.Message `protobuf:"bytes,7,opt,name=f7,proto3" json:"f7,omitempty"`
+	F8            *proto3_20180430_b4deda09.Message `protobuf:"bytes,8,opt,name=f8,proto3" json:"f8,omitempty"`
+	F9            *proto2_20180814_aa810b61.Message `protobuf:"bytes,9,opt,name=f9,proto3" json:"f9,omitempty"`
+	F10           *proto3_20180814_aa810b61.Message `protobuf:"bytes,10,opt,name=f10,proto3" json:"f10,omitempty"`
+	F11           *proto2_20190205_c823c79e.Message `protobuf:"bytes,11,opt,name=f11,proto3" json:"f11,omitempty"`
+	F12           *proto3_20190205_c823c79e.Message `protobuf:"bytes,12,opt,name=f12,proto3" json:"f12,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	F1  *proto2_20160225_2fc053c5.Message `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2  *proto3_20160225_2fc053c5.Message `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
-	F3  *proto2_20160519_a4ab9ec5.Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	F4  *proto3_20160519_a4ab9ec5.Message `protobuf:"bytes,4,opt,name=f4,proto3" json:"f4,omitempty"`
-	F5  *proto2_20180125_92554152.Message `protobuf:"bytes,5,opt,name=f5,proto3" json:"f5,omitempty"`
-	F6  *proto3_20180125_92554152.Message `protobuf:"bytes,6,opt,name=f6,proto3" json:"f6,omitempty"`
-	F7  *proto2_20180430_b4deda09.Message `protobuf:"bytes,7,opt,name=f7,proto3" json:"f7,omitempty"`
-	F8  *proto3_20180430_b4deda09.Message `protobuf:"bytes,8,opt,name=f8,proto3" json:"f8,omitempty"`
-	F9  *proto2_20180814_aa810b61.Message `protobuf:"bytes,9,opt,name=f9,proto3" json:"f9,omitempty"`
-	F10 *proto3_20180814_aa810b61.Message `protobuf:"bytes,10,opt,name=f10,proto3" json:"f10,omitempty"`
-	F11 *proto2_20190205_c823c79e.Message `protobuf:"bytes,11,opt,name=f11,proto3" json:"f11,omitempty"`
-	F12 *proto3_20190205_c823c79e.Message `protobuf:"bytes,12,opt,name=f12,proto3" json:"f12,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Legacy) Reset() {
diff --git a/internal/testprotos/messageset/messagesetpb/message_set.pb.go b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
index f6d756e..95b52b3 100644
--- a/internal/testprotos/messageset/messagesetpb/message_set.pb.go
+++ b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
@@ -15,10 +15,10 @@
 )
 
 type MessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *MessageSet) Reset() {
@@ -52,11 +52,10 @@
 }
 
 type MessageSetContainer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MessageSet    *MessageSet            `protobuf:"bytes,1,opt,name=message_set,json=messageSet" json:"message_set,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	MessageSet *MessageSet `protobuf:"bytes,1,opt,name=message_set,json=messageSet" json:"message_set,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MessageSetContainer) Reset() {
@@ -104,20 +103,20 @@
 	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65,
 	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 	0x18, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x22, 0x28, 0x0a, 0x0a, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0xd1, 0xdc, 0xfc,
-	0x01, 0x2a, 0x0c, 0x08, 0x80, 0xd1, 0xdc, 0xfc, 0x01, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a,
-	0x02, 0x08, 0x01, 0x22, 0x5c, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff,
+	0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x5c, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0b,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
+	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
+	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x62, 0x08, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 }
 
 var (
diff --git a/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.pb.go b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.pb.go
new file mode 100644
index 0000000..4b59ec7
--- /dev/null
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.pb.go
@@ -0,0 +1,199 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.proto
+
+package messagesetpb_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type MessageSet struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *MessageSet) Reset() {
+	*x = MessageSet{}
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSet) ProtoMessage() {}
+
+func (x *MessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type MessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 MessageSet_builder) Build() *MessageSet {
+	m0 := &MessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSetContainer struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	MessageSet    *MessageSet            `protobuf:"bytes,1,opt,name=message_set,json=messageSet" json:"message_set,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MessageSetContainer) Reset() {
+	*x = MessageSetContainer{}
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSetContainer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSetContainer) ProtoMessage() {}
+
+func (x *MessageSetContainer) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *MessageSetContainer) GetMessageSet() *MessageSet {
+	if x != nil {
+		return x.MessageSet
+	}
+	return nil
+}
+
+func (x *MessageSetContainer) SetMessageSet(v *MessageSet) {
+	x.MessageSet = v
+}
+
+func (x *MessageSetContainer) HasMessageSet() bool {
+	if x == nil {
+		return false
+	}
+	return x.MessageSet != nil
+}
+
+func (x *MessageSetContainer) ClearMessageSet() {
+	x.MessageSet = nil
+}
+
+type MessageSetContainer_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	MessageSet *MessageSet
+}
+
+func (b0 MessageSetContainer_builder) Build() *MessageSetContainer {
+	m0 := &MessageSetContainer{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.MessageSet = b.MessageSet
+	return m0
+}
+
+var File_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x58, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
+	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x1a, 0x21, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f,
+	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1a,
+	0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04,
+	0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x63, 0x0a, 0x13, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+	0x72, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42,
+	0x64, 0x5a, 0x5a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05,
+	0xd2, 0x3e, 0x02, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
+	0xe8, 0x07,
+}
+
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_goTypes = []any{
+	(*MessageSet)(nil),          // 0: hybrid.goproto.proto.messageset.MessageSet
+	(*MessageSetContainer)(nil), // 1: hybrid.goproto.proto.messageset.MessageSetContainer
+}
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_depIdxs = []int32{
+	0, // 0: hybrid.goproto.proto.messageset.MessageSetContainer.message_set:type_name -> hybrid.goproto.proto.messageset.MessageSet
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_init()
+}
+func file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_init() {
+	if File_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto = out.File
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_goTypes = nil
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_hybrid_message_set_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.proto b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.proto
new file mode 100644
index 0000000..e60e4da
--- /dev/null
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.proto
@@ -0,0 +1,21 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.messageset;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message MessageSet {
+  option message_set_wire_format = true;
+
+  extensions 4 to max;
+}
+
+message MessageSetContainer {
+  MessageSet message_set = 1;
+}
\ No newline at end of file
diff --git a/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.pb.go b/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.pb.go
new file mode 100644
index 0000000..ba2b0db
--- /dev/null
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.pb.go
@@ -0,0 +1,199 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.proto
+
+package messagesetpb_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type MessageSet struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *MessageSet) Reset() {
+	*x = MessageSet{}
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSet) ProtoMessage() {}
+
+func (x *MessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type MessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 MessageSet_builder) Build() *MessageSet {
+	m0 := &MessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSetContainer struct {
+	state                 protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_MessageSet *MessageSet            `protobuf:"bytes,1,opt,name=message_set,json=messageSet" json:"message_set,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *MessageSetContainer) Reset() {
+	*x = MessageSetContainer{}
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSetContainer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSetContainer) ProtoMessage() {}
+
+func (x *MessageSetContainer) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *MessageSetContainer) GetMessageSet() *MessageSet {
+	if x != nil {
+		return x.xxx_hidden_MessageSet
+	}
+	return nil
+}
+
+func (x *MessageSetContainer) SetMessageSet(v *MessageSet) {
+	x.xxx_hidden_MessageSet = v
+}
+
+func (x *MessageSetContainer) HasMessageSet() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_MessageSet != nil
+}
+
+func (x *MessageSetContainer) ClearMessageSet() {
+	x.xxx_hidden_MessageSet = nil
+}
+
+type MessageSetContainer_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	MessageSet *MessageSet
+}
+
+func (b0 MessageSetContainer_builder) Build() *MessageSetContainer {
+	m0 := &MessageSetContainer{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_MessageSet = b.MessageSet
+	return m0
+}
+
+var File_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_rawDesc = []byte{
+	0x0a, 0x58, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
+	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x1a, 0x21, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f,
+	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1a,
+	0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04,
+	0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x63, 0x0a, 0x13, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+	0x72, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42,
+	0x64, 0x5a, 0x5a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05,
+	0xd2, 0x3e, 0x02, 0x10, 0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
+	0xe8, 0x07,
+}
+
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_goTypes = []any{
+	(*MessageSet)(nil),          // 0: opaque.goproto.proto.messageset.MessageSet
+	(*MessageSetContainer)(nil), // 1: opaque.goproto.proto.messageset.MessageSetContainer
+}
+var file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_depIdxs = []int32{
+	0, // 0: opaque.goproto.proto.messageset.MessageSetContainer.message_set:type_name -> opaque.goproto.proto.messageset.MessageSet
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_init()
+}
+func file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_init() {
+	if File_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto = out.File
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_rawDesc = nil
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_goTypes = nil
+	file_internal_testprotos_messageset_messagesetpb_messagesetpb_opaque_message_set_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.proto b/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.proto
new file mode 100644
index 0000000..fa47af2
--- /dev/null
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.proto
@@ -0,0 +1,21 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.messageset;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message MessageSet {
+  option message_set_wire_format = true;
+
+  extensions 4 to max;
+}
+
+message MessageSetContainer {
+  MessageSet message_set = 1;
+}
\ No newline at end of file
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
index 622d07d..fd1a2d8 100644
--- a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
+++ b/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
@@ -16,12 +16,11 @@
 )
 
 type Ext1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ext1Field1    *int32                 `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1" json:"ext1_field1,omitempty"`
+	Ext1Field2    *int32                 `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2" json:"ext1_field2,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Ext1Field1 *int32 `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1" json:"ext1_field1,omitempty"`
-	Ext1Field2 *int32 `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2" json:"ext1_field2,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Ext1) Reset() {
@@ -69,11 +68,10 @@
 }
 
 type Ext2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ext2Field1    *int32                 `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1" json:"ext2_field1,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Ext2Field1 *int32 `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1" json:"ext2_field1,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Ext2) Reset() {
@@ -114,11 +112,10 @@
 }
 
 type ExtRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RequiredField1 *int32 `protobuf:"varint,1,req,name=required_field1,json=requiredField1" json:"required_field1,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	RequiredField1 *int32                 `protobuf:"varint,1,req,name=required_field1,json=requiredField1" json:"required_field1,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *ExtRequired) Reset() {
@@ -159,9 +156,9 @@
 }
 
 type ExtLargeNumber struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtLargeNumber) Reset() {
@@ -274,33 +271,34 @@
 	0x53, 0x65, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
 	0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x32, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x32, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x45,
-	0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x32, 0x22, 0xc4, 0x01, 0x0a, 0x0b, 0x45,
+	0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x65,
 	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x84, 0x01, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
-	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12,
-	0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x52, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
-	0x78, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x45,
-	0x78, 0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x84, 0x01,
-	0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x84, 0x01, 0x0a, 0x17, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
-	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x80, 0x80, 0x80,
-	0x80, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
-	0x74, 0x2e, 0x45, 0x78, 0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
-	0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x6c,
-	0x61, 0x72, 0x67, 0x65, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
-	0x74, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62,
+	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45,
+	0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x15, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75,
+	0x6d, 0x62, 0x65, 0x72, 0x32, 0x84, 0x01, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x12, 0x24, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x18, 0x80, 0x80, 0x80, 0x80, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x4c, 0x61, 0x72, 0x67,
+	0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x42, 0x45, 0x5a, 0x43, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74,
+	0x70, 0x62, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 }
 
 var (
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.pb.go
new file mode 100644
index 0000000..7594a85
--- /dev/null
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.pb.go
@@ -0,0 +1,461 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto
+
+package msetextpb_hybrid
+
+import (
+	messagesetpb_hybrid "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Ext1 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Ext1Field1    *int32                 `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1" json:"ext1_field1,omitempty"`
+	Ext1Field2    *int32                 `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2" json:"ext1_field2,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Ext1) Reset() {
+	*x = Ext1{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ext1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ext1) ProtoMessage() {}
+
+func (x *Ext1) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Ext1) GetExt1Field1() int32 {
+	if x != nil && x.Ext1Field1 != nil {
+		return *x.Ext1Field1
+	}
+	return 0
+}
+
+func (x *Ext1) GetExt1Field2() int32 {
+	if x != nil && x.Ext1Field2 != nil {
+		return *x.Ext1Field2
+	}
+	return 0
+}
+
+func (x *Ext1) SetExt1Field1(v int32) {
+	x.Ext1Field1 = &v
+}
+
+func (x *Ext1) SetExt1Field2(v int32) {
+	x.Ext1Field2 = &v
+}
+
+func (x *Ext1) HasExt1Field1() bool {
+	if x == nil {
+		return false
+	}
+	return x.Ext1Field1 != nil
+}
+
+func (x *Ext1) HasExt1Field2() bool {
+	if x == nil {
+		return false
+	}
+	return x.Ext1Field2 != nil
+}
+
+func (x *Ext1) ClearExt1Field1() {
+	x.Ext1Field1 = nil
+}
+
+func (x *Ext1) ClearExt1Field2() {
+	x.Ext1Field2 = nil
+}
+
+type Ext1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Ext1Field1 *int32
+	Ext1Field2 *int32
+}
+
+func (b0 Ext1_builder) Build() *Ext1 {
+	m0 := &Ext1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Ext1Field1 = b.Ext1Field1
+	x.Ext1Field2 = b.Ext1Field2
+	return m0
+}
+
+type Ext2 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Ext2Field1    *int32                 `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1" json:"ext2_field1,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Ext2) Reset() {
+	*x = Ext2{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ext2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ext2) ProtoMessage() {}
+
+func (x *Ext2) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Ext2) GetExt2Field1() int32 {
+	if x != nil && x.Ext2Field1 != nil {
+		return *x.Ext2Field1
+	}
+	return 0
+}
+
+func (x *Ext2) SetExt2Field1(v int32) {
+	x.Ext2Field1 = &v
+}
+
+func (x *Ext2) HasExt2Field1() bool {
+	if x == nil {
+		return false
+	}
+	return x.Ext2Field1 != nil
+}
+
+func (x *Ext2) ClearExt2Field1() {
+	x.Ext2Field1 = nil
+}
+
+type Ext2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Ext2Field1 *int32
+}
+
+func (b0 Ext2_builder) Build() *Ext2 {
+	m0 := &Ext2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Ext2Field1 = b.Ext2Field1
+	return m0
+}
+
+type ExtRequired struct {
+	state          protoimpl.MessageState `protogen:"hybrid.v1"`
+	RequiredField1 *int32                 `protobuf:"varint,1,req,name=required_field1,json=requiredField1" json:"required_field1,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *ExtRequired) Reset() {
+	*x = ExtRequired{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtRequired) ProtoMessage() {}
+
+func (x *ExtRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ExtRequired) GetRequiredField1() int32 {
+	if x != nil && x.RequiredField1 != nil {
+		return *x.RequiredField1
+	}
+	return 0
+}
+
+func (x *ExtRequired) SetRequiredField1(v int32) {
+	x.RequiredField1 = &v
+}
+
+func (x *ExtRequired) HasRequiredField1() bool {
+	if x == nil {
+		return false
+	}
+	return x.RequiredField1 != nil
+}
+
+func (x *ExtRequired) ClearRequiredField1() {
+	x.RequiredField1 = nil
+}
+
+type ExtRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RequiredField1 *int32
+}
+
+func (b0 ExtRequired_builder) Build() *ExtRequired {
+	m0 := &ExtRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.RequiredField1 = b.RequiredField1
+	return m0
+}
+
+type ExtLargeNumber struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ExtLargeNumber) Reset() {
+	*x = ExtLargeNumber{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtLargeNumber) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtLargeNumber) ProtoMessage() {}
+
+func (x *ExtLargeNumber) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ExtLargeNumber_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ExtLargeNumber_builder) Build() *ExtLargeNumber {
+	m0 := &ExtLargeNumber{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*messagesetpb_hybrid.MessageSet)(nil),
+		ExtensionType: (*Ext1)(nil),
+		Field:         1000,
+		Name:          "hybrid.goproto.proto.messageset.Ext1.message_set_ext1",
+		Tag:           "bytes,1000,opt,name=message_set_ext1",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_hybrid.MessageSet)(nil),
+		ExtensionType: (*Ext2)(nil),
+		Field:         1001,
+		Name:          "hybrid.goproto.proto.messageset.Ext2.message_set_ext2",
+		Tag:           "bytes,1001,opt,name=message_set_ext2",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_hybrid.MessageSet)(nil),
+		ExtensionType: (*ExtRequired)(nil),
+		Field:         1002,
+		Name:          "hybrid.goproto.proto.messageset.ExtRequired.message_set_extrequired",
+		Tag:           "bytes,1002,opt,name=message_set_extrequired",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_hybrid.MessageSet)(nil),
+		ExtensionType: (*ExtLargeNumber)(nil),
+		Field:         536870912,
+		Name:          "hybrid.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge",
+		Tag:           "bytes,536870912,opt,name=message_set_extlarge",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto",
+	},
+}
+
+// Extension fields to messagesetpb_hybrid.MessageSet.
+var (
+	// optional hybrid.goproto.proto.messageset.Ext1 message_set_ext1 = 1000;
+	E_Ext1_MessageSetExt1 = &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes[0]
+	// optional hybrid.goproto.proto.messageset.Ext2 message_set_ext2 = 1001;
+	E_Ext2_MessageSetExt2 = &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes[1]
+	// optional hybrid.goproto.proto.messageset.ExtRequired message_set_extrequired = 1002;
+	E_ExtRequired_MessageSetExtrequired = &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes[2]
+	// optional hybrid.goproto.proto.messageset.ExtLargeNumber message_set_extlarge = 536870912;
+	E_ExtLargeNumber_MessageSetExtlarge = &file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes[3] // 1<<29
+)
+
+var File_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
+	0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65,
+	0x78, 0x74, 0x70, 0x62, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x6d, 0x73, 0x65, 0x74,
+	0x65, 0x78, 0x74, 0x70, 0x62, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x1f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x65, 0x74, 0x1a, 0x58, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x65, 0x74, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62,
+	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xc7, 0x01, 0x0a, 0x04, 0x45, 0x78, 0x74, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74,
+	0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78,
+	0x74, 0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0a, 0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x7d, 0x0a, 0x10, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x31, 0x12,
+	0x2b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
+	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xe8, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x31, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x31, 0x22, 0xa6, 0x01, 0x0a, 0x04, 0x45,
+	0x78, 0x74, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x32, 0x5f, 0x66, 0x69, 0x65, 0x6c,
+	0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x32, 0x46, 0x69,
+	0x65, 0x6c, 0x64, 0x31, 0x32, 0x7d, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x32, 0x12, 0x2b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45,
+	0x78, 0x74, 0x32, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x32, 0x22, 0xd2, 0x01, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f,
+	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x31, 0x32, 0x92, 0x01, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12,
+	0x2b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
+	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x52, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
+	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x74,
+	0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x92, 0x01, 0x0a, 0x14,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x6c,
+	0x61, 0x72, 0x67, 0x65, 0x12, 0x2b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x18, 0x80, 0x80, 0x80, 0x80, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78,
+	0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x12, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x6c, 0x61, 0x72, 0x67, 0x65,
+	0x42, 0x5e, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x73,
+	0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70,
+	0x62, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_goTypes = []any{
+	(*Ext1)(nil),                           // 0: hybrid.goproto.proto.messageset.Ext1
+	(*Ext2)(nil),                           // 1: hybrid.goproto.proto.messageset.Ext2
+	(*ExtRequired)(nil),                    // 2: hybrid.goproto.proto.messageset.ExtRequired
+	(*ExtLargeNumber)(nil),                 // 3: hybrid.goproto.proto.messageset.ExtLargeNumber
+	(*messagesetpb_hybrid.MessageSet)(nil), // 4: hybrid.goproto.proto.messageset.MessageSet
+}
+var file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_depIdxs = []int32{
+	4, // 0: hybrid.goproto.proto.messageset.Ext1.message_set_ext1:extendee -> hybrid.goproto.proto.messageset.MessageSet
+	4, // 1: hybrid.goproto.proto.messageset.Ext2.message_set_ext2:extendee -> hybrid.goproto.proto.messageset.MessageSet
+	4, // 2: hybrid.goproto.proto.messageset.ExtRequired.message_set_extrequired:extendee -> hybrid.goproto.proto.messageset.MessageSet
+	4, // 3: hybrid.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge:extendee -> hybrid.goproto.proto.messageset.MessageSet
+	0, // 4: hybrid.goproto.proto.messageset.Ext1.message_set_ext1:type_name -> hybrid.goproto.proto.messageset.Ext1
+	1, // 5: hybrid.goproto.proto.messageset.Ext2.message_set_ext2:type_name -> hybrid.goproto.proto.messageset.Ext2
+	2, // 6: hybrid.goproto.proto.messageset.ExtRequired.message_set_extrequired:type_name -> hybrid.goproto.proto.messageset.ExtRequired
+	3, // 7: hybrid.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge:type_name -> hybrid.goproto.proto.messageset.ExtLargeNumber
+	8, // [8:8] is the sub-list for method output_type
+	8, // [8:8] is the sub-list for method input_type
+	4, // [4:8] is the sub-list for extension type_name
+	0, // [0:4] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_init()
+}
+func file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_init() {
+	if File_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 4,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto = out.File
+	file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_goTypes = nil
+	file_internal_testprotos_messageset_msetextpb_msetextpb_hybrid_msetextpb_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto
new file mode 100644
index 0000000..1124e1d
--- /dev/null
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid.proto
@@ -0,0 +1,41 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.messageset;
+
+import "internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/msetextpb/msetextpb_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message Ext1 {
+  extend MessageSet {
+    Ext1 message_set_ext1 = 1000;
+  }
+  int32 ext1_field1 = 1;
+  int32 ext1_field2 = 2;
+}
+
+message Ext2 {
+  extend MessageSet {
+    Ext2 message_set_ext2 = 1001;
+  }
+  int32 ext2_field1 = 1;
+}
+
+message ExtRequired {
+  extend MessageSet {
+    ExtRequired message_set_extrequired = 1002;
+  }
+  int32 required_field1 = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message ExtLargeNumber {
+  extend MessageSet {
+    ExtLargeNumber message_set_extlarge = 536870912;  // 1<<29
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go
new file mode 100644
index 0000000..8f60524
--- /dev/null
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go
@@ -0,0 +1,487 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto
+
+package msetextpb_opaque
+
+import (
+	messagesetpb_opaque "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Ext1 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Ext1Field1  int32                  `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1" json:"ext1_field1,omitempty"`
+	xxx_hidden_Ext1Field2  int32                  `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2" json:"ext1_field2,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Ext1) Reset() {
+	*x = Ext1{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ext1) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ext1) ProtoMessage() {}
+
+func (x *Ext1) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Ext1) GetExt1Field1() int32 {
+	if x != nil {
+		return x.xxx_hidden_Ext1Field1
+	}
+	return 0
+}
+
+func (x *Ext1) GetExt1Field2() int32 {
+	if x != nil {
+		return x.xxx_hidden_Ext1Field2
+	}
+	return 0
+}
+
+func (x *Ext1) SetExt1Field1(v int32) {
+	x.xxx_hidden_Ext1Field1 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *Ext1) SetExt1Field2(v int32) {
+	x.xxx_hidden_Ext1Field2 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *Ext1) HasExt1Field1() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Ext1) HasExt1Field2() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *Ext1) ClearExt1Field1() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Ext1Field1 = 0
+}
+
+func (x *Ext1) ClearExt1Field2() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_Ext1Field2 = 0
+}
+
+type Ext1_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Ext1Field1 *int32
+	Ext1Field2 *int32
+}
+
+func (b0 Ext1_builder) Build() *Ext1 {
+	m0 := &Ext1{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Ext1Field1 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_Ext1Field1 = *b.Ext1Field1
+	}
+	if b.Ext1Field2 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_Ext1Field2 = *b.Ext1Field2
+	}
+	return m0
+}
+
+type Ext2 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Ext2Field1  int32                  `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1" json:"ext2_field1,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Ext2) Reset() {
+	*x = Ext2{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ext2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ext2) ProtoMessage() {}
+
+func (x *Ext2) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Ext2) GetExt2Field1() int32 {
+	if x != nil {
+		return x.xxx_hidden_Ext2Field1
+	}
+	return 0
+}
+
+func (x *Ext2) SetExt2Field1(v int32) {
+	x.xxx_hidden_Ext2Field1 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Ext2) HasExt2Field1() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Ext2) ClearExt2Field1() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Ext2Field1 = 0
+}
+
+type Ext2_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Ext2Field1 *int32
+}
+
+func (b0 Ext2_builder) Build() *Ext2 {
+	m0 := &Ext2{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Ext2Field1 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_Ext2Field1 = *b.Ext2Field1
+	}
+	return m0
+}
+
+type ExtRequired struct {
+	state                     protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_RequiredField1 int32                  `protobuf:"varint,1,req,name=required_field1,json=requiredField1" json:"required_field1,omitempty"`
+	XXX_raceDetectHookData    protoimpl.RaceDetectHookData
+	XXX_presence              [1]uint32
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
+}
+
+func (x *ExtRequired) Reset() {
+	*x = ExtRequired{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtRequired) ProtoMessage() {}
+
+func (x *ExtRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ExtRequired) GetRequiredField1() int32 {
+	if x != nil {
+		return x.xxx_hidden_RequiredField1
+	}
+	return 0
+}
+
+func (x *ExtRequired) SetRequiredField1(v int32) {
+	x.xxx_hidden_RequiredField1 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *ExtRequired) HasRequiredField1() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *ExtRequired) ClearRequiredField1() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_RequiredField1 = 0
+}
+
+type ExtRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RequiredField1 *int32
+}
+
+func (b0 ExtRequired_builder) Build() *ExtRequired {
+	m0 := &ExtRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.RequiredField1 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_RequiredField1 = *b.RequiredField1
+	}
+	return m0
+}
+
+type ExtLargeNumber struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ExtLargeNumber) Reset() {
+	*x = ExtLargeNumber{}
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtLargeNumber) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtLargeNumber) ProtoMessage() {}
+
+func (x *ExtLargeNumber) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ExtLargeNumber_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ExtLargeNumber_builder) Build() *ExtLargeNumber {
+	m0 := &ExtLargeNumber{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*messagesetpb_opaque.MessageSet)(nil),
+		ExtensionType: (*Ext1)(nil),
+		Field:         1000,
+		Name:          "opaque.goproto.proto.messageset.Ext1.message_set_ext1",
+		Tag:           "bytes,1000,opt,name=message_set_ext1",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_opaque.MessageSet)(nil),
+		ExtensionType: (*Ext2)(nil),
+		Field:         1001,
+		Name:          "opaque.goproto.proto.messageset.Ext2.message_set_ext2",
+		Tag:           "bytes,1001,opt,name=message_set_ext2",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_opaque.MessageSet)(nil),
+		ExtensionType: (*ExtRequired)(nil),
+		Field:         1002,
+		Name:          "opaque.goproto.proto.messageset.ExtRequired.message_set_extrequired",
+		Tag:           "bytes,1002,opt,name=message_set_extrequired",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto",
+	},
+	{
+		ExtendedType:  (*messagesetpb_opaque.MessageSet)(nil),
+		ExtensionType: (*ExtLargeNumber)(nil),
+		Field:         536870912,
+		Name:          "opaque.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge",
+		Tag:           "bytes,536870912,opt,name=message_set_extlarge",
+		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto",
+	},
+}
+
+// Extension fields to messagesetpb_opaque.MessageSet.
+var (
+	// optional opaque.goproto.proto.messageset.Ext1 message_set_ext1 = 1000;
+	E_Ext1_MessageSetExt1 = &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes[0]
+	// optional opaque.goproto.proto.messageset.Ext2 message_set_ext2 = 1001;
+	E_Ext2_MessageSetExt2 = &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes[1]
+	// optional opaque.goproto.proto.messageset.ExtRequired message_set_extrequired = 1002;
+	E_ExtRequired_MessageSetExtrequired = &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes[2]
+	// optional opaque.goproto.proto.messageset.ExtLargeNumber message_set_extlarge = 536870912;
+	E_ExtLargeNumber_MessageSetExtlarge = &file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes[3] // 1<<29
+)
+
+var File_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_rawDesc = []byte{
+	0x0a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
+	0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65,
+	0x78, 0x74, 0x70, 0x62, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x6d, 0x73, 0x65, 0x74,
+	0x65, 0x78, 0x74, 0x70, 0x62, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x1f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x65, 0x74, 0x1a, 0x58, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x65, 0x74, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62,
+	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x5f, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xc7, 0x01, 0x0a, 0x04, 0x45, 0x78, 0x74, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74,
+	0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78,
+	0x74, 0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0a, 0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x7d, 0x0a, 0x10, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x31, 0x12,
+	0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
+	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xe8, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x31, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x31, 0x22, 0xa6, 0x01, 0x0a, 0x04, 0x45,
+	0x78, 0x74, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x32, 0x5f, 0x66, 0x69, 0x65, 0x6c,
+	0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x32, 0x46, 0x69,
+	0x65, 0x6c, 0x64, 0x31, 0x32, 0x7d, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x32, 0x12, 0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45,
+	0x78, 0x74, 0x32, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x32, 0x22, 0xd2, 0x01, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f,
+	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x31, 0x32, 0x92, 0x01, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12,
+	0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65,
+	0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x52, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
+	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x74,
+	0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x92, 0x01, 0x0a, 0x14,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x6c,
+	0x61, 0x72, 0x67, 0x65, 0x12, 0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x18, 0x80, 0x80, 0x80, 0x80, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78,
+	0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x12, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x6c, 0x61, 0x72, 0x67, 0x65,
+	0x42, 0x5e, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x73,
+	0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70,
+	0x62, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x03,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_goTypes = []any{
+	(*Ext1)(nil),                           // 0: opaque.goproto.proto.messageset.Ext1
+	(*Ext2)(nil),                           // 1: opaque.goproto.proto.messageset.Ext2
+	(*ExtRequired)(nil),                    // 2: opaque.goproto.proto.messageset.ExtRequired
+	(*ExtLargeNumber)(nil),                 // 3: opaque.goproto.proto.messageset.ExtLargeNumber
+	(*messagesetpb_opaque.MessageSet)(nil), // 4: opaque.goproto.proto.messageset.MessageSet
+}
+var file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_depIdxs = []int32{
+	4, // 0: opaque.goproto.proto.messageset.Ext1.message_set_ext1:extendee -> opaque.goproto.proto.messageset.MessageSet
+	4, // 1: opaque.goproto.proto.messageset.Ext2.message_set_ext2:extendee -> opaque.goproto.proto.messageset.MessageSet
+	4, // 2: opaque.goproto.proto.messageset.ExtRequired.message_set_extrequired:extendee -> opaque.goproto.proto.messageset.MessageSet
+	4, // 3: opaque.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge:extendee -> opaque.goproto.proto.messageset.MessageSet
+	0, // 4: opaque.goproto.proto.messageset.Ext1.message_set_ext1:type_name -> opaque.goproto.proto.messageset.Ext1
+	1, // 5: opaque.goproto.proto.messageset.Ext2.message_set_ext2:type_name -> opaque.goproto.proto.messageset.Ext2
+	2, // 6: opaque.goproto.proto.messageset.ExtRequired.message_set_extrequired:type_name -> opaque.goproto.proto.messageset.ExtRequired
+	3, // 7: opaque.goproto.proto.messageset.ExtLargeNumber.message_set_extlarge:type_name -> opaque.goproto.proto.messageset.ExtLargeNumber
+	8, // [8:8] is the sub-list for method output_type
+	8, // [8:8] is the sub-list for method input_type
+	4, // [4:8] is the sub-list for extension type_name
+	0, // [0:4] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_init()
+}
+func file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_init() {
+	if File_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 4,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto = out.File
+	file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_rawDesc = nil
+	file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_goTypes = nil
+	file_internal_testprotos_messageset_msetextpb_msetextpb_opaque_msetextpb_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto
new file mode 100644
index 0000000..b76522e
--- /dev/null
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.proto
@@ -0,0 +1,41 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.messageset;
+
+import "internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/msetextpb/msetextpb_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message Ext1 {
+  extend MessageSet {
+    Ext1 message_set_ext1 = 1000;
+  }
+  int32 ext1_field1 = 1;
+  int32 ext1_field2 = 2;
+}
+
+message Ext2 {
+  extend MessageSet {
+    Ext2 message_set_ext2 = 1001;
+  }
+  int32 ext2_field1 = 1;
+}
+
+message ExtRequired {
+  extend MessageSet {
+    ExtRequired message_set_extrequired = 1002;
+  }
+  int32 required_field1 = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message ExtLargeNumber {
+  extend MessageSet {
+    ExtLargeNumber message_set_extlarge = 536870912;  // 1<<29
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/mixed/mixed.pb.go b/internal/testprotos/mixed/mixed.pb.go
new file mode 100644
index 0000000..2bc2b56
--- /dev/null
+++ b/internal/testprotos/mixed/mixed.pb.go
@@ -0,0 +1,971 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This testproto explicitly configures the API level of each message.
+//
+// This allows creating mixed trees of proto messages on different API levels.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/mixed/mixed.proto
+
+package mixed
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+	sync "sync"
+)
+
+type Open struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// These fields allow for arbitrary mixing.
+	Open          *Open   `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	Hybrid        *Hybrid `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	Opaque        *Opaque `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	OptionalInt32 *int32  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Open) Reset() {
+	*x = Open{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Open) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Open) ProtoMessage() {}
+
+func (x *Open) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[0]
+	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 Open.ProtoReflect.Descriptor instead.
+func (*Open) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_mixed_mixed_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Open) GetOpen() *Open {
+	if x != nil {
+		return x.Open
+	}
+	return nil
+}
+
+func (x *Open) GetHybrid() *Hybrid {
+	if x != nil {
+		return x.Hybrid
+	}
+	return nil
+}
+
+func (x *Open) GetOpaque() *Opaque {
+	if x != nil {
+		return x.Opaque
+	}
+	return nil
+}
+
+func (x *Open) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+type Hybrid struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// These fields allow for arbitrary mixing.
+	Open          *Open   `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	Hybrid        *Hybrid `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	Opaque        *Opaque `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	OptionalInt32 *int32  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Hybrid) Reset() {
+	*x = Hybrid{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Hybrid) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Hybrid) ProtoMessage() {}
+
+func (x *Hybrid) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Hybrid) GetOpen() *Open {
+	if x != nil {
+		return x.Open
+	}
+	return nil
+}
+
+func (x *Hybrid) GetHybrid() *Hybrid {
+	if x != nil {
+		return x.Hybrid
+	}
+	return nil
+}
+
+func (x *Hybrid) GetOpaque() *Opaque {
+	if x != nil {
+		return x.Opaque
+	}
+	return nil
+}
+
+func (x *Hybrid) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+func (x *Hybrid) SetOpen(v *Open) {
+	x.Open = v
+}
+
+func (x *Hybrid) SetHybrid(v *Hybrid) {
+	x.Hybrid = v
+}
+
+func (x *Hybrid) SetOpaque(v *Opaque) {
+	x.Opaque = v
+}
+
+func (x *Hybrid) SetOptionalInt32(v int32) {
+	x.OptionalInt32 = &v
+}
+
+func (x *Hybrid) HasOpen() bool {
+	if x == nil {
+		return false
+	}
+	return x.Open != nil
+}
+
+func (x *Hybrid) HasHybrid() bool {
+	if x == nil {
+		return false
+	}
+	return x.Hybrid != nil
+}
+
+func (x *Hybrid) HasOpaque() bool {
+	if x == nil {
+		return false
+	}
+	return x.Opaque != nil
+}
+
+func (x *Hybrid) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt32 != nil
+}
+
+func (x *Hybrid) ClearOpen() {
+	x.Open = nil
+}
+
+func (x *Hybrid) ClearHybrid() {
+	x.Hybrid = nil
+}
+
+func (x *Hybrid) ClearOpaque() {
+	x.Opaque = nil
+}
+
+func (x *Hybrid) ClearOptionalInt32() {
+	x.OptionalInt32 = nil
+}
+
+type Hybrid_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// These fields allow for arbitrary mixing.
+	Open          *Open
+	Hybrid        *Hybrid
+	Opaque        *Opaque
+	OptionalInt32 *int32
+}
+
+func (b0 Hybrid_builder) Build() *Hybrid {
+	m0 := &Hybrid{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Open = b.Open
+	x.Hybrid = b.Hybrid
+	x.Opaque = b.Opaque
+	x.OptionalInt32 = b.OptionalInt32
+	return m0
+}
+
+type Opaque struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Open          *Open                  `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	xxx_hidden_Hybrid        *Hybrid                `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	xxx_hidden_Opaque        *Opaque                `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	xxx_hidden_OptionalInt32 int32                  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *Opaque) Reset() {
+	*x = Opaque{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Opaque) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Opaque) ProtoMessage() {}
+
+func (x *Opaque) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Opaque) GetOpen() *Open {
+	if x != nil {
+		return x.xxx_hidden_Open
+	}
+	return nil
+}
+
+func (x *Opaque) GetHybrid() *Hybrid {
+	if x != nil {
+		return x.xxx_hidden_Hybrid
+	}
+	return nil
+}
+
+func (x *Opaque) GetOpaque() *Opaque {
+	if x != nil {
+		return x.xxx_hidden_Opaque
+	}
+	return nil
+}
+
+func (x *Opaque) GetOptionalInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt32
+	}
+	return 0
+}
+
+func (x *Opaque) SetOpen(v *Open) {
+	x.xxx_hidden_Open = v
+}
+
+func (x *Opaque) SetHybrid(v *Hybrid) {
+	x.xxx_hidden_Hybrid = v
+}
+
+func (x *Opaque) SetOpaque(v *Opaque) {
+	x.xxx_hidden_Opaque = v
+}
+
+func (x *Opaque) SetOptionalInt32(v int32) {
+	x.xxx_hidden_OptionalInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 4)
+}
+
+func (x *Opaque) HasOpen() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Open != nil
+}
+
+func (x *Opaque) HasHybrid() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Hybrid != nil
+}
+
+func (x *Opaque) HasOpaque() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Opaque != nil
+}
+
+func (x *Opaque) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *Opaque) ClearOpen() {
+	x.xxx_hidden_Open = nil
+}
+
+func (x *Opaque) ClearHybrid() {
+	x.xxx_hidden_Hybrid = nil
+}
+
+func (x *Opaque) ClearOpaque() {
+	x.xxx_hidden_Opaque = nil
+}
+
+func (x *Opaque) ClearOptionalInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_OptionalInt32 = 0
+}
+
+type Opaque_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// These fields allow for arbitrary mixing.
+	Open          *Open
+	Hybrid        *Hybrid
+	Opaque        *Opaque
+	OptionalInt32 *int32
+}
+
+func (b0 Opaque_builder) Build() *Opaque {
+	m0 := &Opaque{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Open = b.Open
+	x.xxx_hidden_Hybrid = b.Hybrid
+	x.xxx_hidden_Opaque = b.Opaque
+	if b.OptionalInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 4)
+		x.xxx_hidden_OptionalInt32 = *b.OptionalInt32
+	}
+	return m0
+}
+
+type OpenLazy struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// These fields allow for arbitrary mixing.
+	Open          *OpenLazy   `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	Hybrid        *HybridLazy `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	Opaque        *OpaqueLazy `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	OptionalInt32 *int32      `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OpenLazy) Reset() {
+	*x = OpenLazy{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpenLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpenLazy) ProtoMessage() {}
+
+func (x *OpenLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[3]
+	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 OpenLazy.ProtoReflect.Descriptor instead.
+func (*OpenLazy) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_mixed_mixed_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *OpenLazy) GetOpen() *OpenLazy {
+	if x != nil {
+		return x.Open
+	}
+	return nil
+}
+
+func (x *OpenLazy) GetHybrid() *HybridLazy {
+	if x != nil {
+		return x.Hybrid
+	}
+	return nil
+}
+
+func (x *OpenLazy) GetOpaque() *OpaqueLazy {
+	if x != nil {
+		return x.Opaque
+	}
+	return nil
+}
+
+func (x *OpenLazy) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+type HybridLazy struct {
+	state protoimpl.MessageState `protogen:"hybrid.v1"`
+	// These fields allow for arbitrary mixing.
+	Open          *OpenLazy   `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	Hybrid        *HybridLazy `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	Opaque        *OpaqueLazy `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	OptionalInt32 *int32      `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *HybridLazy) Reset() {
+	*x = HybridLazy{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *HybridLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HybridLazy) ProtoMessage() {}
+
+func (x *HybridLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *HybridLazy) GetOpen() *OpenLazy {
+	if x != nil {
+		return x.Open
+	}
+	return nil
+}
+
+func (x *HybridLazy) GetHybrid() *HybridLazy {
+	if x != nil {
+		return x.Hybrid
+	}
+	return nil
+}
+
+func (x *HybridLazy) GetOpaque() *OpaqueLazy {
+	if x != nil {
+		return x.Opaque
+	}
+	return nil
+}
+
+func (x *HybridLazy) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+func (x *HybridLazy) SetOpen(v *OpenLazy) {
+	x.Open = v
+}
+
+func (x *HybridLazy) SetHybrid(v *HybridLazy) {
+	x.Hybrid = v
+}
+
+func (x *HybridLazy) SetOpaque(v *OpaqueLazy) {
+	x.Opaque = v
+}
+
+func (x *HybridLazy) SetOptionalInt32(v int32) {
+	x.OptionalInt32 = &v
+}
+
+func (x *HybridLazy) HasOpen() bool {
+	if x == nil {
+		return false
+	}
+	return x.Open != nil
+}
+
+func (x *HybridLazy) HasHybrid() bool {
+	if x == nil {
+		return false
+	}
+	return x.Hybrid != nil
+}
+
+func (x *HybridLazy) HasOpaque() bool {
+	if x == nil {
+		return false
+	}
+	return x.Opaque != nil
+}
+
+func (x *HybridLazy) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt32 != nil
+}
+
+func (x *HybridLazy) ClearOpen() {
+	x.Open = nil
+}
+
+func (x *HybridLazy) ClearHybrid() {
+	x.Hybrid = nil
+}
+
+func (x *HybridLazy) ClearOpaque() {
+	x.Opaque = nil
+}
+
+func (x *HybridLazy) ClearOptionalInt32() {
+	x.OptionalInt32 = nil
+}
+
+type HybridLazy_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// These fields allow for arbitrary mixing.
+	Open          *OpenLazy
+	Hybrid        *HybridLazy
+	Opaque        *OpaqueLazy
+	OptionalInt32 *int32
+}
+
+func (b0 HybridLazy_builder) Build() *HybridLazy {
+	m0 := &HybridLazy{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Open = b.Open
+	x.Hybrid = b.Hybrid
+	x.Opaque = b.Opaque
+	x.OptionalInt32 = b.OptionalInt32
+	return m0
+}
+
+type OpaqueLazy struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Open          *OpenLazy              `protobuf:"bytes,1,opt,name=open" json:"open,omitempty"`
+	xxx_hidden_Hybrid        *HybridLazy            `protobuf:"bytes,2,opt,name=hybrid" json:"hybrid,omitempty"`
+	xxx_hidden_Opaque        *OpaqueLazy            `protobuf:"bytes,3,opt,name=opaque" json:"opaque,omitempty"`
+	xxx_hidden_OptionalInt32 int32                  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *OpaqueLazy) Reset() {
+	*x = OpaqueLazy{}
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpaqueLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpaqueLazy) ProtoMessage() {}
+
+func (x *OpaqueLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_mixed_mixed_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *OpaqueLazy) GetOpen() *OpenLazy {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 0) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_Open) {
+				protoimpl.X.UnmarshalField(x, 1)
+			}
+			var rv *OpenLazy
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_Open), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *OpaqueLazy) GetHybrid() *HybridLazy {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 1) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_Hybrid) {
+				protoimpl.X.UnmarshalField(x, 2)
+			}
+			var rv *HybridLazy
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_Hybrid), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *OpaqueLazy) GetOpaque() *OpaqueLazy {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 2) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_Opaque) {
+				protoimpl.X.UnmarshalField(x, 3)
+			}
+			var rv *OpaqueLazy
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_Opaque), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *OpaqueLazy) GetOptionalInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt32
+	}
+	return 0
+}
+
+func (x *OpaqueLazy) SetOpen(v *OpenLazy) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Open, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 4)
+	}
+}
+
+func (x *OpaqueLazy) SetHybrid(v *HybridLazy) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Hybrid, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 4)
+	}
+}
+
+func (x *OpaqueLazy) SetOpaque(v *OpaqueLazy) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Opaque, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 4)
+	}
+}
+
+func (x *OpaqueLazy) SetOptionalInt32(v int32) {
+	x.xxx_hidden_OptionalInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 4)
+}
+
+func (x *OpaqueLazy) HasOpen() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *OpaqueLazy) HasHybrid() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *OpaqueLazy) HasOpaque() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *OpaqueLazy) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *OpaqueLazy) ClearOpen() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Open, (*OpenLazy)(nil))
+}
+
+func (x *OpaqueLazy) ClearHybrid() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Hybrid, (*HybridLazy)(nil))
+}
+
+func (x *OpaqueLazy) ClearOpaque() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_Opaque, (*OpaqueLazy)(nil))
+}
+
+func (x *OpaqueLazy) ClearOptionalInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_OptionalInt32 = 0
+}
+
+type OpaqueLazy_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	// These fields allow for arbitrary mixing.
+	Open          *OpenLazy
+	Hybrid        *HybridLazy
+	Opaque        *OpaqueLazy
+	OptionalInt32 *int32
+}
+
+func (b0 OpaqueLazy_builder) Build() *OpaqueLazy {
+	m0 := &OpaqueLazy{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Open != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 4)
+		x.xxx_hidden_Open = b.Open
+	}
+	if b.Hybrid != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 4)
+		x.xxx_hidden_Hybrid = b.Hybrid
+	}
+	if b.Opaque != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 4)
+		x.xxx_hidden_Opaque = b.Opaque
+	}
+	if b.OptionalInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 4)
+		x.xxx_hidden_OptionalInt32 = *b.OptionalInt32
+	}
+	return m0
+}
+
+var File_internal_testprotos_mixed_mixed_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_mixed_mixed_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x2f, 0x6d, 0x69, 0x78, 0x65,
+	0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f,
+	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc,
+	0x01, 0x0a, 0x04, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x52,
+	0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x25, 0x0a,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x3a, 0x07, 0x62, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x22, 0xce, 0x01,
+	0x0a, 0x06, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
+	0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x25,
+	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x07, 0x62, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x22, 0xce,
+	0x01, 0x0a, 0x06, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6f, 0x70, 0x65,
+	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65,
+	0x6e, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12,
+	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x07, 0x62, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x03, 0x22,
+	0xe8, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x34, 0x0a, 0x04,
+	0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70,
+	0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x61,
+	0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x3a,
+	0x0a, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02,
+	0x28, 0x01, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x3a, 0x07, 0x62, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x22, 0xea, 0x01, 0x0a, 0x0a, 0x48,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x34, 0x0a, 0x04, 0x6f, 0x70, 0x65,
+	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65,
+	0x6e, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12,
+	0x3a, 0x0a, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x42,
+	0x02, 0x28, 0x01, 0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52,
+	0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x07,
+	0x62, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x22, 0xea, 0x01, 0x0a, 0x0a, 0x4f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x34, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x61,
+	0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x06,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02, 0x28, 0x01,
+	0x52, 0x06, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x4c, 0x61, 0x7a, 0x79, 0x42, 0x02, 0x28, 0x01, 0x52, 0x06, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x07, 0x62, 0x05, 0xd2,
+	0x3e, 0x02, 0x10, 0x03, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x62, 0x08, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var (
+	file_internal_testprotos_mixed_mixed_proto_rawDescOnce sync.Once
+	file_internal_testprotos_mixed_mixed_proto_rawDescData = file_internal_testprotos_mixed_mixed_proto_rawDesc
+)
+
+func file_internal_testprotos_mixed_mixed_proto_rawDescGZIP() []byte {
+	file_internal_testprotos_mixed_mixed_proto_rawDescOnce.Do(func() {
+		file_internal_testprotos_mixed_mixed_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_mixed_mixed_proto_rawDescData)
+	})
+	return file_internal_testprotos_mixed_mixed_proto_rawDescData
+}
+
+var file_internal_testprotos_mixed_mixed_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_internal_testprotos_mixed_mixed_proto_goTypes = []any{
+	(*Open)(nil),       // 0: goproto.proto.test.Open
+	(*Hybrid)(nil),     // 1: goproto.proto.test.Hybrid
+	(*Opaque)(nil),     // 2: goproto.proto.test.Opaque
+	(*OpenLazy)(nil),   // 3: goproto.proto.test.OpenLazy
+	(*HybridLazy)(nil), // 4: goproto.proto.test.HybridLazy
+	(*OpaqueLazy)(nil), // 5: goproto.proto.test.OpaqueLazy
+}
+var file_internal_testprotos_mixed_mixed_proto_depIdxs = []int32{
+	0,  // 0: goproto.proto.test.Open.open:type_name -> goproto.proto.test.Open
+	1,  // 1: goproto.proto.test.Open.hybrid:type_name -> goproto.proto.test.Hybrid
+	2,  // 2: goproto.proto.test.Open.opaque:type_name -> goproto.proto.test.Opaque
+	0,  // 3: goproto.proto.test.Hybrid.open:type_name -> goproto.proto.test.Open
+	1,  // 4: goproto.proto.test.Hybrid.hybrid:type_name -> goproto.proto.test.Hybrid
+	2,  // 5: goproto.proto.test.Hybrid.opaque:type_name -> goproto.proto.test.Opaque
+	0,  // 6: goproto.proto.test.Opaque.open:type_name -> goproto.proto.test.Open
+	1,  // 7: goproto.proto.test.Opaque.hybrid:type_name -> goproto.proto.test.Hybrid
+	2,  // 8: goproto.proto.test.Opaque.opaque:type_name -> goproto.proto.test.Opaque
+	3,  // 9: goproto.proto.test.OpenLazy.open:type_name -> goproto.proto.test.OpenLazy
+	4,  // 10: goproto.proto.test.OpenLazy.hybrid:type_name -> goproto.proto.test.HybridLazy
+	5,  // 11: goproto.proto.test.OpenLazy.opaque:type_name -> goproto.proto.test.OpaqueLazy
+	3,  // 12: goproto.proto.test.HybridLazy.open:type_name -> goproto.proto.test.OpenLazy
+	4,  // 13: goproto.proto.test.HybridLazy.hybrid:type_name -> goproto.proto.test.HybridLazy
+	5,  // 14: goproto.proto.test.HybridLazy.opaque:type_name -> goproto.proto.test.OpaqueLazy
+	3,  // 15: goproto.proto.test.OpaqueLazy.open:type_name -> goproto.proto.test.OpenLazy
+	4,  // 16: goproto.proto.test.OpaqueLazy.hybrid:type_name -> goproto.proto.test.HybridLazy
+	5,  // 17: goproto.proto.test.OpaqueLazy.opaque:type_name -> goproto.proto.test.OpaqueLazy
+	18, // [18:18] is the sub-list for method output_type
+	18, // [18:18] is the sub-list for method input_type
+	18, // [18:18] is the sub-list for extension type_name
+	18, // [18:18] is the sub-list for extension extendee
+	0,  // [0:18] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_mixed_mixed_proto_init() }
+func file_internal_testprotos_mixed_mixed_proto_init() {
+	if File_internal_testprotos_mixed_mixed_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_mixed_mixed_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_mixed_mixed_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_mixed_mixed_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_mixed_mixed_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_mixed_mixed_proto = out.File
+	file_internal_testprotos_mixed_mixed_proto_rawDesc = nil
+	file_internal_testprotos_mixed_mixed_proto_goTypes = nil
+	file_internal_testprotos_mixed_mixed_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/news/news.pb.go b/internal/testprotos/news/news.pb.go
index 5fbfd26..dbc480a 100644
--- a/internal/testprotos/news/news.pb.go
+++ b/internal/testprotos/news/news.pb.go
@@ -66,17 +66,16 @@
 }
 
 type Article struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Author        string                 `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
+	Date          *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"`
+	Title         string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
+	Content       string                 `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
+	Status        Article_Status         `protobuf:"varint,8,opt,name=status,proto3,enum=google.golang.org.Article_Status" json:"status,omitempty"`
+	Tags          []string               `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
+	Attachments   []*anypb.Any           `protobuf:"bytes,6,rep,name=attachments,proto3" json:"attachments,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Author      string                 `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
-	Date        *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"`
-	Title       string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
-	Content     string                 `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
-	Status      Article_Status         `protobuf:"varint,8,opt,name=status,proto3,enum=google.golang.org.Article_Status" json:"status,omitempty"`
-	Tags        []string               `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
-	Attachments []*anypb.Any           `protobuf:"bytes,6,rep,name=attachments,proto3" json:"attachments,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Article) Reset() {
@@ -159,12 +158,11 @@
 }
 
 type BinaryAttachment struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *BinaryAttachment) Reset() {
@@ -212,12 +210,11 @@
 }
 
 type KeyValueAttachment struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Data          map[string]string      `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields protoimpl.UnknownFields
-
-	Name string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Data map[string]string `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *KeyValueAttachment) Reset() {
diff --git a/internal/testprotos/order/order.pb.go b/internal/testprotos/order/order.pb.go
index b3be370..50ca447 100644
--- a/internal/testprotos/order/order.pb.go
+++ b/internal/testprotos/order/order.pb.go
@@ -17,18 +17,17 @@
 )
 
 type Message struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field_2 *string `protobuf:"bytes,2,opt,name=field_2,json=field2" json:"field_2,omitempty"`
-	Field_1 *string `protobuf:"bytes,1,opt,name=field_1,json=field1" json:"field_1,omitempty"`
-	// Types that are assignable to Oneof_1:
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Field_2 *string                `protobuf:"bytes,2,opt,name=field_2,json=field2" json:"field_2,omitempty"`
+	Field_1 *string                `protobuf:"bytes,1,opt,name=field_1,json=field1" json:"field_1,omitempty"`
+	// Types that are valid to be assigned to Oneof_1:
 	//
 	//	*Message_Field_10
-	Oneof_1  isMessage_Oneof_1 `protobuf_oneof:"oneof_1"`
-	Field_20 *string           `protobuf:"bytes,20,opt,name=field_20,json=field20" json:"field_20,omitempty"`
+	Oneof_1         isMessage_Oneof_1 `protobuf_oneof:"oneof_1"`
+	Field_20        *string           `protobuf:"bytes,20,opt,name=field_20,json=field20" json:"field_20,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
@@ -75,16 +74,18 @@
 	return ""
 }
 
-func (m *Message) GetOneof_1() isMessage_Oneof_1 {
-	if m != nil {
-		return m.Oneof_1
+func (x *Message) GetOneof_1() isMessage_Oneof_1 {
+	if x != nil {
+		return x.Oneof_1
 	}
 	return nil
 }
 
 func (x *Message) GetField_10() string {
-	if x, ok := x.GetOneof_1().(*Message_Field_10); ok {
-		return x.Field_10
+	if x != nil {
+		if x, ok := x.Oneof_1.(*Message_Field_10); ok {
+			return x.Field_10
+		}
 	}
 	return ""
 }
diff --git a/internal/testprotos/race/extender/test.pb.go b/internal/testprotos/race/extender/test.pb.go
index 208e43d..b557c7b 100644
--- a/internal/testprotos/race/extender/test.pb.go
+++ b/internal/testprotos/race/extender/test.pb.go
@@ -16,11 +16,10 @@
 )
 
 type OtherMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	I32           *int32                 `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	I32 *int32 `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OtherMessage) Reset() {
diff --git a/internal/testprotos/race/message/test.pb.go b/internal/testprotos/race/message/test.pb.go
index 809adde..e4ae98a 100644
--- a/internal/testprotos/race/message/test.pb.go
+++ b/internal/testprotos/race/message/test.pb.go
@@ -15,12 +15,11 @@
 )
 
 type MyMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	I32             *int32                 `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	I32 *int32 `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *MyMessage) Reset() {
diff --git a/internal/testprotos/registry/test.pb.go b/internal/testprotos/registry/test.pb.go
index ccf2f52..f17f532 100644
--- a/internal/testprotos/registry/test.pb.go
+++ b/internal/testprotos/registry/test.pb.go
@@ -176,10 +176,10 @@
 }
 
 type Message1 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Message1) Reset() {
@@ -213,9 +213,9 @@
 }
 
 type Message2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message2) Reset() {
@@ -249,9 +249,9 @@
 }
 
 type Message3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message3) Reset() {
@@ -285,11 +285,10 @@
 }
 
 type Message4 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	BoolField     *bool                  `protobuf:"varint,30,opt,name=bool_field,json=boolField" json:"bool_field,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	BoolField *bool `protobuf:"varint,30,opt,name=bool_field,json=boolField" json:"bool_field,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message4) Reset() {
diff --git a/internal/testprotos/required/required.pb.go b/internal/testprotos/required/required.pb.go
index c40392e..60fe27d 100644
--- a/internal/testprotos/required/required.pb.go
+++ b/internal/testprotos/required/required.pb.go
@@ -15,11 +15,10 @@
 )
 
 type Int32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *int32                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Int32) Reset() {
@@ -60,11 +59,10 @@
 }
 
 type Int64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *int64                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *int64 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Int64) Reset() {
@@ -105,11 +103,10 @@
 }
 
 type Uint32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *uint32                `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *uint32 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Uint32) Reset() {
@@ -150,11 +147,10 @@
 }
 
 type Uint64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *uint64                `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *uint64 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Uint64) Reset() {
@@ -195,11 +191,10 @@
 }
 
 type Sint32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *int32                 `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Sint32) Reset() {
@@ -240,11 +235,10 @@
 }
 
 type Sint64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *int64                 `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *int64 `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Sint64) Reset() {
@@ -285,11 +279,10 @@
 }
 
 type Fixed32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *uint32                `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *uint32 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Fixed32) Reset() {
@@ -330,11 +323,10 @@
 }
 
 type Fixed64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *uint64                `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *uint64 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Fixed64) Reset() {
@@ -375,11 +367,10 @@
 }
 
 type Float struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *float32               `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *float32 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Float) Reset() {
@@ -420,11 +411,10 @@
 }
 
 type Double struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *float64               `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *float64 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Double) Reset() {
@@ -465,11 +455,10 @@
 }
 
 type Bool struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *bool                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *bool `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Bool) Reset() {
@@ -510,11 +499,10 @@
 }
 
 type String struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *string                `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *string `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *String) Reset() {
@@ -555,11 +543,10 @@
 }
 
 type Bytes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             []byte                 `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V []byte `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Bytes) Reset() {
@@ -600,11 +587,10 @@
 }
 
 type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *Message_M             `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *Message_M `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message) Reset() {
@@ -645,11 +631,10 @@
 }
 
 type Group struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Group         *Group_Group           `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Group *Group_Group `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Group) Reset() {
@@ -690,9 +675,9 @@
 }
 
 type Message_M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Message_M) Reset() {
@@ -726,11 +711,10 @@
 }
 
 type Group_Group struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	V             *int32                 `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Group_Group) Reset() {
@@ -777,40 +761,48 @@
 	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72,
 	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67,
 	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x15, 0x0a, 0x05, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x76,
-	0x22, 0x15, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x03, 0x52, 0x01, 0x76, 0x22, 0x16, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x01, 0x76, 0x22,
-	0x16, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x04, 0x52, 0x01, 0x76, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x11, 0x52, 0x01, 0x76, 0x22,
-	0x16, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x12, 0x52, 0x01, 0x76, 0x22, 0x17, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x07, 0x52, 0x01, 0x76,
-	0x22, 0x17, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x06, 0x52, 0x01, 0x76, 0x22, 0x15, 0x0a, 0x05, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x02, 0x52, 0x01, 0x76,
-	0x22, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x01, 0x52, 0x01, 0x76, 0x22, 0x14, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x01, 0x76, 0x22, 0x16,
-	0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x01, 0x76, 0x22, 0x15, 0x0a, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
-	0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x01, 0x76, 0x22, 0x43, 0x0a,
-	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x52, 0x01, 0x76, 0x1a, 0x03, 0x0a,
-	0x01, 0x4d, 0x22, 0x5d, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x05, 0x67,
-	0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0a, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x0a, 0x05, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
-	0x76, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x13,
+	0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03,
+	0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x13, 0x0a, 0x01,
+	0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01,
+	0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x13, 0x0a, 0x01,
+	0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01,
+	0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x13, 0x0a, 0x01,
+	0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01,
+	0x76, 0x22, 0x1c, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22,
+	0x1d, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1b,
+	0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x42, 0x79,
+	0x74, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x4a, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x4d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x1a,
+	0x03, 0x0a, 0x01, 0x4d, 0x22, 0x66, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x46, 0x0a,
+	0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x03, 0x28, 0x02, 0x52, 0x05,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c,
+	0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x76, 0x42, 0x39, 0x5a, 0x37,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x70, 0xe8, 0x07,
 }
 
 var (
diff --git a/internal/testprotos/required/required_hybrid/required.hybrid.pb.go b/internal/testprotos/required/required_hybrid/required.hybrid.pb.go
new file mode 100644
index 0000000..6b6b2bb
--- /dev/null
+++ b/internal/testprotos/required/required_hybrid/required.hybrid.pb.go
@@ -0,0 +1,1261 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/required/required_hybrid/required.hybrid.proto
+
+package required_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Int32 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *int32                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Int32) Reset() {
+	*x = Int32{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Int32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Int32) ProtoMessage() {}
+
+func (x *Int32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Int32) GetV() int32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Int32) SetV(v int32) {
+	x.V = &v
+}
+
+func (x *Int32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Int32) ClearV() {
+	x.V = nil
+}
+
+type Int32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Int32_builder) Build() *Int32 {
+	m0 := &Int32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Int64 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *int64                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Int64) Reset() {
+	*x = Int64{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Int64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Int64) ProtoMessage() {}
+
+func (x *Int64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Int64) GetV() int64 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Int64) SetV(v int64) {
+	x.V = &v
+}
+
+func (x *Int64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Int64) ClearV() {
+	x.V = nil
+}
+
+type Int64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int64
+}
+
+func (b0 Int64_builder) Build() *Int64 {
+	m0 := &Int64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Uint32 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *uint32                `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Uint32) Reset() {
+	*x = Uint32{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Uint32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Uint32) ProtoMessage() {}
+
+func (x *Uint32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Uint32) GetV() uint32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Uint32) SetV(v uint32) {
+	x.V = &v
+}
+
+func (x *Uint32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Uint32) ClearV() {
+	x.V = nil
+}
+
+type Uint32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint32
+}
+
+func (b0 Uint32_builder) Build() *Uint32 {
+	m0 := &Uint32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Uint64 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *uint64                `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Uint64) Reset() {
+	*x = Uint64{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Uint64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Uint64) ProtoMessage() {}
+
+func (x *Uint64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Uint64) GetV() uint64 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Uint64) SetV(v uint64) {
+	x.V = &v
+}
+
+func (x *Uint64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Uint64) ClearV() {
+	x.V = nil
+}
+
+type Uint64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint64
+}
+
+func (b0 Uint64_builder) Build() *Uint64 {
+	m0 := &Uint64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Sint32 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *int32                 `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Sint32) Reset() {
+	*x = Sint32{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Sint32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sint32) ProtoMessage() {}
+
+func (x *Sint32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Sint32) GetV() int32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Sint32) SetV(v int32) {
+	x.V = &v
+}
+
+func (x *Sint32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Sint32) ClearV() {
+	x.V = nil
+}
+
+type Sint32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Sint32_builder) Build() *Sint32 {
+	m0 := &Sint32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Sint64 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *int64                 `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Sint64) Reset() {
+	*x = Sint64{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Sint64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sint64) ProtoMessage() {}
+
+func (x *Sint64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Sint64) GetV() int64 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Sint64) SetV(v int64) {
+	x.V = &v
+}
+
+func (x *Sint64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Sint64) ClearV() {
+	x.V = nil
+}
+
+type Sint64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int64
+}
+
+func (b0 Sint64_builder) Build() *Sint64 {
+	m0 := &Sint64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Fixed32 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *uint32                `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Fixed32) Reset() {
+	*x = Fixed32{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Fixed32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fixed32) ProtoMessage() {}
+
+func (x *Fixed32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Fixed32) GetV() uint32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Fixed32) SetV(v uint32) {
+	x.V = &v
+}
+
+func (x *Fixed32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Fixed32) ClearV() {
+	x.V = nil
+}
+
+type Fixed32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint32
+}
+
+func (b0 Fixed32_builder) Build() *Fixed32 {
+	m0 := &Fixed32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Fixed64 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *uint64                `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Fixed64) Reset() {
+	*x = Fixed64{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Fixed64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fixed64) ProtoMessage() {}
+
+func (x *Fixed64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Fixed64) GetV() uint64 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Fixed64) SetV(v uint64) {
+	x.V = &v
+}
+
+func (x *Fixed64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Fixed64) ClearV() {
+	x.V = nil
+}
+
+type Fixed64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint64
+}
+
+func (b0 Fixed64_builder) Build() *Fixed64 {
+	m0 := &Fixed64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Float struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *float32               `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Float) Reset() {
+	*x = Float{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Float) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Float) ProtoMessage() {}
+
+func (x *Float) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Float) GetV() float32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Float) SetV(v float32) {
+	x.V = &v
+}
+
+func (x *Float) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Float) ClearV() {
+	x.V = nil
+}
+
+type Float_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *float32
+}
+
+func (b0 Float_builder) Build() *Float {
+	m0 := &Float{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Double struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *float64               `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Double) Reset() {
+	*x = Double{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Double) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Double) ProtoMessage() {}
+
+func (x *Double) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Double) GetV() float64 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Double) SetV(v float64) {
+	x.V = &v
+}
+
+func (x *Double) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Double) ClearV() {
+	x.V = nil
+}
+
+type Double_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *float64
+}
+
+func (b0 Double_builder) Build() *Double {
+	m0 := &Double{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Bool struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *bool                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Bool) Reset() {
+	*x = Bool{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Bool) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Bool) ProtoMessage() {}
+
+func (x *Bool) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Bool) GetV() bool {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return false
+}
+
+func (x *Bool) SetV(v bool) {
+	x.V = &v
+}
+
+func (x *Bool) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Bool) ClearV() {
+	x.V = nil
+}
+
+type Bool_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *bool
+}
+
+func (b0 Bool_builder) Build() *Bool {
+	m0 := &Bool{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type String struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *string                `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *String) Reset() {
+	*x = String{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *String) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*String) ProtoMessage() {}
+
+func (x *String) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *String) GetV() string {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return ""
+}
+
+func (x *String) SetV(v string) {
+	x.V = &v
+}
+
+func (x *String) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *String) ClearV() {
+	x.V = nil
+}
+
+type String_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *string
+}
+
+func (b0 String_builder) Build() *String {
+	m0 := &String{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Bytes struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             []byte                 `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Bytes) Reset() {
+	*x = Bytes{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Bytes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Bytes) ProtoMessage() {}
+
+func (x *Bytes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Bytes) GetV() []byte {
+	if x != nil {
+		return x.V
+	}
+	return nil
+}
+
+func (x *Bytes) SetV(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.V = v
+}
+
+func (x *Bytes) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Bytes) ClearV() {
+	x.V = nil
+}
+
+type Bytes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V []byte
+}
+
+func (b0 Bytes_builder) Build() *Bytes {
+	m0 := &Bytes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Message struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *Message_M             `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Message) Reset() {
+	*x = Message{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Message) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message) ProtoMessage() {}
+
+func (x *Message) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Message) GetV() *Message_M {
+	if x != nil {
+		return x.V
+	}
+	return nil
+}
+
+func (x *Message) SetV(v *Message_M) {
+	x.V = v
+}
+
+func (x *Message) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Message) ClearV() {
+	x.V = nil
+}
+
+type Message_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *Message_M
+}
+
+func (b0 Message_builder) Build() *Message {
+	m0 := &Message{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+type Group struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Group         *Group_Group           `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Group) Reset() {
+	*x = Group{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Group) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group) ProtoMessage() {}
+
+func (x *Group) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Group) GetGroup() *Group_Group {
+	if x != nil {
+		return x.Group
+	}
+	return nil
+}
+
+func (x *Group) SetGroup(v *Group_Group) {
+	x.Group = v
+}
+
+func (x *Group) HasGroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.Group != nil
+}
+
+func (x *Group) ClearGroup() {
+	x.Group = nil
+}
+
+type Group_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Group *Group_Group
+}
+
+func (b0 Group_builder) Build() *Group {
+	m0 := &Group{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Group = b.Group
+	return m0
+}
+
+type Message_M struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Message_M) Reset() {
+	*x = Message_M{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Message_M) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message_M) ProtoMessage() {}
+
+func (x *Message_M) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type Message_M_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 Message_M_builder) Build() *Message_M {
+	m0 := &Message_M{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type Group_Group struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	V             *int32                 `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Group_Group) Reset() {
+	*x = Group_Group{}
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Group_Group) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group_Group) ProtoMessage() {}
+
+func (x *Group_Group) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Group_Group) GetV() int32 {
+	if x != nil && x.V != nil {
+		return *x.V
+	}
+	return 0
+}
+
+func (x *Group_Group) SetV(v int32) {
+	x.V = &v
+}
+
+func (x *Group_Group) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.V != nil
+}
+
+func (x *Group_Group) ClearV() {
+	x.V = nil
+}
+
+type Group_Group_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Group_Group_builder) Build() *Group_Group {
+	m0 := &Group_Group{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.V = b.V
+	return m0
+}
+
+var File_internal_testprotos_required_required_hybrid_required_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_required_required_hybrid_required_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x42, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74,
+	0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x13,
+	0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03,
+	0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x13, 0x0a, 0x01, 0x76,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76,
+	0x22, 0x1d, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22,
+	0x1b, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x51, 0x0a, 0x07, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2c, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x1a, 0x03, 0x0a, 0x01, 0x4d, 0x22, 0x6d, 0x0a, 0x05,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4d, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x03, 0x28, 0x02, 0x52, 0x05, 0x67,
+	0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x76, 0x42, 0x51, 0x5a, 0x47, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x62, 0x08,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
+var file_internal_testprotos_required_required_hybrid_required_hybrid_proto_goTypes = []any{
+	(*Int32)(nil),       // 0: hybrid.goproto.proto.testrequired.Int32
+	(*Int64)(nil),       // 1: hybrid.goproto.proto.testrequired.Int64
+	(*Uint32)(nil),      // 2: hybrid.goproto.proto.testrequired.Uint32
+	(*Uint64)(nil),      // 3: hybrid.goproto.proto.testrequired.Uint64
+	(*Sint32)(nil),      // 4: hybrid.goproto.proto.testrequired.Sint32
+	(*Sint64)(nil),      // 5: hybrid.goproto.proto.testrequired.Sint64
+	(*Fixed32)(nil),     // 6: hybrid.goproto.proto.testrequired.Fixed32
+	(*Fixed64)(nil),     // 7: hybrid.goproto.proto.testrequired.Fixed64
+	(*Float)(nil),       // 8: hybrid.goproto.proto.testrequired.Float
+	(*Double)(nil),      // 9: hybrid.goproto.proto.testrequired.Double
+	(*Bool)(nil),        // 10: hybrid.goproto.proto.testrequired.Bool
+	(*String)(nil),      // 11: hybrid.goproto.proto.testrequired.String
+	(*Bytes)(nil),       // 12: hybrid.goproto.proto.testrequired.Bytes
+	(*Message)(nil),     // 13: hybrid.goproto.proto.testrequired.Message
+	(*Group)(nil),       // 14: hybrid.goproto.proto.testrequired.Group
+	(*Message_M)(nil),   // 15: hybrid.goproto.proto.testrequired.Message.M
+	(*Group_Group)(nil), // 16: hybrid.goproto.proto.testrequired.Group.Group
+}
+var file_internal_testprotos_required_required_hybrid_required_hybrid_proto_depIdxs = []int32{
+	15, // 0: hybrid.goproto.proto.testrequired.Message.v:type_name -> hybrid.goproto.proto.testrequired.Message.M
+	16, // 1: hybrid.goproto.proto.testrequired.Group.group:type_name -> hybrid.goproto.proto.testrequired.Group.Group
+	2,  // [2:2] is the sub-list for method output_type
+	2,  // [2:2] is the sub-list for method input_type
+	2,  // [2:2] is the sub-list for extension type_name
+	2,  // [2:2] is the sub-list for extension extendee
+	0,  // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_required_required_hybrid_required_hybrid_proto_init() }
+func file_internal_testprotos_required_required_hybrid_required_hybrid_proto_init() {
+	if File_internal_testprotos_required_required_hybrid_required_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_required_required_hybrid_required_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   17,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_required_required_hybrid_required_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_required_required_hybrid_required_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_required_required_hybrid_required_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_required_required_hybrid_required_hybrid_proto = out.File
+	file_internal_testprotos_required_required_hybrid_required_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_required_required_hybrid_required_hybrid_proto_goTypes = nil
+	file_internal_testprotos_required_required_hybrid_required_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/required/required_hybrid/required.hybrid.proto b/internal/testprotos/required/required_hybrid/required.hybrid.proto
new file mode 100644
index 0000000..0b76f5d
--- /dev/null
+++ b/internal/testprotos/required/required_hybrid/required.hybrid.proto
@@ -0,0 +1,79 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.testrequired;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/required/required_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message Int32 {
+  int32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Int64 {
+  int64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Uint32 {
+  uint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Uint64 {
+  uint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Sint32 {
+  sint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Sint64 {
+  sint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Fixed32 {
+  fixed32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Fixed64 {
+  fixed64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Float {
+  float v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Double {
+  double v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Bool {
+  bool v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message String {
+  string v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Bytes {
+  bytes v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Message {
+  message M {}
+  M v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Group {
+  message Group {
+    int32 v = 1;
+  }
+
+  Group group = 1 [
+    features.field_presence = LEGACY_REQUIRED,
+    features.message_encoding = DELIMITED
+  ];
+}
\ No newline at end of file
diff --git a/internal/testprotos/required/required_opaque/required.opaque.pb.go b/internal/testprotos/required/required_opaque/required.opaque.pb.go
new file mode 100644
index 0000000..665ccaa
--- /dev/null
+++ b/internal/testprotos/required/required_opaque/required.opaque.pb.go
@@ -0,0 +1,1362 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/required/required_opaque/required.opaque.proto
+
+package required_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type Int32 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Int32) Reset() {
+	*x = Int32{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Int32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Int32) ProtoMessage() {}
+
+func (x *Int32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Int32) GetV() int32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Int32) SetV(v int32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Int32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Int32) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Int32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Int32_builder) Build() *Int32 {
+	m0 := &Int32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Int64 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           int64                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Int64) Reset() {
+	*x = Int64{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Int64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Int64) ProtoMessage() {}
+
+func (x *Int64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Int64) GetV() int64 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Int64) SetV(v int64) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Int64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Int64) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Int64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int64
+}
+
+func (b0 Int64_builder) Build() *Int64 {
+	m0 := &Int64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Uint32 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           uint32                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Uint32) Reset() {
+	*x = Uint32{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Uint32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Uint32) ProtoMessage() {}
+
+func (x *Uint32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Uint32) GetV() uint32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Uint32) SetV(v uint32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Uint32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Uint32) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Uint32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint32
+}
+
+func (b0 Uint32_builder) Build() *Uint32 {
+	m0 := &Uint32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Uint64 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           uint64                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Uint64) Reset() {
+	*x = Uint64{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Uint64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Uint64) ProtoMessage() {}
+
+func (x *Uint64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Uint64) GetV() uint64 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Uint64) SetV(v uint64) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Uint64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Uint64) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Uint64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint64
+}
+
+func (b0 Uint64_builder) Build() *Uint64 {
+	m0 := &Uint64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Sint32 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           int32                  `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Sint32) Reset() {
+	*x = Sint32{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Sint32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sint32) ProtoMessage() {}
+
+func (x *Sint32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Sint32) GetV() int32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Sint32) SetV(v int32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Sint32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Sint32) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Sint32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Sint32_builder) Build() *Sint32 {
+	m0 := &Sint32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Sint64 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           int64                  `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Sint64) Reset() {
+	*x = Sint64{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Sint64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sint64) ProtoMessage() {}
+
+func (x *Sint64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Sint64) GetV() int64 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Sint64) SetV(v int64) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Sint64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Sint64) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Sint64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int64
+}
+
+func (b0 Sint64_builder) Build() *Sint64 {
+	m0 := &Sint64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Fixed32 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           uint32                 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Fixed32) Reset() {
+	*x = Fixed32{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Fixed32) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fixed32) ProtoMessage() {}
+
+func (x *Fixed32) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Fixed32) GetV() uint32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Fixed32) SetV(v uint32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Fixed32) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Fixed32) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Fixed32_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint32
+}
+
+func (b0 Fixed32_builder) Build() *Fixed32 {
+	m0 := &Fixed32{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Fixed64 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           uint64                 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Fixed64) Reset() {
+	*x = Fixed64{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Fixed64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fixed64) ProtoMessage() {}
+
+func (x *Fixed64) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Fixed64) GetV() uint64 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Fixed64) SetV(v uint64) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Fixed64) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Fixed64) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Fixed64_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *uint64
+}
+
+func (b0 Fixed64_builder) Build() *Fixed64 {
+	m0 := &Fixed64{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Float struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           float32                `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Float) Reset() {
+	*x = Float{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Float) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Float) ProtoMessage() {}
+
+func (x *Float) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Float) GetV() float32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Float) SetV(v float32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Float) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Float) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Float_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *float32
+}
+
+func (b0 Float_builder) Build() *Float {
+	m0 := &Float{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Double struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           float64                `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Double) Reset() {
+	*x = Double{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Double) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Double) ProtoMessage() {}
+
+func (x *Double) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Double) GetV() float64 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Double) SetV(v float64) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Double) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Double) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Double_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *float64
+}
+
+func (b0 Double_builder) Build() *Double {
+	m0 := &Double{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type Bool struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           bool                   `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Bool) Reset() {
+	*x = Bool{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Bool) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Bool) ProtoMessage() {}
+
+func (x *Bool) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Bool) GetV() bool {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return false
+}
+
+func (x *Bool) SetV(v bool) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Bool) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Bool) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = false
+}
+
+type Bool_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *bool
+}
+
+func (b0 Bool_builder) Build() *Bool {
+	m0 := &Bool{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+type String struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           *string                `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *String) Reset() {
+	*x = String{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *String) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*String) ProtoMessage() {}
+
+func (x *String) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *String) GetV() string {
+	if x != nil {
+		if x.xxx_hidden_V != nil {
+			return *x.xxx_hidden_V
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *String) SetV(v string) {
+	x.xxx_hidden_V = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *String) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *String) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = nil
+}
+
+type String_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *string
+}
+
+func (b0 String_builder) Build() *String {
+	m0 := &String{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = b.V
+	}
+	return m0
+}
+
+type Bytes struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           []byte                 `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Bytes) Reset() {
+	*x = Bytes{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Bytes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Bytes) ProtoMessage() {}
+
+func (x *Bytes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Bytes) GetV() []byte {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return nil
+}
+
+func (x *Bytes) SetV(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Bytes) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Bytes) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = nil
+}
+
+type Bytes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V []byte
+}
+
+func (b0 Bytes_builder) Build() *Bytes {
+	m0 := &Bytes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = b.V
+	}
+	return m0
+}
+
+type Message struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V  *Message_M             `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Message) Reset() {
+	*x = Message{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Message) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message) ProtoMessage() {}
+
+func (x *Message) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Message) GetV() *Message_M {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return nil
+}
+
+func (x *Message) SetV(v *Message_M) {
+	x.xxx_hidden_V = v
+}
+
+func (x *Message) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_V != nil
+}
+
+func (x *Message) ClearV() {
+	x.xxx_hidden_V = nil
+}
+
+type Message_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *Message_M
+}
+
+func (b0 Message_builder) Build() *Message {
+	m0 := &Message{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_V = b.V
+	return m0
+}
+
+type Group struct {
+	state            protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Group *Group_Group           `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
+}
+
+func (x *Group) Reset() {
+	*x = Group{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Group) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group) ProtoMessage() {}
+
+func (x *Group) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Group) GetGroup() *Group_Group {
+	if x != nil {
+		return x.xxx_hidden_Group
+	}
+	return nil
+}
+
+func (x *Group) SetGroup(v *Group_Group) {
+	x.xxx_hidden_Group = v
+}
+
+func (x *Group) HasGroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Group != nil
+}
+
+func (x *Group) ClearGroup() {
+	x.xxx_hidden_Group = nil
+}
+
+type Group_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Group *Group_Group
+}
+
+func (b0 Group_builder) Build() *Group {
+	m0 := &Group{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Group = b.Group
+	return m0
+}
+
+type Message_M struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Message_M) Reset() {
+	*x = Message_M{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Message_M) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message_M) ProtoMessage() {}
+
+func (x *Message_M) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type Message_M_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 Message_M_builder) Build() *Message_M {
+	m0 := &Message_M{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type Group_Group struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Group_Group) Reset() {
+	*x = Group_Group{}
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Group_Group) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group_Group) ProtoMessage() {}
+
+func (x *Group_Group) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Group_Group) GetV() int32 {
+	if x != nil {
+		return x.xxx_hidden_V
+	}
+	return 0
+}
+
+func (x *Group_Group) SetV(v int32) {
+	x.xxx_hidden_V = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Group_Group) HasV() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Group_Group) ClearV() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_V = 0
+}
+
+type Group_Group_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	V *int32
+}
+
+func (b0 Group_Group_builder) Build() *Group_Group {
+	m0 := &Group_Group{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.V != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_V = *b.V
+	}
+	return m0
+}
+
+var File_internal_testprotos_required_required_opaque_required_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_required_required_opaque_required_opaque_proto_rawDesc = []byte{
+	0x0a, 0x42, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74,
+	0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x13,
+	0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03,
+	0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1e, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x13, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x13, 0x0a, 0x01, 0x76,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76,
+	0x22, 0x1d, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22,
+	0x1b, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1d, 0x0a, 0x06,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x1c, 0x0a, 0x05, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x22, 0x51, 0x0a, 0x07, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2c, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x76, 0x1a, 0x03, 0x0a, 0x01, 0x4d, 0x22, 0x6d, 0x0a, 0x05,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4d, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x03, 0x28, 0x02, 0x52, 0x05, 0x67,
+	0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a,
+	0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x76, 0x42, 0x51, 0x5a, 0x47, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x03, 0x62, 0x08,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
+var file_internal_testprotos_required_required_opaque_required_opaque_proto_goTypes = []any{
+	(*Int32)(nil),       // 0: opaque.goproto.proto.testrequired.Int32
+	(*Int64)(nil),       // 1: opaque.goproto.proto.testrequired.Int64
+	(*Uint32)(nil),      // 2: opaque.goproto.proto.testrequired.Uint32
+	(*Uint64)(nil),      // 3: opaque.goproto.proto.testrequired.Uint64
+	(*Sint32)(nil),      // 4: opaque.goproto.proto.testrequired.Sint32
+	(*Sint64)(nil),      // 5: opaque.goproto.proto.testrequired.Sint64
+	(*Fixed32)(nil),     // 6: opaque.goproto.proto.testrequired.Fixed32
+	(*Fixed64)(nil),     // 7: opaque.goproto.proto.testrequired.Fixed64
+	(*Float)(nil),       // 8: opaque.goproto.proto.testrequired.Float
+	(*Double)(nil),      // 9: opaque.goproto.proto.testrequired.Double
+	(*Bool)(nil),        // 10: opaque.goproto.proto.testrequired.Bool
+	(*String)(nil),      // 11: opaque.goproto.proto.testrequired.String
+	(*Bytes)(nil),       // 12: opaque.goproto.proto.testrequired.Bytes
+	(*Message)(nil),     // 13: opaque.goproto.proto.testrequired.Message
+	(*Group)(nil),       // 14: opaque.goproto.proto.testrequired.Group
+	(*Message_M)(nil),   // 15: opaque.goproto.proto.testrequired.Message.M
+	(*Group_Group)(nil), // 16: opaque.goproto.proto.testrequired.Group.Group
+}
+var file_internal_testprotos_required_required_opaque_required_opaque_proto_depIdxs = []int32{
+	15, // 0: opaque.goproto.proto.testrequired.Message.v:type_name -> opaque.goproto.proto.testrequired.Message.M
+	16, // 1: opaque.goproto.proto.testrequired.Group.group:type_name -> opaque.goproto.proto.testrequired.Group.Group
+	2,  // [2:2] is the sub-list for method output_type
+	2,  // [2:2] is the sub-list for method input_type
+	2,  // [2:2] is the sub-list for extension type_name
+	2,  // [2:2] is the sub-list for extension extendee
+	0,  // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_required_required_opaque_required_opaque_proto_init() }
+func file_internal_testprotos_required_required_opaque_required_opaque_proto_init() {
+	if File_internal_testprotos_required_required_opaque_required_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_required_required_opaque_required_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   17,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_required_required_opaque_required_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_required_required_opaque_required_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_required_required_opaque_required_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_required_required_opaque_required_opaque_proto = out.File
+	file_internal_testprotos_required_required_opaque_required_opaque_proto_rawDesc = nil
+	file_internal_testprotos_required_required_opaque_required_opaque_proto_goTypes = nil
+	file_internal_testprotos_required_required_opaque_required_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/required/required_opaque/required.opaque.proto b/internal/testprotos/required/required_opaque/required.opaque.proto
new file mode 100644
index 0000000..ccb87c8
--- /dev/null
+++ b/internal/testprotos/required/required_opaque/required.opaque.proto
@@ -0,0 +1,79 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.testrequired;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/required/required_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message Int32 {
+  int32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Int64 {
+  int64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Uint32 {
+  uint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Uint64 {
+  uint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Sint32 {
+  sint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Sint64 {
+  sint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Fixed32 {
+  fixed32 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Fixed64 {
+  fixed64 v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Float {
+  float v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Double {
+  double v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Bool {
+  bool v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message String {
+  string v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Bytes {
+  bytes v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Message {
+  message M {}
+  M v = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message Group {
+  message Group {
+    int32 v = 1;
+  }
+
+  Group group = 1 [
+    features.field_presence = LEGACY_REQUIRED,
+    features.message_encoding = DELIMITED
+  ];
+}
\ No newline at end of file
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 7566852..6dc7639 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -247,10 +247,7 @@
 }
 
 type TestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                     protoimpl.MessageState                 `protogen:"open.v1"`
 	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"`
@@ -331,7 +328,7 @@
 	DefaultBytes       []byte                   `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
 	DefaultNestedEnum  *TestAllTypes_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
 	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=goproto.proto.test.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypes_OneofUint32
 	//	*TestAllTypes_OneofNestedMessage
@@ -346,10 +343,12 @@
 	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
 	// A oneof with exactly one field.
 	//
-	// Types that are assignable to OneofOptional:
+	// Types that are valid to be assigned to OneofOptional:
 	//
 	//	*TestAllTypes_OneofOptionalUint32
 	OneofOptional isTestAllTypes_OneofOptional `protobuf_oneof:"oneof_optional"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for TestAllTypes fields.
@@ -960,93 +959,115 @@
 	return Default_TestAllTypes_DefaultForeignEnum
 }
 
-func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypes) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypes) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypes_FOO
 }
 
 func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
-	if x, ok := x.GetOneofField().(*TestAllTypes_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
-func (m *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
-	if m != nil {
-		return m.OneofOptional
+func (x *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
+	if x != nil {
+		return x.OneofOptional
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
-	if x, ok := x.GetOneofOptional().(*TestAllTypes_OneofOptionalUint32); ok {
-		return x.OneofOptionalUint32
+	if x != nil {
+		if x, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
 	}
 	return 0
 }
@@ -1126,110 +1147,109 @@
 func (*TestAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}
 
 type TestManyMessageFieldsMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	F1            *TestAllTypes          `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2            *TestAllTypes          `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
+	F3            *TestAllTypes          `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	F4            *TestAllTypes          `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	F5            *TestAllTypes          `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
+	F6            *TestAllTypes          `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
+	F7            *TestAllTypes          `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
+	F8            *TestAllTypes          `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
+	F9            *TestAllTypes          `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
+	F10           *TestAllTypes          `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
+	F11           *TestAllTypes          `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
+	F12           *TestAllTypes          `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
+	F13           *TestAllTypes          `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
+	F14           *TestAllTypes          `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
+	F15           *TestAllTypes          `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
+	F16           *TestAllTypes          `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
+	F17           *TestAllTypes          `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
+	F18           *TestAllTypes          `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
+	F19           *TestAllTypes          `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
+	F20           *TestAllTypes          `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
+	F21           *TestAllTypes          `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
+	F22           *TestAllTypes          `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
+	F23           *TestAllTypes          `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
+	F24           *TestAllTypes          `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
+	F25           *TestAllTypes          `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
+	F26           *TestAllTypes          `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
+	F27           *TestAllTypes          `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
+	F28           *TestAllTypes          `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
+	F29           *TestAllTypes          `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
+	F30           *TestAllTypes          `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
+	F31           *TestAllTypes          `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
+	F32           *TestAllTypes          `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
+	F33           *TestAllTypes          `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
+	F34           *TestAllTypes          `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
+	F35           *TestAllTypes          `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
+	F36           *TestAllTypes          `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
+	F37           *TestAllTypes          `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
+	F38           *TestAllTypes          `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
+	F39           *TestAllTypes          `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
+	F40           *TestAllTypes          `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
+	F41           *TestAllTypes          `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
+	F42           *TestAllTypes          `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
+	F43           *TestAllTypes          `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
+	F44           *TestAllTypes          `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
+	F45           *TestAllTypes          `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
+	F46           *TestAllTypes          `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
+	F47           *TestAllTypes          `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
+	F48           *TestAllTypes          `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
+	F49           *TestAllTypes          `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
+	F50           *TestAllTypes          `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
+	F51           *TestAllTypes          `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
+	F52           *TestAllTypes          `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
+	F53           *TestAllTypes          `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
+	F54           *TestAllTypes          `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
+	F55           *TestAllTypes          `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
+	F56           *TestAllTypes          `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
+	F57           *TestAllTypes          `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
+	F58           *TestAllTypes          `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
+	F59           *TestAllTypes          `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
+	F60           *TestAllTypes          `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
+	F61           *TestAllTypes          `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
+	F62           *TestAllTypes          `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
+	F63           *TestAllTypes          `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
+	F64           *TestAllTypes          `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
+	F65           *TestAllTypes          `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
+	F66           *TestAllTypes          `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
+	F67           *TestAllTypes          `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
+	F68           *TestAllTypes          `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
+	F69           *TestAllTypes          `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
+	F70           *TestAllTypes          `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
+	F71           *TestAllTypes          `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
+	F72           *TestAllTypes          `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
+	F73           *TestAllTypes          `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
+	F74           *TestAllTypes          `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
+	F75           *TestAllTypes          `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
+	F76           *TestAllTypes          `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
+	F77           *TestAllTypes          `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
+	F78           *TestAllTypes          `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
+	F79           *TestAllTypes          `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
+	F80           *TestAllTypes          `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
+	F81           *TestAllTypes          `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
+	F82           *TestAllTypes          `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
+	F83           *TestAllTypes          `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
+	F84           *TestAllTypes          `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
+	F85           *TestAllTypes          `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
+	F86           *TestAllTypes          `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
+	F87           *TestAllTypes          `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
+	F88           *TestAllTypes          `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
+	F89           *TestAllTypes          `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
+	F90           *TestAllTypes          `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
+	F91           *TestAllTypes          `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
+	F92           *TestAllTypes          `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
+	F93           *TestAllTypes          `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
+	F94           *TestAllTypes          `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
+	F95           *TestAllTypes          `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
+	F96           *TestAllTypes          `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
+	F97           *TestAllTypes          `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
+	F98           *TestAllTypes          `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
+	F99           *TestAllTypes          `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
+	F100          *TestAllTypes          `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	F1   *TestAllTypes `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2   *TestAllTypes `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
-	F3   *TestAllTypes `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-	F4   *TestAllTypes `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	F5   *TestAllTypes `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
-	F6   *TestAllTypes `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
-	F7   *TestAllTypes `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
-	F8   *TestAllTypes `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
-	F9   *TestAllTypes `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
-	F10  *TestAllTypes `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
-	F11  *TestAllTypes `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
-	F12  *TestAllTypes `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
-	F13  *TestAllTypes `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
-	F14  *TestAllTypes `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
-	F15  *TestAllTypes `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
-	F16  *TestAllTypes `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
-	F17  *TestAllTypes `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
-	F18  *TestAllTypes `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
-	F19  *TestAllTypes `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
-	F20  *TestAllTypes `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
-	F21  *TestAllTypes `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
-	F22  *TestAllTypes `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
-	F23  *TestAllTypes `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
-	F24  *TestAllTypes `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
-	F25  *TestAllTypes `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
-	F26  *TestAllTypes `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
-	F27  *TestAllTypes `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
-	F28  *TestAllTypes `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
-	F29  *TestAllTypes `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
-	F30  *TestAllTypes `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
-	F31  *TestAllTypes `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
-	F32  *TestAllTypes `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
-	F33  *TestAllTypes `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
-	F34  *TestAllTypes `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
-	F35  *TestAllTypes `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
-	F36  *TestAllTypes `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
-	F37  *TestAllTypes `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
-	F38  *TestAllTypes `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
-	F39  *TestAllTypes `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
-	F40  *TestAllTypes `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
-	F41  *TestAllTypes `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
-	F42  *TestAllTypes `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
-	F43  *TestAllTypes `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
-	F44  *TestAllTypes `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
-	F45  *TestAllTypes `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
-	F46  *TestAllTypes `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
-	F47  *TestAllTypes `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
-	F48  *TestAllTypes `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
-	F49  *TestAllTypes `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
-	F50  *TestAllTypes `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
-	F51  *TestAllTypes `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
-	F52  *TestAllTypes `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
-	F53  *TestAllTypes `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
-	F54  *TestAllTypes `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
-	F55  *TestAllTypes `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
-	F56  *TestAllTypes `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
-	F57  *TestAllTypes `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
-	F58  *TestAllTypes `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
-	F59  *TestAllTypes `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
-	F60  *TestAllTypes `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
-	F61  *TestAllTypes `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
-	F62  *TestAllTypes `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
-	F63  *TestAllTypes `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
-	F64  *TestAllTypes `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
-	F65  *TestAllTypes `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
-	F66  *TestAllTypes `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
-	F67  *TestAllTypes `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
-	F68  *TestAllTypes `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
-	F69  *TestAllTypes `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
-	F70  *TestAllTypes `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
-	F71  *TestAllTypes `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
-	F72  *TestAllTypes `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
-	F73  *TestAllTypes `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
-	F74  *TestAllTypes `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
-	F75  *TestAllTypes `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
-	F76  *TestAllTypes `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
-	F77  *TestAllTypes `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
-	F78  *TestAllTypes `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
-	F79  *TestAllTypes `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
-	F80  *TestAllTypes `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
-	F81  *TestAllTypes `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
-	F82  *TestAllTypes `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
-	F83  *TestAllTypes `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
-	F84  *TestAllTypes `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
-	F85  *TestAllTypes `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
-	F86  *TestAllTypes `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
-	F87  *TestAllTypes `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
-	F88  *TestAllTypes `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
-	F89  *TestAllTypes `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
-	F90  *TestAllTypes `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
-	F91  *TestAllTypes `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
-	F92  *TestAllTypes `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
-	F93  *TestAllTypes `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
-	F94  *TestAllTypes `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
-	F95  *TestAllTypes `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
-	F96  *TestAllTypes `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
-	F97  *TestAllTypes `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
-	F98  *TestAllTypes `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
-	F99  *TestAllTypes `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
-	F100 *TestAllTypes `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestManyMessageFieldsMessage) Reset() {
@@ -1964,16 +1984,15 @@
 
 // Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
 type TestDeprecatedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
 	DeprecatedInt32 *int32 `protobuf:"varint,1,opt,name=deprecated_int32,json=deprecatedInt32" json:"deprecated_int32,omitempty"`
-	// Types that are assignable to DeprecatedOneof:
+	// Types that are valid to be assigned to DeprecatedOneof:
 	//
 	//	*TestDeprecatedMessage_DeprecatedOneofField
 	DeprecatedOneof isTestDeprecatedMessage_DeprecatedOneof `protobuf_oneof:"deprecated_oneof"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestDeprecatedMessage) Reset() {
@@ -2014,17 +2033,19 @@
 	return 0
 }
 
-func (m *TestDeprecatedMessage) GetDeprecatedOneof() isTestDeprecatedMessage_DeprecatedOneof {
-	if m != nil {
-		return m.DeprecatedOneof
+func (x *TestDeprecatedMessage) GetDeprecatedOneof() isTestDeprecatedMessage_DeprecatedOneof {
+	if x != nil {
+		return x.DeprecatedOneof
 	}
 	return nil
 }
 
 // Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
 func (x *TestDeprecatedMessage) GetDeprecatedOneofField() int32 {
-	if x, ok := x.GetDeprecatedOneof().(*TestDeprecatedMessage_DeprecatedOneofField); ok {
-		return x.DeprecatedOneofField
+	if x != nil {
+		if x, ok := x.DeprecatedOneof.(*TestDeprecatedMessage_DeprecatedOneofField); ok {
+			return x.DeprecatedOneofField
+		}
 	}
 	return 0
 }
@@ -2041,15 +2062,14 @@
 func (*TestDeprecatedMessage_DeprecatedOneofField) isTestDeprecatedMessage_DeprecatedOneof() {}
 
 type TestOneofWithRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to OneofField:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestOneofWithRequired_OneofUint32
 	//	*TestOneofWithRequired_OneofRequired
-	OneofField isTestOneofWithRequired_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestOneofWithRequired_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestOneofWithRequired) Reset() {
@@ -2082,23 +2102,27 @@
 	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *TestOneofWithRequired) GetOneofField() isTestOneofWithRequired_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestOneofWithRequired) GetOneofField() isTestOneofWithRequired_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestOneofWithRequired) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestOneofWithRequired_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestOneofWithRequired_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestOneofWithRequired) GetOneofRequired() *required.Message {
-	if x, ok := x.GetOneofField().(*TestOneofWithRequired_OneofRequired); ok {
-		return x.OneofRequired
+	if x != nil {
+		if x, ok := x.OneofField.(*TestOneofWithRequired_OneofRequired); ok {
+			return x.OneofRequired
+		}
 	}
 	return nil
 }
@@ -2120,12 +2144,11 @@
 func (*TestOneofWithRequired_OneofRequired) isTestOneofWithRequired_OneofField() {}
 
 type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	D             *int32                 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
-	D *int32 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessage) Reset() {
@@ -2173,9 +2196,9 @@
 }
 
 type TestReservedFields struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestReservedFields) Reset() {
@@ -2209,10 +2232,10 @@
 }
 
 type TestAllExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllExtensions) Reset() {
@@ -2246,13 +2269,12 @@
 }
 
 type OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState           `protogen:"open.v1"`
 	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
 	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *OptionalGroup) Reset() {
@@ -2307,12 +2329,11 @@
 }
 
 type RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState           `protogen:"open.v1"`
 	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *RepeatedGroup) Reset() {
@@ -2360,9 +2381,9 @@
 }
 
 type TestNestedExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestNestedExtension) Reset() {
@@ -2396,11 +2417,10 @@
 }
 
 type TestRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RequiredField *int32                 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RequiredField *int32 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequired) Reset() {
@@ -2441,17 +2461,16 @@
 }
 
 type TestRequiredForeign struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state           protoimpl.MessageState  `protogen:"open.v1"`
 	OptionalMessage *TestRequired           `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
 	RepeatedMessage []*TestRequired         `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
 	MapMessage      map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestRequiredForeign_OneofMessage
-	OneofField isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredForeign) Reset() {
@@ -2505,16 +2524,18 @@
 	return nil
 }
 
-func (m *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
-	if x, ok := x.GetOneofField().(*TestRequiredForeign_OneofMessage); ok {
-		return x.OneofMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestRequiredForeign_OneofMessage); ok {
+			return x.OneofMessage
+		}
 	}
 	return nil
 }
@@ -2530,12 +2551,11 @@
 func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
 
 type TestRequiredGroupFields struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state         protoimpl.MessageState                   `protogen:"open.v1"`
 	Optionalgroup *TestRequiredGroupFields_OptionalGroup   `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
 	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields) Reset() {
@@ -2582,19 +2602,64 @@
 	return nil
 }
 
-type TestWeak struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	weakFields    protoimpl.WeakFields
-	unknownFields protoimpl.UnknownFields
+type TestRequiredLazy struct {
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage" json:"optional_lazy_message,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
 
+func (x *TestRequiredLazy) Reset() {
+	*x = TestRequiredLazy{}
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredLazy) ProtoMessage() {}
+
+func (x *TestRequiredLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
+	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 TestRequiredLazy.ProtoReflect.Descriptor instead.
+func (*TestRequiredLazy) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *TestRequiredLazy) GetOptionalLazyMessage() *TestRequired {
+	if x != nil {
+		return x.OptionalLazyMessage
+	}
+	return nil
+}
+
+type TestWeak struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_weak_WeakMessage1 struct{} `protobuf:"bytes,1,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty"`
+	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_weak_WeakMessage2 struct{} `protobuf:"bytes,2,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty"`
+	weakFields            protoimpl.WeakFields
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestWeak) Reset() {
 	*x = TestWeak{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2606,7 +2671,7 @@
 func (*TestWeak) ProtoMessage() {}
 
 func (x *TestWeak) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2619,7 +2684,7 @@
 
 // Deprecated: Use TestWeak.ProtoReflect.Descriptor instead.
 func (*TestWeak) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{13}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *TestWeak) GetWeakMessage1() proto.Message {
@@ -2655,29 +2720,28 @@
 }
 
 type TestPackedTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PackedInt32    []int32       `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
-	PackedInt64    []int64       `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
-	PackedUint32   []uint32      `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
-	PackedUint64   []uint64      `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
-	PackedSint32   []int32       `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
-	PackedSint64   []int64       `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
-	PackedFixed32  []uint32      `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
-	PackedFixed64  []uint64      `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
-	PackedSfixed32 []int32       `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
-	PackedSfixed64 []int64       `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
-	PackedFloat    []float32     `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
-	PackedDouble   []float64     `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
-	PackedBool     []bool        `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
-	PackedEnum     []ForeignEnum `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.test.ForeignEnum" json:"packed_enum,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
+	PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
+	PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
+	PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
+	PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
+	PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
+	PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
+	PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
+	PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
+	PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
+	PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
+	PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
+	PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
+	PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.test.ForeignEnum" json:"packed_enum,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *TestPackedTypes) Reset() {
 	*x = TestPackedTypes{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2689,7 +2753,7 @@
 func (*TestPackedTypes) ProtoMessage() {}
 
 func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2702,7 +2766,7 @@
 
 // Deprecated: Use TestPackedTypes.ProtoReflect.Descriptor instead.
 func (*TestPackedTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *TestPackedTypes) GetPackedInt32() []int32 {
@@ -2804,29 +2868,28 @@
 }
 
 type TestUnpackedTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UnpackedInt32    []int32       `protobuf:"varint,90,rep,name=unpacked_int32,json=unpackedInt32" json:"unpacked_int32,omitempty"`
-	UnpackedInt64    []int64       `protobuf:"varint,91,rep,name=unpacked_int64,json=unpackedInt64" json:"unpacked_int64,omitempty"`
-	UnpackedUint32   []uint32      `protobuf:"varint,92,rep,name=unpacked_uint32,json=unpackedUint32" json:"unpacked_uint32,omitempty"`
-	UnpackedUint64   []uint64      `protobuf:"varint,93,rep,name=unpacked_uint64,json=unpackedUint64" json:"unpacked_uint64,omitempty"`
-	UnpackedSint32   []int32       `protobuf:"zigzag32,94,rep,name=unpacked_sint32,json=unpackedSint32" json:"unpacked_sint32,omitempty"`
-	UnpackedSint64   []int64       `protobuf:"zigzag64,95,rep,name=unpacked_sint64,json=unpackedSint64" json:"unpacked_sint64,omitempty"`
-	UnpackedFixed32  []uint32      `protobuf:"fixed32,96,rep,name=unpacked_fixed32,json=unpackedFixed32" json:"unpacked_fixed32,omitempty"`
-	UnpackedFixed64  []uint64      `protobuf:"fixed64,97,rep,name=unpacked_fixed64,json=unpackedFixed64" json:"unpacked_fixed64,omitempty"`
-	UnpackedSfixed32 []int32       `protobuf:"fixed32,98,rep,name=unpacked_sfixed32,json=unpackedSfixed32" json:"unpacked_sfixed32,omitempty"`
-	UnpackedSfixed64 []int64       `protobuf:"fixed64,99,rep,name=unpacked_sfixed64,json=unpackedSfixed64" json:"unpacked_sfixed64,omitempty"`
-	UnpackedFloat    []float32     `protobuf:"fixed32,100,rep,name=unpacked_float,json=unpackedFloat" json:"unpacked_float,omitempty"`
-	UnpackedDouble   []float64     `protobuf:"fixed64,101,rep,name=unpacked_double,json=unpackedDouble" json:"unpacked_double,omitempty"`
-	UnpackedBool     []bool        `protobuf:"varint,102,rep,name=unpacked_bool,json=unpackedBool" json:"unpacked_bool,omitempty"`
-	UnpackedEnum     []ForeignEnum `protobuf:"varint,103,rep,name=unpacked_enum,json=unpackedEnum,enum=goproto.proto.test.ForeignEnum" json:"unpacked_enum,omitempty"`
+	state            protoimpl.MessageState `protogen:"open.v1"`
+	UnpackedInt32    []int32                `protobuf:"varint,90,rep,name=unpacked_int32,json=unpackedInt32" json:"unpacked_int32,omitempty"`
+	UnpackedInt64    []int64                `protobuf:"varint,91,rep,name=unpacked_int64,json=unpackedInt64" json:"unpacked_int64,omitempty"`
+	UnpackedUint32   []uint32               `protobuf:"varint,92,rep,name=unpacked_uint32,json=unpackedUint32" json:"unpacked_uint32,omitempty"`
+	UnpackedUint64   []uint64               `protobuf:"varint,93,rep,name=unpacked_uint64,json=unpackedUint64" json:"unpacked_uint64,omitempty"`
+	UnpackedSint32   []int32                `protobuf:"zigzag32,94,rep,name=unpacked_sint32,json=unpackedSint32" json:"unpacked_sint32,omitempty"`
+	UnpackedSint64   []int64                `protobuf:"zigzag64,95,rep,name=unpacked_sint64,json=unpackedSint64" json:"unpacked_sint64,omitempty"`
+	UnpackedFixed32  []uint32               `protobuf:"fixed32,96,rep,name=unpacked_fixed32,json=unpackedFixed32" json:"unpacked_fixed32,omitempty"`
+	UnpackedFixed64  []uint64               `protobuf:"fixed64,97,rep,name=unpacked_fixed64,json=unpackedFixed64" json:"unpacked_fixed64,omitempty"`
+	UnpackedSfixed32 []int32                `protobuf:"fixed32,98,rep,name=unpacked_sfixed32,json=unpackedSfixed32" json:"unpacked_sfixed32,omitempty"`
+	UnpackedSfixed64 []int64                `protobuf:"fixed64,99,rep,name=unpacked_sfixed64,json=unpackedSfixed64" json:"unpacked_sfixed64,omitempty"`
+	UnpackedFloat    []float32              `protobuf:"fixed32,100,rep,name=unpacked_float,json=unpackedFloat" json:"unpacked_float,omitempty"`
+	UnpackedDouble   []float64              `protobuf:"fixed64,101,rep,name=unpacked_double,json=unpackedDouble" json:"unpacked_double,omitempty"`
+	UnpackedBool     []bool                 `protobuf:"varint,102,rep,name=unpacked_bool,json=unpackedBool" json:"unpacked_bool,omitempty"`
+	UnpackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,name=unpacked_enum,json=unpackedEnum,enum=goproto.proto.test.ForeignEnum" json:"unpacked_enum,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
 func (x *TestUnpackedTypes) Reset() {
 	*x = TestUnpackedTypes{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2838,7 +2901,7 @@
 func (*TestUnpackedTypes) ProtoMessage() {}
 
 func (x *TestUnpackedTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2851,7 +2914,7 @@
 
 // Deprecated: Use TestUnpackedTypes.ProtoReflect.Descriptor instead.
 func (*TestUnpackedTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{16}
 }
 
 func (x *TestUnpackedTypes) GetUnpackedInt32() []int32 {
@@ -2953,15 +3016,15 @@
 }
 
 type TestPackedExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestPackedExtensions) Reset() {
 	*x = TestPackedExtensions{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -2973,7 +3036,7 @@
 func (*TestPackedExtensions) ProtoMessage() {}
 
 func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2986,19 +3049,19 @@
 
 // Deprecated: Use TestPackedExtensions.ProtoReflect.Descriptor instead.
 func (*TestPackedExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{16}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{17}
 }
 
 type TestUnpackedExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestUnpackedExtensions) Reset() {
 	*x = TestUnpackedExtensions{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3010,7 +3073,7 @@
 func (*TestUnpackedExtensions) ProtoMessage() {}
 
 func (x *TestUnpackedExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3023,19 +3086,19 @@
 
 // Deprecated: Use TestUnpackedExtensions.ProtoReflect.Descriptor instead.
 func (*TestUnpackedExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{17}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{18}
 }
 
 // Test that RPC services work.
 type FooRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FooRequest) Reset() {
 	*x = FooRequest{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3047,7 +3110,7 @@
 func (*FooRequest) ProtoMessage() {}
 
 func (x *FooRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3060,18 +3123,18 @@
 
 // Deprecated: Use FooRequest.ProtoReflect.Descriptor instead.
 func (*FooRequest) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{18}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{19}
 }
 
 type FooResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FooResponse) Reset() {
 	*x = FooResponse{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3083,7 +3146,7 @@
 func (*FooResponse) ProtoMessage() {}
 
 func (x *FooResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3096,15 +3159,14 @@
 
 // Deprecated: Use FooResponse.ProtoReflect.Descriptor instead.
 func (*FooResponse) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{19}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{20}
 }
 
 type WeirdDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	WeirdDefault  []byte                 `protobuf:"bytes,1,opt,name=weird_default,json=weirdDefault,def=hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef\x60" json:"weird_default,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	WeirdDefault []byte `protobuf:"bytes,1,opt,name=weird_default,json=weirdDefault,def=hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef\x60" json:"weird_default,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for WeirdDefault fields.
@@ -3114,7 +3176,7 @@
 
 func (x *WeirdDefault) Reset() {
 	*x = WeirdDefault{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3126,7 +3188,7 @@
 func (*WeirdDefault) ProtoMessage() {}
 
 func (x *WeirdDefault) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3139,7 +3201,7 @@
 
 // Deprecated: Use WeirdDefault.ProtoReflect.Descriptor instead.
 func (*WeirdDefault) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{20}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{21}
 }
 
 func (x *WeirdDefault) GetWeirdDefault() []byte {
@@ -3150,18 +3212,17 @@
 }
 
 type RemoteDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Default       *enums.Enum            `protobuf:"varint,1,opt,name=default,enum=goproto.proto.enums.Enum" json:"default,omitempty"`
+	Zero          *enums.Enum            `protobuf:"varint,2,opt,name=zero,enum=goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
+	One           *enums.Enum            `protobuf:"varint,3,opt,name=one,enum=goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
+	Elevent       *enums.Enum            `protobuf:"varint,4,opt,name=elevent,enum=goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
+	Seventeen     *enums.Enum            `protobuf:"varint,5,opt,name=seventeen,enum=goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
+	Thirtyseven   *enums.Enum            `protobuf:"varint,6,opt,name=thirtyseven,enum=goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
+	Sixtyseven    *enums.Enum            `protobuf:"varint,7,opt,name=sixtyseven,enum=goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
+	Negative      *enums.Enum            `protobuf:"varint,8,opt,name=negative,enum=goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Default     *enums.Enum `protobuf:"varint,1,opt,name=default,enum=goproto.proto.enums.Enum" json:"default,omitempty"`
-	Zero        *enums.Enum `protobuf:"varint,2,opt,name=zero,enum=goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
-	One         *enums.Enum `protobuf:"varint,3,opt,name=one,enum=goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
-	Elevent     *enums.Enum `protobuf:"varint,4,opt,name=elevent,enum=goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
-	Seventeen   *enums.Enum `protobuf:"varint,5,opt,name=seventeen,enum=goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
-	Thirtyseven *enums.Enum `protobuf:"varint,6,opt,name=thirtyseven,enum=goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
-	Sixtyseven  *enums.Enum `protobuf:"varint,7,opt,name=sixtyseven,enum=goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
-	Negative    *enums.Enum `protobuf:"varint,8,opt,name=negative,enum=goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for RemoteDefault fields.
@@ -3177,7 +3238,7 @@
 
 func (x *RemoteDefault) Reset() {
 	*x = RemoteDefault{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3189,7 +3250,7 @@
 func (*RemoteDefault) ProtoMessage() {}
 
 func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3202,7 +3263,7 @@
 
 // Deprecated: Use RemoteDefault.ProtoReflect.Descriptor instead.
 func (*RemoteDefault) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{21}
+	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{22}
 }
 
 func (x *RemoteDefault) GetDefault() enums.Enum {
@@ -3262,17 +3323,16 @@
 }
 
 type TestAllTypes_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32        `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_NestedMessage) Reset() {
 	*x = TestAllTypes_NestedMessage{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3284,7 +3344,7 @@
 func (*TestAllTypes_NestedMessage) ProtoMessage() {}
 
 func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3315,18 +3375,17 @@
 }
 
 type TestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState      `protogen:"open.v1"`
 	A                     *int32                      `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
 	SameFieldNumber       *int32                      `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_OptionalGroup) Reset() {
 	*x = TestAllTypes_OptionalGroup{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3338,7 +3397,7 @@
 func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3376,17 +3435,16 @@
 }
 
 type TestAllTypes_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState      `protogen:"open.v1"`
 	A                     *int32                      `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_RepeatedGroup) Reset() {
 	*x = TestAllTypes_RepeatedGroup{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[25]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3398,7 +3456,7 @@
 func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[25]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3429,17 +3487,16 @@
 }
 
 type TestAllTypes_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	B *int32 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_OneofGroup) Reset() {
 	*x = TestAllTypes_OneofGroup{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[42]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3451,7 +3508,7 @@
 func (*TestAllTypes_OneofGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[42]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3482,17 +3539,16 @@
 }
 
 type TestAllExtensions_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32             `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllExtensions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllExtensions_NestedMessage) Reset() {
 	*x = TestAllExtensions_NestedMessage{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3504,7 +3560,7 @@
 func (*TestAllExtensions_NestedMessage) ProtoMessage() {}
 
 func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3535,16 +3591,15 @@
 }
 
 type TestRequiredGroupFields_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
 	*x = TestRequiredGroupFields_OptionalGroup{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[45]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3556,7 +3611,7 @@
 func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
 
 func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[45]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3580,16 +3635,15 @@
 }
 
 type TestRequiredGroupFields_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
 	*x = TestRequiredGroupFields_RepeatedGroup{}
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[47]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -3601,7 +3655,7 @@
 func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
 
 func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
+	mi := &file_internal_testprotos_test_test_proto_msgTypes[47]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5408,608 +5462,615 @@
 	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61,
 	0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x1a, 0x1d, 0x0a, 0x0d, 0x52, 0x65, 0x70,
 	0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18,
-	0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73,
-	0x74, 0x57, 0x65, 0x61, 0x6b, 0x12, 0x54, 0x0a, 0x0d, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72,
-	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x42, 0x02, 0x50, 0x01, 0x52, 0x0c, 0x77,
-	0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x54, 0x0a, 0x0d, 0x77,
-	0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61,
-	0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x42,
-	0x02, 0x50, 0x01, 0x52, 0x0c, 0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x22, 0xee, 0x04, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0c,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03,
-	0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d, 0x20,
-	0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a,
-	0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20,
-	0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10,
-	0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
-	0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x0b,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x22, 0xa8, 0x05, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b,
-	0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d,
-	0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28,
-	0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66,
-	0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a,
-	0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28,
-	0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42,
-	0x6f, 0x6f, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70,
+	0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x22, 0x6c, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x58, 0x0a, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x42, 0x02, 0x28,
+	0x01, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a, 0x79, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x73, 0x74, 0x57,
+	0x65, 0x61, 0x6b, 0x12, 0x54, 0x0a, 0x0d, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x20, 0x0a,
-	0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
-	0x22, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80,
-	0x80, 0x80, 0x02, 0x22, 0x0c, 0x0a, 0x0a, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x61, 0x0a, 0x0c, 0x57, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x12, 0x51, 0x0a, 0x0d, 0x77, 0x65, 0x69, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x2c, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20,
-	0x5c, 0x22, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x5c, 0x22, 0x5c, 0x6e, 0x64, 0x65, 0x61, 0x64,
-	0x5c, 0x33, 0x33, 0x36, 0x5c, 0x32, 0x35, 0x35, 0x5c, 0x32, 0x37, 0x36, 0x5c, 0x33, 0x35, 0x37,
-	0x62, 0x65, 0x65, 0x66, 0x60, 0x52, 0x0c, 0x77, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x22, 0xff, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x42, 0x02, 0x50, 0x01, 0x52, 0x0c, 0x77, 0x65, 0x61,
+	0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x54, 0x0a, 0x0d, 0x77, 0x65, 0x61,
+	0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x42, 0x02, 0x50,
+	0x01, 0x52, 0x0c, 0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x22,
+	0xee, 0x04, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03,
+	0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d, 0x20, 0x03, 0x28,
+	0x04, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20,
+	0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10,
+	0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x62,
+	0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20, 0x03, 0x28,
+	0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52,
+	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65, 0x20,
+	0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x0b, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32,
+	0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+	0x22, 0xa8, 0x05, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02,
+	0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d, 0x20, 0x03,
+	0x28, 0x04, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42,
+	0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x00,
+	0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
+	0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2f,
+	0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
+	0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x00, 0x52, 0x10,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x75,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65,
+	0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42,
+	0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f,
+	0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e,
+	0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f,
+	0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x20, 0x0a, 0x14, 0x54,
+	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x22, 0x0a,
+	0x16, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80,
+	0x02, 0x22, 0x0c, 0x0a, 0x0a, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
+	0x0d, 0x0a, 0x0b, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61,
+	0x0a, 0x0c, 0x57, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x51,
+	0x0a, 0x0d, 0x77, 0x65, 0x69, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x2c, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x5c, 0x22,
+	0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x5c, 0x22, 0x5c, 0x6e, 0x64, 0x65, 0x61, 0x64, 0x5c, 0x33,
+	0x33, 0x36, 0x5c, 0x32, 0x35, 0x35, 0x5c, 0x32, 0x37, 0x36, 0x5c, 0x33, 0x35, 0x37, 0x62, 0x65,
+	0x65, 0x66, 0x60, 0x52, 0x0c, 0x77, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x22, 0xff, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x7a, 0x65, 0x72, 0x6f,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x7a, 0x65,
-	0x72, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x3a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x12,
-	0x30, 0x0a, 0x03, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75,
-	0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x03, 0x6f, 0x6e,
-	0x65, 0x12, 0x3c, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07, 0x45,
-	0x4c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12,
-	0x42, 0x0a, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x09, 0x53,
-	0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74,
-	0x65, 0x65, 0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76,
-	0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e,
-	0x52, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x45, 0x0a,
-	0x0a, 0x73, 0x69, 0x78, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53, 0x49,
-	0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79, 0x73,
-	0x65, 0x76, 0x65, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x6d, 0x3a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x12, 0x30, 0x0a,
+	0x03, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x03, 0x6f, 0x6e, 0x65, 0x12,
+	0x3c, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07, 0x45, 0x4c, 0x45,
+	0x56, 0x45, 0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a,
+	0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x09, 0x53, 0x45, 0x56,
+	0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65,
+	0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x3a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65, 0x67,
-	0x61, 0x74, 0x69, 0x76, 0x65, 0x2a, 0x40, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
-	0x46, 0x4f, 0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e,
-	0x5f, 0x42, 0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47,
-	0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10, 0x06, 0x2a, 0x47, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x52,
-	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x73, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x45, 0x4e,
-	0x55, 0x4d, 0x10, 0x00, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x0f, 0x10, 0x0f,
-	0x22, 0x04, 0x08, 0x09, 0x10, 0x0b, 0x2a, 0x03, 0x42, 0x41, 0x52, 0x2a, 0x03, 0x42, 0x41, 0x5a,
-	0x32, 0xa8, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x12, 0x46, 0x0a, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74,
-	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x85, 0x01, 0x0a, 0x15,
-	0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
-	0x74, 0x65, 0x64, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70,
-	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x29,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x1a, 0x03,
-	0x88, 0x02, 0x01, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6d, 0x3a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0b,
+	0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x45, 0x0a, 0x0a, 0x73,
+	0x69, 0x78, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53, 0x49, 0x58, 0x54,
+	0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79, 0x73, 0x65, 0x76,
+	0x65, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74,
+	0x69, 0x76, 0x65, 0x2a, 0x40, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
+	0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
+	0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
+	0x42, 0x41, 0x5a, 0x10, 0x06, 0x2a, 0x47, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12,
+	0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x55, 0x4d,
+	0x10, 0x00, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x0f, 0x10, 0x0f, 0x22, 0x04,
+	0x08, 0x09, 0x10, 0x0b, 0x2a, 0x03, 0x42, 0x41, 0x52, 0x2a, 0x03, 0x42, 0x41, 0x5a, 0x32, 0xa8,
+	0x01, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46,
+	0x0a, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x85, 0x01, 0x0a, 0x15, 0x54, 0x65,
+	0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,
+	0x64, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65,
+	0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x29, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x1a, 0x03, 0x88, 0x02,
+	0x01, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a,
-	0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a,
-	0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x50, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07,
-	0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x3a, 0x50, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79,
-	0x74, 0x65, 0x73, 0x3a, 0x6e, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67,
-	0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28,
-	0x0a, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47,
-	0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72,
-	0x6f, 0x75, 0x70, 0x3a, 0x92, 0x01, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
-	0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4c, 0x0a,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x10, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x50, 0x0a,
-	0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a,
+	0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36,
 	0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a,
-	0x52, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28,
-	0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2b, 0x20,
-	0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f,
-	0x6c, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2c, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79,
-	0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c,
-	0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a,
-	0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
 	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x21, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70,
-	0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a,
-	0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4e, 0x0a, 0x0d, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0d, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0e, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x50, 0x0a,
-	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34,
-	0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x51, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a,
+	0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
 	0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03,
-	0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x3a, 0x50, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x56, 0x20, 0x01, 0x28,
-	0x12, 0x3a, 0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x57,
-	0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x54, 0x0a, 0x10,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38,
-	0x39, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a,
+	0x50, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x50, 0x20,
-	0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0d, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
 	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x53, 0x0a, 0x0e, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e,
+	0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x3a, 0x6e, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0a, 0x32,
+	0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
+	0x70, 0x3a, 0x92, 0x01, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e,
 	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
 	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30,
-	0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x3a, 0x4e, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74,
-	0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c,
-	0x3a, 0x53, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
+	0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12,
+	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4c, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4c, 0x0a, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x10, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x50, 0x0a, 0x10, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x52, 0x0a,
+	0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52,
+	0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x3a, 0x52, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x28, 0x20,
+	0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x29,
+	0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2a, 0x20,
+	0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28,
+	0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a,
+	0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69,
 	0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a,
-	0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a,
+	0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x6e, 0x0a,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x21, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0x92, 0x01,
+	0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20,
-	0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4e, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52, 0x0d, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x50, 0x0a, 0x0e, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34, 0x52, 0x0d,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x51, 0x0a,
+	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03, 0x2d, 0x38,
+	0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x3a, 0x50, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a,
+	0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x57, 0x20, 0x01,
+	0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x54, 0x0a, 0x10, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52,
+	0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x3a, 0x55, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x50, 0x20, 0x01, 0x28,
+	0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x5b, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x53, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30, 0x30, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4e,
+	0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75,
+	0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x53,
+	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x05, 0x68,
+	0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x3a, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28,
+	0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
 	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f,
+	0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x51, 0x0a, 0x0d, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x01,
+	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x51,
+	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42,
+	0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03,
+	0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x53, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x53, 0x0a, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
 	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x51, 0x0a,
-	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52,
+	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x55,
+	0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
 	0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03, 0x28,
-	0x11, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f,
-	0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x53, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28,
+	0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
 	0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x53, 0x0a, 0x0e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10,
-	0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x3a, 0x55, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20,
-	0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4f,
-	0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x28,
+	0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4f, 0x0a, 0x0c,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x28, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01,
+	0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x51, 0x0a,
+	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x28,
 	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
 	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a,
-	0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01,
-	0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x3a, 0x4d, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28,
-	0x08, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f,
-	0x6c, 0x3a, 0x6e, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e,
-	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75,
-	0x6d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c,
-	0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x3a, 0x59, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x59,
-	0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61,
-	0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02,
+	0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x3a, 0x4d, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12,
+	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42,
+	0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a,
+	0x6e, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x28,
 	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x3a, 0x53, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x74, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42,
+	0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20,
+	0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x57, 0x0a,
+	0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x03,
+	0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
 	0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x00, 0x52,
+	0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
+	0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e,
+	0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x35,
-	0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x50, 0x00, 0x58, 0x01, 0x58, 0x02,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10,
+	0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x3a, 0x59, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55,
+	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x59, 0x0a, 0x10,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03,
+	0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02,
+	0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x00, 0x52,
+	0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c,
+	0x6f, 0x61, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10,
+	0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x3a, 0x53, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66,
+	0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x74, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c,
+	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x35, 0x5a, 0x33,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x50, 0x00, 0x58, 0x01, 0x58, 0x02,
 }
 
 var (
@@ -6025,7 +6086,7 @@
 }
 
 var file_internal_testprotos_test_test_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_internal_testprotos_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 47)
+var file_internal_testprotos_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
 var file_internal_testprotos_test_test_proto_goTypes = []any{
 	(ForeignEnum)(0),                          // 0: goproto.proto.test.ForeignEnum
 	(TestReservedEnumFields)(0),               // 1: goproto.proto.test.TestReservedEnumFields
@@ -6044,83 +6105,84 @@
 	(*TestRequired)(nil),                      // 14: goproto.proto.test.TestRequired
 	(*TestRequiredForeign)(nil),               // 15: goproto.proto.test.TestRequiredForeign
 	(*TestRequiredGroupFields)(nil),           // 16: goproto.proto.test.TestRequiredGroupFields
-	(*TestWeak)(nil),                          // 17: goproto.proto.test.TestWeak
-	(*TestPackedTypes)(nil),                   // 18: goproto.proto.test.TestPackedTypes
-	(*TestUnpackedTypes)(nil),                 // 19: goproto.proto.test.TestUnpackedTypes
-	(*TestPackedExtensions)(nil),              // 20: goproto.proto.test.TestPackedExtensions
-	(*TestUnpackedExtensions)(nil),            // 21: goproto.proto.test.TestUnpackedExtensions
-	(*FooRequest)(nil),                        // 22: goproto.proto.test.FooRequest
-	(*FooResponse)(nil),                       // 23: goproto.proto.test.FooResponse
-	(*WeirdDefault)(nil),                      // 24: goproto.proto.test.WeirdDefault
-	(*RemoteDefault)(nil),                     // 25: goproto.proto.test.RemoteDefault
-	(*TestAllTypes_NestedMessage)(nil),        // 26: goproto.proto.test.TestAllTypes.NestedMessage
-	(*TestAllTypes_OptionalGroup)(nil),        // 27: goproto.proto.test.TestAllTypes.OptionalGroup
-	(*TestAllTypes_RepeatedGroup)(nil),        // 28: goproto.proto.test.TestAllTypes.RepeatedGroup
-	nil,                                       // 29: goproto.proto.test.TestAllTypes.MapInt32Int32Entry
-	nil,                                       // 30: goproto.proto.test.TestAllTypes.MapInt64Int64Entry
-	nil,                                       // 31: goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
-	nil,                                       // 32: goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
-	nil,                                       // 33: goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
-	nil,                                       // 34: goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
-	nil,                                       // 35: goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
-	nil,                                       // 36: goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
-	nil,                                       // 37: goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
-	nil,                                       // 38: goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
-	nil,                                       // 39: goproto.proto.test.TestAllTypes.MapInt32FloatEntry
-	nil,                                       // 40: goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
-	nil,                                       // 41: goproto.proto.test.TestAllTypes.MapBoolBoolEntry
-	nil,                                       // 42: goproto.proto.test.TestAllTypes.MapStringStringEntry
-	nil,                                       // 43: goproto.proto.test.TestAllTypes.MapStringBytesEntry
-	nil,                                       // 44: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
-	nil,                                       // 45: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
-	(*TestAllTypes_OneofGroup)(nil),           // 46: goproto.proto.test.TestAllTypes.OneofGroup
-	(*TestAllExtensions_NestedMessage)(nil),   // 47: goproto.proto.test.TestAllExtensions.NestedMessage
-	nil,                                       // 48: goproto.proto.test.TestRequiredForeign.MapMessageEntry
-	(*TestRequiredGroupFields_OptionalGroup)(nil), // 49: goproto.proto.test.TestRequiredGroupFields.OptionalGroup
-	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 50: goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
-	(*ImportMessage)(nil),                         // 51: goproto.proto.test.ImportMessage
-	(ImportEnum)(0),                               // 52: goproto.proto.test.ImportEnum
-	(*required.Message)(nil),                      // 53: goproto.proto.testrequired.Message
-	(enums.Enum)(0),                               // 54: goproto.proto.enums.Enum
+	(*TestRequiredLazy)(nil),                  // 17: goproto.proto.test.TestRequiredLazy
+	(*TestWeak)(nil),                          // 18: goproto.proto.test.TestWeak
+	(*TestPackedTypes)(nil),                   // 19: goproto.proto.test.TestPackedTypes
+	(*TestUnpackedTypes)(nil),                 // 20: goproto.proto.test.TestUnpackedTypes
+	(*TestPackedExtensions)(nil),              // 21: goproto.proto.test.TestPackedExtensions
+	(*TestUnpackedExtensions)(nil),            // 22: goproto.proto.test.TestUnpackedExtensions
+	(*FooRequest)(nil),                        // 23: goproto.proto.test.FooRequest
+	(*FooResponse)(nil),                       // 24: goproto.proto.test.FooResponse
+	(*WeirdDefault)(nil),                      // 25: goproto.proto.test.WeirdDefault
+	(*RemoteDefault)(nil),                     // 26: goproto.proto.test.RemoteDefault
+	(*TestAllTypes_NestedMessage)(nil),        // 27: goproto.proto.test.TestAllTypes.NestedMessage
+	(*TestAllTypes_OptionalGroup)(nil),        // 28: goproto.proto.test.TestAllTypes.OptionalGroup
+	(*TestAllTypes_RepeatedGroup)(nil),        // 29: goproto.proto.test.TestAllTypes.RepeatedGroup
+	nil,                                       // 30: goproto.proto.test.TestAllTypes.MapInt32Int32Entry
+	nil,                                       // 31: goproto.proto.test.TestAllTypes.MapInt64Int64Entry
+	nil,                                       // 32: goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
+	nil,                                       // 33: goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
+	nil,                                       // 34: goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
+	nil,                                       // 35: goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
+	nil,                                       // 36: goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                       // 37: goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                       // 38: goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                       // 39: goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                       // 40: goproto.proto.test.TestAllTypes.MapInt32FloatEntry
+	nil,                                       // 41: goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
+	nil,                                       // 42: goproto.proto.test.TestAllTypes.MapBoolBoolEntry
+	nil,                                       // 43: goproto.proto.test.TestAllTypes.MapStringStringEntry
+	nil,                                       // 44: goproto.proto.test.TestAllTypes.MapStringBytesEntry
+	nil,                                       // 45: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                       // 46: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
+	(*TestAllTypes_OneofGroup)(nil),           // 47: goproto.proto.test.TestAllTypes.OneofGroup
+	(*TestAllExtensions_NestedMessage)(nil),   // 48: goproto.proto.test.TestAllExtensions.NestedMessage
+	nil,                                       // 49: goproto.proto.test.TestRequiredForeign.MapMessageEntry
+	(*TestRequiredGroupFields_OptionalGroup)(nil), // 50: goproto.proto.test.TestRequiredGroupFields.OptionalGroup
+	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 51: goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
+	(*ImportMessage)(nil),                         // 52: goproto.proto.test.ImportMessage
+	(ImportEnum)(0),                               // 53: goproto.proto.test.ImportEnum
+	(*required.Message)(nil),                      // 54: goproto.proto.testrequired.Message
+	(enums.Enum)(0),                               // 55: goproto.proto.enums.Enum
 }
 var file_internal_testprotos_test_test_proto_depIdxs = []int32{
-	27,  // 0: goproto.proto.test.TestAllTypes.optionalgroup:type_name -> goproto.proto.test.TestAllTypes.OptionalGroup
-	26,  // 1: goproto.proto.test.TestAllTypes.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	28,  // 0: goproto.proto.test.TestAllTypes.optionalgroup:type_name -> goproto.proto.test.TestAllTypes.OptionalGroup
+	27,  // 1: goproto.proto.test.TestAllTypes.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
 	8,   // 2: goproto.proto.test.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.test.ForeignMessage
-	51,  // 3: goproto.proto.test.TestAllTypes.optional_import_message:type_name -> goproto.proto.test.ImportMessage
+	52,  // 3: goproto.proto.test.TestAllTypes.optional_import_message:type_name -> goproto.proto.test.ImportMessage
 	2,   // 4: goproto.proto.test.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
 	0,   // 5: goproto.proto.test.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	52,  // 6: goproto.proto.test.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test.ImportEnum
-	26,  // 7: goproto.proto.test.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	28,  // 8: goproto.proto.test.TestAllTypes.repeatedgroup:type_name -> goproto.proto.test.TestAllTypes.RepeatedGroup
-	26,  // 9: goproto.proto.test.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	53,  // 6: goproto.proto.test.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test.ImportEnum
+	27,  // 7: goproto.proto.test.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	29,  // 8: goproto.proto.test.TestAllTypes.repeatedgroup:type_name -> goproto.proto.test.TestAllTypes.RepeatedGroup
+	27,  // 9: goproto.proto.test.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
 	8,   // 10: goproto.proto.test.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.test.ForeignMessage
-	51,  // 11: goproto.proto.test.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.test.ImportMessage
+	52,  // 11: goproto.proto.test.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.test.ImportMessage
 	2,   // 12: goproto.proto.test.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
 	0,   // 13: goproto.proto.test.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	52,  // 14: goproto.proto.test.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test.ImportEnum
-	29,  // 15: goproto.proto.test.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test.TestAllTypes.MapInt32Int32Entry
-	30,  // 16: goproto.proto.test.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test.TestAllTypes.MapInt64Int64Entry
-	31,  // 17: goproto.proto.test.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
-	32,  // 18: goproto.proto.test.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
-	33,  // 19: goproto.proto.test.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
-	34,  // 20: goproto.proto.test.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
-	35,  // 21: goproto.proto.test.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
-	36,  // 22: goproto.proto.test.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
-	37,  // 23: goproto.proto.test.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
-	38,  // 24: goproto.proto.test.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
-	39,  // 25: goproto.proto.test.TestAllTypes.map_int32_float:type_name -> goproto.proto.test.TestAllTypes.MapInt32FloatEntry
-	40,  // 26: goproto.proto.test.TestAllTypes.map_int32_double:type_name -> goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
-	41,  // 27: goproto.proto.test.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test.TestAllTypes.MapBoolBoolEntry
-	42,  // 28: goproto.proto.test.TestAllTypes.map_string_string:type_name -> goproto.proto.test.TestAllTypes.MapStringStringEntry
-	43,  // 29: goproto.proto.test.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test.TestAllTypes.MapStringBytesEntry
-	44,  // 30: goproto.proto.test.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
-	45,  // 31: goproto.proto.test.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
+	53,  // 14: goproto.proto.test.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test.ImportEnum
+	30,  // 15: goproto.proto.test.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test.TestAllTypes.MapInt32Int32Entry
+	31,  // 16: goproto.proto.test.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test.TestAllTypes.MapInt64Int64Entry
+	32,  // 17: goproto.proto.test.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
+	33,  // 18: goproto.proto.test.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
+	34,  // 19: goproto.proto.test.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
+	35,  // 20: goproto.proto.test.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
+	36,  // 21: goproto.proto.test.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
+	37,  // 22: goproto.proto.test.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
+	38,  // 23: goproto.proto.test.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
+	39,  // 24: goproto.proto.test.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
+	40,  // 25: goproto.proto.test.TestAllTypes.map_int32_float:type_name -> goproto.proto.test.TestAllTypes.MapInt32FloatEntry
+	41,  // 26: goproto.proto.test.TestAllTypes.map_int32_double:type_name -> goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
+	42,  // 27: goproto.proto.test.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test.TestAllTypes.MapBoolBoolEntry
+	43,  // 28: goproto.proto.test.TestAllTypes.map_string_string:type_name -> goproto.proto.test.TestAllTypes.MapStringStringEntry
+	44,  // 29: goproto.proto.test.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test.TestAllTypes.MapStringBytesEntry
+	45,  // 30: goproto.proto.test.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
+	46,  // 31: goproto.proto.test.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
 	2,   // 32: goproto.proto.test.TestAllTypes.default_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
 	0,   // 33: goproto.proto.test.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	26,  // 34: goproto.proto.test.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	27,  // 34: goproto.proto.test.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
 	2,   // 35: goproto.proto.test.TestAllTypes.oneof_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	46,  // 36: goproto.proto.test.TestAllTypes.oneofgroup:type_name -> goproto.proto.test.TestAllTypes.OneofGroup
+	47,  // 36: goproto.proto.test.TestAllTypes.oneofgroup:type_name -> goproto.proto.test.TestAllTypes.OneofGroup
 	4,   // 37: goproto.proto.test.TestManyMessageFieldsMessage.f1:type_name -> goproto.proto.test.TestAllTypes
 	4,   // 38: goproto.proto.test.TestManyMessageFieldsMessage.f2:type_name -> goproto.proto.test.TestAllTypes
 	4,   // 39: goproto.proto.test.TestManyMessageFieldsMessage.f3:type_name -> goproto.proto.test.TestAllTypes
@@ -6221,135 +6283,136 @@
 	4,   // 134: goproto.proto.test.TestManyMessageFieldsMessage.f98:type_name -> goproto.proto.test.TestAllTypes
 	4,   // 135: goproto.proto.test.TestManyMessageFieldsMessage.f99:type_name -> goproto.proto.test.TestAllTypes
 	4,   // 136: goproto.proto.test.TestManyMessageFieldsMessage.f100:type_name -> goproto.proto.test.TestAllTypes
-	53,  // 137: goproto.proto.test.TestOneofWithRequired.oneof_required:type_name -> goproto.proto.testrequired.Message
-	47,  // 138: goproto.proto.test.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	47,  // 139: goproto.proto.test.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
+	54,  // 137: goproto.proto.test.TestOneofWithRequired.oneof_required:type_name -> goproto.proto.testrequired.Message
+	48,  // 138: goproto.proto.test.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
+	48,  // 139: goproto.proto.test.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
 	14,  // 140: goproto.proto.test.TestRequiredForeign.optional_message:type_name -> goproto.proto.test.TestRequired
 	14,  // 141: goproto.proto.test.TestRequiredForeign.repeated_message:type_name -> goproto.proto.test.TestRequired
-	48,  // 142: goproto.proto.test.TestRequiredForeign.map_message:type_name -> goproto.proto.test.TestRequiredForeign.MapMessageEntry
+	49,  // 142: goproto.proto.test.TestRequiredForeign.map_message:type_name -> goproto.proto.test.TestRequiredForeign.MapMessageEntry
 	14,  // 143: goproto.proto.test.TestRequiredForeign.oneof_message:type_name -> goproto.proto.test.TestRequired
-	49,  // 144: goproto.proto.test.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.OptionalGroup
-	50,  // 145: goproto.proto.test.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
-	0,   // 146: goproto.proto.test.TestPackedTypes.packed_enum:type_name -> goproto.proto.test.ForeignEnum
-	0,   // 147: goproto.proto.test.TestUnpackedTypes.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
-	54,  // 148: goproto.proto.test.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
-	54,  // 149: goproto.proto.test.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
-	54,  // 150: goproto.proto.test.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
-	54,  // 151: goproto.proto.test.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
-	54,  // 152: goproto.proto.test.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
-	54,  // 153: goproto.proto.test.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
-	54,  // 154: goproto.proto.test.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
-	54,  // 155: goproto.proto.test.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
-	4,   // 156: goproto.proto.test.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllTypes
-	26,  // 157: goproto.proto.test.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	26,  // 158: goproto.proto.test.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	26,  // 159: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	2,   // 160: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	10,  // 161: goproto.proto.test.TestAllExtensions.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllExtensions
-	14,  // 162: goproto.proto.test.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.test.TestRequired
-	10,  // 163: goproto.proto.test.optional_int32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 164: goproto.proto.test.optional_int64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 165: goproto.proto.test.optional_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 166: goproto.proto.test.optional_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 167: goproto.proto.test.optional_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 168: goproto.proto.test.optional_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 169: goproto.proto.test.optional_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 170: goproto.proto.test.optional_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 171: goproto.proto.test.optional_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 172: goproto.proto.test.optional_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 173: goproto.proto.test.optional_float:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 174: goproto.proto.test.optional_double:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 175: goproto.proto.test.optional_bool:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 176: goproto.proto.test.optional_string:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 177: goproto.proto.test.optional_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 178: goproto.proto.test.optionalgroup:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 179: goproto.proto.test.optional_nested_message:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 180: goproto.proto.test.optional_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 181: goproto.proto.test.repeated_int32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 182: goproto.proto.test.repeated_int64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 183: goproto.proto.test.repeated_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 184: goproto.proto.test.repeated_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 185: goproto.proto.test.repeated_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 186: goproto.proto.test.repeated_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 187: goproto.proto.test.repeated_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 188: goproto.proto.test.repeated_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 189: goproto.proto.test.repeated_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 190: goproto.proto.test.repeated_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 191: goproto.proto.test.repeated_float:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 192: goproto.proto.test.repeated_double:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 193: goproto.proto.test.repeated_bool:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 194: goproto.proto.test.repeated_string:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 195: goproto.proto.test.repeated_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 196: goproto.proto.test.repeatedgroup:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 197: goproto.proto.test.repeated_nested_message:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 198: goproto.proto.test.repeated_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 199: goproto.proto.test.default_int32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 200: goproto.proto.test.default_int64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 201: goproto.proto.test.default_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 202: goproto.proto.test.default_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 203: goproto.proto.test.default_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 204: goproto.proto.test.default_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 205: goproto.proto.test.default_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 206: goproto.proto.test.default_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 207: goproto.proto.test.default_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 208: goproto.proto.test.default_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 209: goproto.proto.test.default_float:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 210: goproto.proto.test.default_double:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 211: goproto.proto.test.default_bool:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 212: goproto.proto.test.default_string:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 213: goproto.proto.test.default_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	20,  // 214: goproto.proto.test.packed_int32:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 215: goproto.proto.test.packed_int64:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 216: goproto.proto.test.packed_uint32:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 217: goproto.proto.test.packed_uint64:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 218: goproto.proto.test.packed_sint32:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 219: goproto.proto.test.packed_sint64:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 220: goproto.proto.test.packed_fixed32:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 221: goproto.proto.test.packed_fixed64:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 222: goproto.proto.test.packed_sfixed32:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 223: goproto.proto.test.packed_sfixed64:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 224: goproto.proto.test.packed_float:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 225: goproto.proto.test.packed_double:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 226: goproto.proto.test.packed_bool:extendee -> goproto.proto.test.TestPackedExtensions
-	20,  // 227: goproto.proto.test.packed_enum:extendee -> goproto.proto.test.TestPackedExtensions
-	21,  // 228: goproto.proto.test.unpacked_int32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 229: goproto.proto.test.unpacked_int64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 230: goproto.proto.test.unpacked_uint32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 231: goproto.proto.test.unpacked_uint64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 232: goproto.proto.test.unpacked_sint32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 233: goproto.proto.test.unpacked_sint64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 234: goproto.proto.test.unpacked_fixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 235: goproto.proto.test.unpacked_fixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 236: goproto.proto.test.unpacked_sfixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 237: goproto.proto.test.unpacked_sfixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 238: goproto.proto.test.unpacked_float:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 239: goproto.proto.test.unpacked_double:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 240: goproto.proto.test.unpacked_bool:extendee -> goproto.proto.test.TestUnpackedExtensions
-	21,  // 241: goproto.proto.test.unpacked_enum:extendee -> goproto.proto.test.TestUnpackedExtensions
-	10,  // 242: goproto.proto.test.TestNestedExtension.nested_string_extension:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 243: goproto.proto.test.TestRequired.single:extendee -> goproto.proto.test.TestAllExtensions
-	10,  // 244: goproto.proto.test.TestRequired.multi:extendee -> goproto.proto.test.TestAllExtensions
-	11,  // 245: goproto.proto.test.optionalgroup:type_name -> goproto.proto.test.OptionalGroup
-	47,  // 246: goproto.proto.test.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	2,   // 247: goproto.proto.test.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	12,  // 248: goproto.proto.test.repeatedgroup:type_name -> goproto.proto.test.RepeatedGroup
-	47,  // 249: goproto.proto.test.repeated_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	2,   // 250: goproto.proto.test.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	0,   // 251: goproto.proto.test.packed_enum:type_name -> goproto.proto.test.ForeignEnum
-	0,   // 252: goproto.proto.test.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
-	14,  // 253: goproto.proto.test.TestRequired.single:type_name -> goproto.proto.test.TestRequired
-	14,  // 254: goproto.proto.test.TestRequired.multi:type_name -> goproto.proto.test.TestRequired
-	22,  // 255: goproto.proto.test.TestService.Foo:input_type -> goproto.proto.test.FooRequest
-	22,  // 256: goproto.proto.test.TestService.TestStream:input_type -> goproto.proto.test.FooRequest
-	6,   // 257: goproto.proto.test.TestDeprecatedService.Deprecated:input_type -> goproto.proto.test.TestDeprecatedMessage
-	23,  // 258: goproto.proto.test.TestService.Foo:output_type -> goproto.proto.test.FooResponse
-	23,  // 259: goproto.proto.test.TestService.TestStream:output_type -> goproto.proto.test.FooResponse
-	6,   // 260: goproto.proto.test.TestDeprecatedService.Deprecated:output_type -> goproto.proto.test.TestDeprecatedMessage
-	258, // [258:261] is the sub-list for method output_type
-	255, // [255:258] is the sub-list for method input_type
-	245, // [245:255] is the sub-list for extension type_name
-	163, // [163:245] is the sub-list for extension extendee
-	0,   // [0:163] is the sub-list for field type_name
+	50,  // 144: goproto.proto.test.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.OptionalGroup
+	51,  // 145: goproto.proto.test.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
+	14,  // 146: goproto.proto.test.TestRequiredLazy.optional_lazy_message:type_name -> goproto.proto.test.TestRequired
+	0,   // 147: goproto.proto.test.TestPackedTypes.packed_enum:type_name -> goproto.proto.test.ForeignEnum
+	0,   // 148: goproto.proto.test.TestUnpackedTypes.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
+	55,  // 149: goproto.proto.test.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
+	55,  // 150: goproto.proto.test.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
+	55,  // 151: goproto.proto.test.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
+	55,  // 152: goproto.proto.test.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
+	55,  // 153: goproto.proto.test.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
+	55,  // 154: goproto.proto.test.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
+	55,  // 155: goproto.proto.test.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
+	55,  // 156: goproto.proto.test.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
+	4,   // 157: goproto.proto.test.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllTypes
+	27,  // 158: goproto.proto.test.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	27,  // 159: goproto.proto.test.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	27,  // 160: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
+	2,   // 161: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
+	10,  // 162: goproto.proto.test.TestAllExtensions.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllExtensions
+	14,  // 163: goproto.proto.test.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.test.TestRequired
+	10,  // 164: goproto.proto.test.optional_int32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 165: goproto.proto.test.optional_int64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 166: goproto.proto.test.optional_uint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 167: goproto.proto.test.optional_uint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 168: goproto.proto.test.optional_sint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 169: goproto.proto.test.optional_sint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 170: goproto.proto.test.optional_fixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 171: goproto.proto.test.optional_fixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 172: goproto.proto.test.optional_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 173: goproto.proto.test.optional_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 174: goproto.proto.test.optional_float:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 175: goproto.proto.test.optional_double:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 176: goproto.proto.test.optional_bool:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 177: goproto.proto.test.optional_string:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 178: goproto.proto.test.optional_bytes:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 179: goproto.proto.test.optionalgroup:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 180: goproto.proto.test.optional_nested_message:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 181: goproto.proto.test.optional_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 182: goproto.proto.test.repeated_int32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 183: goproto.proto.test.repeated_int64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 184: goproto.proto.test.repeated_uint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 185: goproto.proto.test.repeated_uint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 186: goproto.proto.test.repeated_sint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 187: goproto.proto.test.repeated_sint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 188: goproto.proto.test.repeated_fixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 189: goproto.proto.test.repeated_fixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 190: goproto.proto.test.repeated_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 191: goproto.proto.test.repeated_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 192: goproto.proto.test.repeated_float:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 193: goproto.proto.test.repeated_double:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 194: goproto.proto.test.repeated_bool:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 195: goproto.proto.test.repeated_string:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 196: goproto.proto.test.repeated_bytes:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 197: goproto.proto.test.repeatedgroup:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 198: goproto.proto.test.repeated_nested_message:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 199: goproto.proto.test.repeated_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 200: goproto.proto.test.default_int32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 201: goproto.proto.test.default_int64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 202: goproto.proto.test.default_uint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 203: goproto.proto.test.default_uint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 204: goproto.proto.test.default_sint32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 205: goproto.proto.test.default_sint64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 206: goproto.proto.test.default_fixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 207: goproto.proto.test.default_fixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 208: goproto.proto.test.default_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 209: goproto.proto.test.default_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 210: goproto.proto.test.default_float:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 211: goproto.proto.test.default_double:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 212: goproto.proto.test.default_bool:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 213: goproto.proto.test.default_string:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 214: goproto.proto.test.default_bytes:extendee -> goproto.proto.test.TestAllExtensions
+	21,  // 215: goproto.proto.test.packed_int32:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 216: goproto.proto.test.packed_int64:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 217: goproto.proto.test.packed_uint32:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 218: goproto.proto.test.packed_uint64:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 219: goproto.proto.test.packed_sint32:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 220: goproto.proto.test.packed_sint64:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 221: goproto.proto.test.packed_fixed32:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 222: goproto.proto.test.packed_fixed64:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 223: goproto.proto.test.packed_sfixed32:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 224: goproto.proto.test.packed_sfixed64:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 225: goproto.proto.test.packed_float:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 226: goproto.proto.test.packed_double:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 227: goproto.proto.test.packed_bool:extendee -> goproto.proto.test.TestPackedExtensions
+	21,  // 228: goproto.proto.test.packed_enum:extendee -> goproto.proto.test.TestPackedExtensions
+	22,  // 229: goproto.proto.test.unpacked_int32:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 230: goproto.proto.test.unpacked_int64:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 231: goproto.proto.test.unpacked_uint32:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 232: goproto.proto.test.unpacked_uint64:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 233: goproto.proto.test.unpacked_sint32:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 234: goproto.proto.test.unpacked_sint64:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 235: goproto.proto.test.unpacked_fixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 236: goproto.proto.test.unpacked_fixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 237: goproto.proto.test.unpacked_sfixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 238: goproto.proto.test.unpacked_sfixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 239: goproto.proto.test.unpacked_float:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 240: goproto.proto.test.unpacked_double:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 241: goproto.proto.test.unpacked_bool:extendee -> goproto.proto.test.TestUnpackedExtensions
+	22,  // 242: goproto.proto.test.unpacked_enum:extendee -> goproto.proto.test.TestUnpackedExtensions
+	10,  // 243: goproto.proto.test.TestNestedExtension.nested_string_extension:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 244: goproto.proto.test.TestRequired.single:extendee -> goproto.proto.test.TestAllExtensions
+	10,  // 245: goproto.proto.test.TestRequired.multi:extendee -> goproto.proto.test.TestAllExtensions
+	11,  // 246: goproto.proto.test.optionalgroup:type_name -> goproto.proto.test.OptionalGroup
+	48,  // 247: goproto.proto.test.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
+	2,   // 248: goproto.proto.test.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
+	12,  // 249: goproto.proto.test.repeatedgroup:type_name -> goproto.proto.test.RepeatedGroup
+	48,  // 250: goproto.proto.test.repeated_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
+	2,   // 251: goproto.proto.test.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
+	0,   // 252: goproto.proto.test.packed_enum:type_name -> goproto.proto.test.ForeignEnum
+	0,   // 253: goproto.proto.test.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
+	14,  // 254: goproto.proto.test.TestRequired.single:type_name -> goproto.proto.test.TestRequired
+	14,  // 255: goproto.proto.test.TestRequired.multi:type_name -> goproto.proto.test.TestRequired
+	23,  // 256: goproto.proto.test.TestService.Foo:input_type -> goproto.proto.test.FooRequest
+	23,  // 257: goproto.proto.test.TestService.TestStream:input_type -> goproto.proto.test.FooRequest
+	6,   // 258: goproto.proto.test.TestDeprecatedService.Deprecated:input_type -> goproto.proto.test.TestDeprecatedMessage
+	24,  // 259: goproto.proto.test.TestService.Foo:output_type -> goproto.proto.test.FooResponse
+	24,  // 260: goproto.proto.test.TestService.TestStream:output_type -> goproto.proto.test.FooResponse
+	6,   // 261: goproto.proto.test.TestDeprecatedService.Deprecated:output_type -> goproto.proto.test.TestDeprecatedMessage
+	259, // [259:262] is the sub-list for method output_type
+	256, // [256:259] is the sub-list for method input_type
+	246, // [246:256] is the sub-list for extension type_name
+	164, // [164:246] is the sub-list for extension extendee
+	0,   // [0:164] is the sub-list for field type_name
 }
 
 func init() { file_internal_testprotos_test_test_proto_init() }
@@ -6388,7 +6451,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_internal_testprotos_test_test_proto_rawDesc,
 			NumEnums:      4,
-			NumMessages:   47,
+			NumMessages:   48,
 			NumExtensions: 82,
 			NumServices:   2,
 		},
diff --git a/internal/testprotos/test/test_import.pb.go b/internal/testprotos/test/test_import.pb.go
index 6059ac0..3118b16 100644
--- a/internal/testprotos/test/test_import.pb.go
+++ b/internal/testprotos/test/test_import.pb.go
@@ -68,9 +68,9 @@
 }
 
 type ImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ImportMessage) Reset() {
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
index 70d3313..90a383a 100644
--- a/internal/testprotos/test/test_public.pb.go
+++ b/internal/testprotos/test/test_public.pb.go
@@ -15,9 +15,9 @@
 )
 
 type PublicImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *PublicImportMessage) Reset() {
diff --git a/internal/testprotos/test/weak1/test_weak.pb.go b/internal/testprotos/test/weak1/test_weak.pb.go
index b12ac83..416b04a 100644
--- a/internal/testprotos/test/weak1/test_weak.pb.go
+++ b/internal/testprotos/test/weak1/test_weak.pb.go
@@ -15,11 +15,10 @@
 )
 
 type WeakImportMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *WeakImportMessage1) Reset() {
diff --git a/internal/testprotos/test/weak2/test_weak.pb.go b/internal/testprotos/test/weak2/test_weak.pb.go
index 4d3cde8..0d9b1e5 100644
--- a/internal/testprotos/test/weak2/test_weak.pb.go
+++ b/internal/testprotos/test/weak2/test_weak.pb.go
@@ -15,11 +15,10 @@
 )
 
 type WeakImportMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *WeakImportMessage2) Reset() {
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
index 2c68e85..a8f1b18 100644
--- a/internal/testprotos/test3/test.pb.go
+++ b/internal/testprotos/test3/test.pb.go
@@ -119,10 +119,7 @@
 }
 
 type TestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                  protoimpl.MessageState                 `protogen:"open.v1"`
 	SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
 	SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
 	SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
@@ -186,24 +183,24 @@
 	RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
 	RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
 	RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
-	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum"`
-	// Types that are assignable to OneofField:
+	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" 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,proto3" 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,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" 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,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" 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,proto3" 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,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test3.TestAllTypes_NestedEnum"`
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypes_OneofUint32
 	//	*TestAllTypes_OneofNestedMessage
@@ -214,7 +211,9 @@
 	//	*TestAllTypes_OneofFloat
 	//	*TestAllTypes_OneofDouble
 	//	*TestAllTypes_OneofEnum
-	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes) Reset() {
@@ -807,72 +806,90 @@
 	return nil
 }
 
-func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypes) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypes) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypes_FOO
 }
@@ -936,12 +953,11 @@
 func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
 
 type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	D             int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-	D int32 `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessage) Reset() {
@@ -989,12 +1005,11 @@
 }
 
 type TestAllTypes_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           int32         `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_NestedMessage) Reset() {
diff --git a/internal/testprotos/test3/test_import.pb.go b/internal/testprotos/test3/test_import.pb.go
index ae1efc0..a8eeea3 100644
--- a/internal/testprotos/test3/test_import.pb.go
+++ b/internal/testprotos/test3/test_import.pb.go
@@ -58,9 +58,9 @@
 }
 
 type ImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ImportMessage) Reset() {
diff --git a/internal/testprotos/testeditions/test.pb.go b/internal/testprotos/testeditions/test.pb.go
index 4cb2247..a3f228a 100644
--- a/internal/testprotos/testeditions/test.pb.go
+++ b/internal/testprotos/testeditions/test.pb.go
@@ -8,6 +8,7 @@
 package testeditions
 
 import (
+	enums "google.golang.org/protobuf/internal/testprotos/enums"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -119,83 +120,89 @@
 }
 
 type TestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SingularInt32          int32                                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
-	SingularInt64          int64                                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
-	SingularUint32         uint32                                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
-	SingularUint64         uint64                                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64" json:"singular_uint64,omitempty"`
-	SingularSint32         int32                                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32" json:"singular_sint32,omitempty"`
-	SingularSint64         int64                                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64" json:"singular_sint64,omitempty"`
-	SingularFixed32        uint32                                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32" json:"singular_fixed32,omitempty"`
-	SingularFixed64        uint64                                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64" json:"singular_fixed64,omitempty"`
-	SingularSfixed32       int32                                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32" json:"singular_sfixed32,omitempty"`
-	SingularSfixed64       int64                                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64" json:"singular_sfixed64,omitempty"`
-	SingularFloat          float32                                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat" json:"singular_float,omitempty"`
-	SingularDouble         float64                                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble" json:"singular_double,omitempty"`
-	SingularBool           bool                                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool" json:"singular_bool,omitempty"`
-	SingularString         string                                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString" json:"singular_string,omitempty"`
-	SingularBytes          []byte                                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes" json:"singular_bytes,omitempty"`
-	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"`
-	OptionalUint64         *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalSint32         *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalSint64         *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalFixed32        *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalFixed64        *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed32       *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalSfixed64       *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalFloat          *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalDouble         *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalBool           *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	Optionalgroup          *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	NotGroupLikeDelimited  *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited" json:"not_group_like_delimited,omitempty"`
-	OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-	OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
-	OptionalNestedEnum     *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
-	OptionalForeignEnum    *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
-	RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	Repeatedgroup          []*TestAllTypes_RepeatedGroup          `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	RepeatedNestedMessage  []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
-	RepeatedForeignMessage []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
-	RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	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"`
-	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"`
-	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"`
-	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	state            protoimpl.MessageState `protogen:"open.v1"`
+	SingularInt32    int32                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
+	SingularInt64    int64                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
+	SingularUint32   uint32                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
+	SingularUint64   uint64                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64" json:"singular_uint64,omitempty"`
+	SingularSint32   int32                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32" json:"singular_sint32,omitempty"`
+	SingularSint64   int64                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64" json:"singular_sint64,omitempty"`
+	SingularFixed32  uint32                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32" json:"singular_fixed32,omitempty"`
+	SingularFixed64  uint64                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64" json:"singular_fixed64,omitempty"`
+	SingularSfixed32 int32                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32" json:"singular_sfixed32,omitempty"`
+	SingularSfixed64 int64                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64" json:"singular_sfixed64,omitempty"`
+	SingularFloat    float32                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat" json:"singular_float,omitempty"`
+	SingularDouble   float64                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble" json:"singular_double,omitempty"`
+	SingularBool     bool                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool" json:"singular_bool,omitempty"`
+	SingularString   string                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString" json:"singular_string,omitempty"`
+	SingularBytes    []byte                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes" json:"singular_bytes,omitempty"`
+	// message-typed fields elided, as they cannot specify implicit presence.
+	SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=goproto.proto.testeditions.ImportEnum" json:"singular_import_enum,omitempty"`
+	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"`
+	OptionalUint64            *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalSint32            *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalSint64            *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalFixed32           *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalFixed64           *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed32          *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalSfixed64          *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalFloat             *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalDouble            *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalBool              *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited" json:"not_group_like_delimited,omitempty"`
+	OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
+	OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage" json:"optional_import_message,omitempty"`
+	OptionalNestedEnum        *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
+	OptionalForeignEnum       *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
+	OptionalImportEnum        *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=goproto.proto.testeditions.ImportEnum" json:"optional_import_enum,omitempty"`
+	OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage" json:"optional_lazy_nested_message,omitempty"`
+	RepeatedInt32             []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	Repeatedgroup             []*TestAllTypes_RepeatedGroup          `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	RepeatedNestedMessage     []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
+	RepeatedForeignMessage    []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
+	RepeatedImportmessage     []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage" json:"repeated_importmessage,omitempty"`
+	RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=goproto.proto.testeditions.ImportEnum" json:"repeated_importenum,omitempty"`
+	MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64             map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32           map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64           map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32           map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64           map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32         map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	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"`
+	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"`
+	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"`
+	MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum       map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum"`
 	// Singular with defaults
 	DefaultInt32       *int32                   `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81" json:"default_int32,omitempty"`
 	DefaultInt64       *int64                   `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82" json:"default_int64,omitempty"`
@@ -214,7 +221,7 @@
 	DefaultBytes       []byte                   `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
 	DefaultNestedEnum  *TestAllTypes_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
 	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=goproto.proto.testeditions.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestAllTypes_OneofUint32
 	//	*TestAllTypes_OneofNestedMessage
@@ -229,10 +236,12 @@
 	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
 	// A oneof with exactly one field.
 	//
-	// Types that are assignable to OneofOptional:
+	// Types that are valid to be assigned to OneofOptional:
 	//
 	//	*TestAllTypes_OneofOptionalUint32
 	OneofOptional isTestAllTypes_OneofOptional `protobuf_oneof:"oneof_optional"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Default values for TestAllTypes fields.
@@ -395,6 +404,27 @@
 	return nil
 }
 
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
 func (x *TestAllTypes) GetOptionalInt32() int32 {
 	if x != nil && x.OptionalInt32 != nil {
 		return *x.OptionalInt32
@@ -528,6 +558,13 @@
 	return nil
 }
 
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.OptionalImportMessage
+	}
+	return nil
+}
+
 func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
 	if x != nil && x.OptionalNestedEnum != nil {
 		return *x.OptionalNestedEnum
@@ -542,6 +579,20 @@
 	return ForeignEnum_FOREIGN_ZERO
 }
 
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil && x.OptionalImportEnum != nil {
+		return *x.OptionalImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalLazyNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalLazyNestedMessage
+	}
+	return nil
+}
+
 func (x *TestAllTypes) GetRepeatedInt32() []int32 {
 	if x != nil {
 		return x.RepeatedInt32
@@ -668,6 +719,13 @@
 	return nil
 }
 
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		return x.RepeatedImportmessage
+	}
+	return nil
+}
+
 func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
 	if x != nil {
 		return x.RepeatedNestedEnum
@@ -682,6 +740,13 @@
 	return nil
 }
 
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.RepeatedImportenum
+	}
+	return nil
+}
+
 func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
 	if x != nil {
 		return x.MapInt32Int32
@@ -920,93 +985,115 @@
 	return Default_TestAllTypes_DefaultForeignEnum
 }
 
-func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint32); ok {
-		return x.OneofUint32
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *TestAllTypes) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBytes); ok {
-		return x.OneofBytes
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBool); ok {
-		return x.OneofBool
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
 	}
 	return false
 }
 
 func (x *TestAllTypes) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint64); ok {
-		return x.OneofUint64
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofFloat); ok {
-		return x.OneofFloat
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofDouble); ok {
-		return x.OneofDouble
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
 	}
 	return 0
 }
 
 func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return TestAllTypes_FOO
 }
 
 func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
-	if x, ok := x.GetOneofField().(*TestAllTypes_Oneofgroup); ok {
-		return x.Oneofgroup
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
 	}
 	return nil
 }
 
-func (m *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
-	if m != nil {
-		return m.OneofOptional
+func (x *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
+	if x != nil {
+		return x.OneofOptional
 	}
 	return nil
 }
 
 func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
-	if x, ok := x.GetOneofOptional().(*TestAllTypes_OneofOptionalUint32); ok {
-		return x.OneofOptionalUint32
+	if x != nil {
+		if x, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
 	}
 	return 0
 }
@@ -1085,18 +1172,853 @@
 
 func (*TestAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}
 
-type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+type TestManyMessageFieldsMessage struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	F1            *TestAllTypes          `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2            *TestAllTypes          `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
+	F3            *TestAllTypes          `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	F4            *TestAllTypes          `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	F5            *TestAllTypes          `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
+	F6            *TestAllTypes          `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
+	F7            *TestAllTypes          `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
+	F8            *TestAllTypes          `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
+	F9            *TestAllTypes          `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
+	F10           *TestAllTypes          `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
+	F11           *TestAllTypes          `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
+	F12           *TestAllTypes          `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
+	F13           *TestAllTypes          `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
+	F14           *TestAllTypes          `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
+	F15           *TestAllTypes          `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
+	F16           *TestAllTypes          `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
+	F17           *TestAllTypes          `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
+	F18           *TestAllTypes          `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
+	F19           *TestAllTypes          `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
+	F20           *TestAllTypes          `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
+	F21           *TestAllTypes          `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
+	F22           *TestAllTypes          `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
+	F23           *TestAllTypes          `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
+	F24           *TestAllTypes          `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
+	F25           *TestAllTypes          `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
+	F26           *TestAllTypes          `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
+	F27           *TestAllTypes          `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
+	F28           *TestAllTypes          `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
+	F29           *TestAllTypes          `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
+	F30           *TestAllTypes          `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
+	F31           *TestAllTypes          `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
+	F32           *TestAllTypes          `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
+	F33           *TestAllTypes          `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
+	F34           *TestAllTypes          `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
+	F35           *TestAllTypes          `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
+	F36           *TestAllTypes          `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
+	F37           *TestAllTypes          `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
+	F38           *TestAllTypes          `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
+	F39           *TestAllTypes          `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
+	F40           *TestAllTypes          `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
+	F41           *TestAllTypes          `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
+	F42           *TestAllTypes          `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
+	F43           *TestAllTypes          `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
+	F44           *TestAllTypes          `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
+	F45           *TestAllTypes          `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
+	F46           *TestAllTypes          `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
+	F47           *TestAllTypes          `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
+	F48           *TestAllTypes          `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
+	F49           *TestAllTypes          `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
+	F50           *TestAllTypes          `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
+	F51           *TestAllTypes          `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
+	F52           *TestAllTypes          `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
+	F53           *TestAllTypes          `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
+	F54           *TestAllTypes          `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
+	F55           *TestAllTypes          `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
+	F56           *TestAllTypes          `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
+	F57           *TestAllTypes          `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
+	F58           *TestAllTypes          `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
+	F59           *TestAllTypes          `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
+	F60           *TestAllTypes          `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
+	F61           *TestAllTypes          `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
+	F62           *TestAllTypes          `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
+	F63           *TestAllTypes          `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
+	F64           *TestAllTypes          `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
+	F65           *TestAllTypes          `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
+	F66           *TestAllTypes          `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
+	F67           *TestAllTypes          `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
+	F68           *TestAllTypes          `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
+	F69           *TestAllTypes          `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
+	F70           *TestAllTypes          `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
+	F71           *TestAllTypes          `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
+	F72           *TestAllTypes          `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
+	F73           *TestAllTypes          `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
+	F74           *TestAllTypes          `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
+	F75           *TestAllTypes          `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
+	F76           *TestAllTypes          `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
+	F77           *TestAllTypes          `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
+	F78           *TestAllTypes          `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
+	F79           *TestAllTypes          `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
+	F80           *TestAllTypes          `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
+	F81           *TestAllTypes          `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
+	F82           *TestAllTypes          `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
+	F83           *TestAllTypes          `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
+	F84           *TestAllTypes          `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
+	F85           *TestAllTypes          `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
+	F86           *TestAllTypes          `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
+	F87           *TestAllTypes          `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
+	F88           *TestAllTypes          `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
+	F89           *TestAllTypes          `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
+	F90           *TestAllTypes          `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
+	F91           *TestAllTypes          `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
+	F92           *TestAllTypes          `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
+	F93           *TestAllTypes          `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
+	F94           *TestAllTypes          `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
+	F95           *TestAllTypes          `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
+	F96           *TestAllTypes          `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
+	F97           *TestAllTypes          `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
+	F98           *TestAllTypes          `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
+	F99           *TestAllTypes          `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
+	F100          *TestAllTypes          `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
 
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
-	D *int32 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+func (x *TestManyMessageFieldsMessage) Reset() {
+	*x = TestManyMessageFieldsMessage{}
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestManyMessageFieldsMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestManyMessageFieldsMessage) ProtoMessage() {}
+
+func (x *TestManyMessageFieldsMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[1]
+	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 TestManyMessageFieldsMessage.ProtoReflect.Descriptor instead.
+func (*TestManyMessageFieldsMessage) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *TestManyMessageFieldsMessage) GetF1() *TestAllTypes {
+	if x != nil {
+		return x.F1
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF2() *TestAllTypes {
+	if x != nil {
+		return x.F2
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF3() *TestAllTypes {
+	if x != nil {
+		return x.F3
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF4() *TestAllTypes {
+	if x != nil {
+		return x.F4
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF5() *TestAllTypes {
+	if x != nil {
+		return x.F5
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF6() *TestAllTypes {
+	if x != nil {
+		return x.F6
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF7() *TestAllTypes {
+	if x != nil {
+		return x.F7
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF8() *TestAllTypes {
+	if x != nil {
+		return x.F8
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF9() *TestAllTypes {
+	if x != nil {
+		return x.F9
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF10() *TestAllTypes {
+	if x != nil {
+		return x.F10
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF11() *TestAllTypes {
+	if x != nil {
+		return x.F11
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF12() *TestAllTypes {
+	if x != nil {
+		return x.F12
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF13() *TestAllTypes {
+	if x != nil {
+		return x.F13
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF14() *TestAllTypes {
+	if x != nil {
+		return x.F14
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF15() *TestAllTypes {
+	if x != nil {
+		return x.F15
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF16() *TestAllTypes {
+	if x != nil {
+		return x.F16
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF17() *TestAllTypes {
+	if x != nil {
+		return x.F17
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF18() *TestAllTypes {
+	if x != nil {
+		return x.F18
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF19() *TestAllTypes {
+	if x != nil {
+		return x.F19
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF20() *TestAllTypes {
+	if x != nil {
+		return x.F20
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF21() *TestAllTypes {
+	if x != nil {
+		return x.F21
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF22() *TestAllTypes {
+	if x != nil {
+		return x.F22
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF23() *TestAllTypes {
+	if x != nil {
+		return x.F23
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF24() *TestAllTypes {
+	if x != nil {
+		return x.F24
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF25() *TestAllTypes {
+	if x != nil {
+		return x.F25
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF26() *TestAllTypes {
+	if x != nil {
+		return x.F26
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF27() *TestAllTypes {
+	if x != nil {
+		return x.F27
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF28() *TestAllTypes {
+	if x != nil {
+		return x.F28
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF29() *TestAllTypes {
+	if x != nil {
+		return x.F29
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF30() *TestAllTypes {
+	if x != nil {
+		return x.F30
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF31() *TestAllTypes {
+	if x != nil {
+		return x.F31
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF32() *TestAllTypes {
+	if x != nil {
+		return x.F32
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF33() *TestAllTypes {
+	if x != nil {
+		return x.F33
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF34() *TestAllTypes {
+	if x != nil {
+		return x.F34
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF35() *TestAllTypes {
+	if x != nil {
+		return x.F35
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF36() *TestAllTypes {
+	if x != nil {
+		return x.F36
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF37() *TestAllTypes {
+	if x != nil {
+		return x.F37
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF38() *TestAllTypes {
+	if x != nil {
+		return x.F38
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF39() *TestAllTypes {
+	if x != nil {
+		return x.F39
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF40() *TestAllTypes {
+	if x != nil {
+		return x.F40
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF41() *TestAllTypes {
+	if x != nil {
+		return x.F41
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF42() *TestAllTypes {
+	if x != nil {
+		return x.F42
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF43() *TestAllTypes {
+	if x != nil {
+		return x.F43
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF44() *TestAllTypes {
+	if x != nil {
+		return x.F44
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF45() *TestAllTypes {
+	if x != nil {
+		return x.F45
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF46() *TestAllTypes {
+	if x != nil {
+		return x.F46
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF47() *TestAllTypes {
+	if x != nil {
+		return x.F47
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF48() *TestAllTypes {
+	if x != nil {
+		return x.F48
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF49() *TestAllTypes {
+	if x != nil {
+		return x.F49
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF50() *TestAllTypes {
+	if x != nil {
+		return x.F50
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF51() *TestAllTypes {
+	if x != nil {
+		return x.F51
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF52() *TestAllTypes {
+	if x != nil {
+		return x.F52
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF53() *TestAllTypes {
+	if x != nil {
+		return x.F53
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF54() *TestAllTypes {
+	if x != nil {
+		return x.F54
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF55() *TestAllTypes {
+	if x != nil {
+		return x.F55
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF56() *TestAllTypes {
+	if x != nil {
+		return x.F56
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF57() *TestAllTypes {
+	if x != nil {
+		return x.F57
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF58() *TestAllTypes {
+	if x != nil {
+		return x.F58
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF59() *TestAllTypes {
+	if x != nil {
+		return x.F59
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF60() *TestAllTypes {
+	if x != nil {
+		return x.F60
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF61() *TestAllTypes {
+	if x != nil {
+		return x.F61
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF62() *TestAllTypes {
+	if x != nil {
+		return x.F62
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF63() *TestAllTypes {
+	if x != nil {
+		return x.F63
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF64() *TestAllTypes {
+	if x != nil {
+		return x.F64
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF65() *TestAllTypes {
+	if x != nil {
+		return x.F65
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF66() *TestAllTypes {
+	if x != nil {
+		return x.F66
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF67() *TestAllTypes {
+	if x != nil {
+		return x.F67
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF68() *TestAllTypes {
+	if x != nil {
+		return x.F68
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF69() *TestAllTypes {
+	if x != nil {
+		return x.F69
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF70() *TestAllTypes {
+	if x != nil {
+		return x.F70
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF71() *TestAllTypes {
+	if x != nil {
+		return x.F71
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF72() *TestAllTypes {
+	if x != nil {
+		return x.F72
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF73() *TestAllTypes {
+	if x != nil {
+		return x.F73
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF74() *TestAllTypes {
+	if x != nil {
+		return x.F74
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF75() *TestAllTypes {
+	if x != nil {
+		return x.F75
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF76() *TestAllTypes {
+	if x != nil {
+		return x.F76
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF77() *TestAllTypes {
+	if x != nil {
+		return x.F77
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF78() *TestAllTypes {
+	if x != nil {
+		return x.F78
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF79() *TestAllTypes {
+	if x != nil {
+		return x.F79
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF80() *TestAllTypes {
+	if x != nil {
+		return x.F80
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF81() *TestAllTypes {
+	if x != nil {
+		return x.F81
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF82() *TestAllTypes {
+	if x != nil {
+		return x.F82
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF83() *TestAllTypes {
+	if x != nil {
+		return x.F83
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF84() *TestAllTypes {
+	if x != nil {
+		return x.F84
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF85() *TestAllTypes {
+	if x != nil {
+		return x.F85
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF86() *TestAllTypes {
+	if x != nil {
+		return x.F86
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF87() *TestAllTypes {
+	if x != nil {
+		return x.F87
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF88() *TestAllTypes {
+	if x != nil {
+		return x.F88
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF89() *TestAllTypes {
+	if x != nil {
+		return x.F89
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF90() *TestAllTypes {
+	if x != nil {
+		return x.F90
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF91() *TestAllTypes {
+	if x != nil {
+		return x.F91
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF92() *TestAllTypes {
+	if x != nil {
+		return x.F92
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF93() *TestAllTypes {
+	if x != nil {
+		return x.F93
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF94() *TestAllTypes {
+	if x != nil {
+		return x.F94
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF95() *TestAllTypes {
+	if x != nil {
+		return x.F95
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF96() *TestAllTypes {
+	if x != nil {
+		return x.F96
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF97() *TestAllTypes {
+	if x != nil {
+		return x.F97
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF98() *TestAllTypes {
+	if x != nil {
+		return x.F98
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF99() *TestAllTypes {
+	if x != nil {
+		return x.F99
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF100() *TestAllTypes {
+	if x != nil {
+		return x.F100
+	}
+	return nil
+}
+
+type ForeignMessage struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	D             *int32                 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ForeignMessage) Reset() {
 	*x = ForeignMessage{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[1]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[2]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1108,7 +2030,7 @@
 func (*ForeignMessage) ProtoMessage() {}
 
 func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[1]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[2]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1121,7 +2043,7 @@
 
 // Deprecated: Use ForeignMessage.ProtoReflect.Descriptor instead.
 func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{1}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{2}
 }
 
 func (x *ForeignMessage) GetC() int32 {
@@ -1139,16 +2061,15 @@
 }
 
 type TestRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RequiredField *int32                 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RequiredField *int32 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequired) Reset() {
 	*x = TestRequired{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[2]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[3]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1160,7 +2081,7 @@
 func (*TestRequired) ProtoMessage() {}
 
 func (x *TestRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[2]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[3]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1173,7 +2094,7 @@
 
 // Deprecated: Use TestRequired.ProtoReflect.Descriptor instead.
 func (*TestRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{2}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{3}
 }
 
 func (x *TestRequired) GetRequiredField() int32 {
@@ -1184,22 +2105,21 @@
 }
 
 type TestRequiredForeign struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state           protoimpl.MessageState  `protogen:"open.v1"`
 	OptionalMessage *TestRequired           `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
 	RepeatedMessage []*TestRequired         `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
 	MapMessage      map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to OneofField:
+	// Types that are valid to be assigned to OneofField:
 	//
 	//	*TestRequiredForeign_OneofMessage
-	OneofField isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	OneofField    isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredForeign) Reset() {
 	*x = TestRequiredForeign{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[3]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[4]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1211,7 +2131,7 @@
 func (*TestRequiredForeign) ProtoMessage() {}
 
 func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[3]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[4]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1224,7 +2144,7 @@
 
 // Deprecated: Use TestRequiredForeign.ProtoReflect.Descriptor instead.
 func (*TestRequiredForeign) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{3}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{4}
 }
 
 func (x *TestRequiredForeign) GetOptionalMessage() *TestRequired {
@@ -1248,16 +2168,18 @@
 	return nil
 }
 
-func (m *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
-	if m != nil {
-		return m.OneofField
+func (x *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
+	if x != nil {
+		return x.OneofField
 	}
 	return nil
 }
 
 func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
-	if x, ok := x.GetOneofField().(*TestRequiredForeign_OneofMessage); ok {
-		return x.OneofMessage
+	if x != nil {
+		if x, ok := x.OneofField.(*TestRequiredForeign_OneofMessage); ok {
+			return x.OneofMessage
+		}
 	}
 	return nil
 }
@@ -1273,17 +2195,16 @@
 func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
 
 type TestRequiredGroupFields struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state         protoimpl.MessageState                   `protogen:"open.v1"`
 	Optionalgroup *TestRequiredGroupFields_OptionalGroup   `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
 	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields) Reset() {
 	*x = TestRequiredGroupFields{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[4]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[5]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1295,7 +2216,7 @@
 func (*TestRequiredGroupFields) ProtoMessage() {}
 
 func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[4]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[5]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1308,7 +2229,7 @@
 
 // Deprecated: Use TestRequiredGroupFields.ProtoReflect.Descriptor instead.
 func (*TestRequiredGroupFields) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{4}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{5}
 }
 
 func (x *TestRequiredGroupFields) GetOptionalgroup() *TestRequiredGroupFields_OptionalGroup {
@@ -1325,30 +2246,73 @@
 	return nil
 }
 
-type TestPackedTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+type TestRequiredLazy struct {
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage" json:"optional_lazy_message,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
 
-	PackedInt32    []int32       `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
-	PackedInt64    []int64       `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
-	PackedUint32   []uint32      `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
-	PackedUint64   []uint64      `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
-	PackedSint32   []int32       `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
-	PackedSint64   []int64       `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
-	PackedFixed32  []uint32      `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
-	PackedFixed64  []uint64      `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
-	PackedSfixed32 []int32       `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
-	PackedSfixed64 []int64       `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
-	PackedFloat    []float32     `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
-	PackedDouble   []float64     `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
-	PackedBool     []bool        `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
-	PackedEnum     []ForeignEnum `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
+func (x *TestRequiredLazy) Reset() {
+	*x = TestRequiredLazy{}
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredLazy) ProtoMessage() {}
+
+func (x *TestRequiredLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[6]
+	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 TestRequiredLazy.ProtoReflect.Descriptor instead.
+func (*TestRequiredLazy) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *TestRequiredLazy) GetOptionalLazyMessage() *TestRequired {
+	if x != nil {
+		return x.OptionalLazyMessage
+	}
+	return nil
+}
+
+type TestPackedTypes struct {
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
+	PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
+	PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
+	PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
+	PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
+	PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
+	PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
+	PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
+	PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
+	PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
+	PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
+	PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
+	PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
+	PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *TestPackedTypes) Reset() {
 	*x = TestPackedTypes{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[5]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[7]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1360,7 +2324,7 @@
 func (*TestPackedTypes) ProtoMessage() {}
 
 func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[5]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[7]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1373,7 +2337,7 @@
 
 // Deprecated: Use TestPackedTypes.ProtoReflect.Descriptor instead.
 func (*TestPackedTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{5}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{7}
 }
 
 func (x *TestPackedTypes) GetPackedInt32() []int32 {
@@ -1475,15 +2439,15 @@
 }
 
 type TestPackedExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestPackedExtensions) Reset() {
 	*x = TestPackedExtensions{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[6]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[8]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1495,7 +2459,7 @@
 func (*TestPackedExtensions) ProtoMessage() {}
 
 func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[6]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[8]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1508,21 +2472,131 @@
 
 // Deprecated: Use TestPackedExtensions.ProtoReflect.Descriptor instead.
 func (*TestPackedExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{6}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{8}
+}
+
+type RemoteDefault struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Default       *enums.Enum            `protobuf:"varint,1,opt,name=default,enum=goproto.proto.enums.Enum" json:"default,omitempty"`
+	Zero          *enums.Enum            `protobuf:"varint,2,opt,name=zero,enum=goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
+	One           *enums.Enum            `protobuf:"varint,3,opt,name=one,enum=goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
+	Elevent       *enums.Enum            `protobuf:"varint,4,opt,name=elevent,enum=goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
+	Seventeen     *enums.Enum            `protobuf:"varint,5,opt,name=seventeen,enum=goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
+	Thirtyseven   *enums.Enum            `protobuf:"varint,6,opt,name=thirtyseven,enum=goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
+	Sixtyseven    *enums.Enum            `protobuf:"varint,7,opt,name=sixtyseven,enum=goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
+	Negative      *enums.Enum            `protobuf:"varint,8,opt,name=negative,enum=goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+// Default values for RemoteDefault fields.
+const (
+	Default_RemoteDefault_Zero        = enums.Enum(0)  // enums.Enum_ZERO
+	Default_RemoteDefault_One         = enums.Enum(1)  // enums.Enum_ONE
+	Default_RemoteDefault_Elevent     = enums.Enum(11) // enums.Enum_ELEVENT
+	Default_RemoteDefault_Seventeen   = enums.Enum(17) // enums.Enum_SEVENTEEN
+	Default_RemoteDefault_Thirtyseven = enums.Enum(37) // enums.Enum_THIRTYSEVEN
+	Default_RemoteDefault_Sixtyseven  = enums.Enum(67) // enums.Enum_SIXTYSEVEN
+	Default_RemoteDefault_Negative    = enums.Enum(-1) // enums.Enum_NEGATIVE
+)
+
+func (x *RemoteDefault) Reset() {
+	*x = RemoteDefault{}
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RemoteDefault) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RemoteDefault) ProtoMessage() {}
+
+func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[9]
+	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 RemoteDefault.ProtoReflect.Descriptor instead.
+func (*RemoteDefault) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *RemoteDefault) GetDefault() enums.Enum {
+	if x != nil && x.Default != nil {
+		return *x.Default
+	}
+	return enums.Enum(1337)
+}
+
+func (x *RemoteDefault) GetZero() enums.Enum {
+	if x != nil && x.Zero != nil {
+		return *x.Zero
+	}
+	return Default_RemoteDefault_Zero
+}
+
+func (x *RemoteDefault) GetOne() enums.Enum {
+	if x != nil && x.One != nil {
+		return *x.One
+	}
+	return Default_RemoteDefault_One
+}
+
+func (x *RemoteDefault) GetElevent() enums.Enum {
+	if x != nil && x.Elevent != nil {
+		return *x.Elevent
+	}
+	return Default_RemoteDefault_Elevent
+}
+
+func (x *RemoteDefault) GetSeventeen() enums.Enum {
+	if x != nil && x.Seventeen != nil {
+		return *x.Seventeen
+	}
+	return Default_RemoteDefault_Seventeen
+}
+
+func (x *RemoteDefault) GetThirtyseven() enums.Enum {
+	if x != nil && x.Thirtyseven != nil {
+		return *x.Thirtyseven
+	}
+	return Default_RemoteDefault_Thirtyseven
+}
+
+func (x *RemoteDefault) GetSixtyseven() enums.Enum {
+	if x != nil && x.Sixtyseven != nil {
+		return *x.Sixtyseven
+	}
+	return Default_RemoteDefault_Sixtyseven
+}
+
+func (x *RemoteDefault) GetNegative() enums.Enum {
+	if x != nil && x.Negative != nil {
+		return *x.Negative
+	}
+	return Default_RemoteDefault_Negative
 }
 
 type TestAllTypes_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32        `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_NestedMessage) Reset() {
 	*x = TestAllTypes_NestedMessage{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[7]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[10]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1534,7 +2608,7 @@
 func (*TestAllTypes_NestedMessage) ProtoMessage() {}
 
 func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[7]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[10]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1565,18 +2639,17 @@
 }
 
 type TestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState      `protogen:"open.v1"`
 	A                     *int32                      `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
 	SameFieldNumber       *int32                      `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_OptionalGroup) Reset() {
 	*x = TestAllTypes_OptionalGroup{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[8]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[11]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1588,7 +2661,7 @@
 func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[8]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[11]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1626,17 +2699,16 @@
 }
 
 type TestAllTypes_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState      `protogen:"open.v1"`
 	A                     *int32                      `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_RepeatedGroup) Reset() {
 	*x = TestAllTypes_RepeatedGroup{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[9]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[12]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1648,7 +2720,7 @@
 func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[9]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[12]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1679,17 +2751,16 @@
 }
 
 type TestAllTypes_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	B *int32 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllTypes_OneofGroup) Reset() {
 	*x = TestAllTypes_OneofGroup{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[27]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[30]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1701,7 +2772,7 @@
 func (*TestAllTypes_OneofGroup) ProtoMessage() {}
 
 func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[27]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[30]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1732,16 +2803,15 @@
 }
 
 type TestRequiredGroupFields_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
 	*x = TestRequiredGroupFields_OptionalGroup{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[29]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[32]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1753,7 +2823,7 @@
 func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
 
 func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[29]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[32]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1766,7 +2836,7 @@
 
 // Deprecated: Use TestRequiredGroupFields_OptionalGroup.ProtoReflect.Descriptor instead.
 func (*TestRequiredGroupFields_OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{4, 0}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{5, 0}
 }
 
 func (x *TestRequiredGroupFields_OptionalGroup) GetA() int32 {
@@ -1777,16 +2847,15 @@
 }
 
 type TestRequiredGroupFields_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
 	*x = TestRequiredGroupFields_RepeatedGroup{}
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[30]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[33]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
@@ -1798,7 +2867,7 @@
 func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
 
 func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[30]
+	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[33]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1811,7 +2880,7 @@
 
 // Deprecated: Use TestRequiredGroupFields_RepeatedGroup.ProtoReflect.Descriptor instead.
 func (*TestRequiredGroupFields_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{4, 1}
+	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{5, 1}
 }
 
 func (x *TestRequiredGroupFields_RepeatedGroup) GetA() int32 {
@@ -1975,722 +3044,1194 @@
 	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
 	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67,
 	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe0, 0x40, 0x0a, 0x0c, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69,
-	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7c, 0x20, 0x01,
-	0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x03,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x04, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x11,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28,
-	0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x82, 0x01, 0x20,
-	0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x31, 0x0a, 0x10, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0x83, 0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x33,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x1a, 0x32, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x47, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28,
+	0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x84,
+	0x01, 0x20, 0x01, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x33,
 	0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x64, 0x36, 0x34, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
 	0x02, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x10, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28,
-	0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28,
-	0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0d, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x08,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
-	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a,
-	0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27,
-	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
-	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x0d,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6c, 0x6f,
+	0x61, 0x74, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x64,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x6f, 0x6c,
+	0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x79,
+	0x74, 0x65, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x12, 0x6d, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x63, 0x0a, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72,
+	0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52,
+	0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x60, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x90, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x12, 0x76, 0x0a, 0x18, 0x6e, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c,
-	0x69, 0x6b, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x18, 0x11, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x28, 0x02, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x6b, 0x65,
-	0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x17, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
-	0x65, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45,
-	0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03,
-	0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36,
-	0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20,
-	0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20,
-	0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
-	0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x2e, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x18, 0x02,
-	0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x12, 0x6e, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x64, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x31, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5b,
-	0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x63, 0x0a, 0x0f, 0x6d,
-	0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b,
+	0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02,
+	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
+	0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x63, 0x0a,
+	0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x76, 0x0a, 0x18, 0x6e, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+	0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x18, 0x11,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x28, 0x02, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x6b,
+	0x65, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x17, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
 	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x61, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x3f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61,
-	0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61,
-	0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66,
-	0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
-	0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d,
-	0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x58, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
+	0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
-	0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0b, 0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x69, 0x0a,
-	0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x12, 0x7f, 0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x76, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05,
-	0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20,
-	0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02,
-	0x38, 0x34, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a,
-	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x56, 0x20, 0x01, 0x28, 0x12, 0x3a, 0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x57, 0x20, 0x01, 0x28,
-	0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02,
-	0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39,
-	0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x50, 0x20, 0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30,
-	0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
-	0x61, 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x0e,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c,
-	0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08,
-	0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42,
-	0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c,
-	0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74,
-	0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52,
-	0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x68, 0x0a,
-	0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x60, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
-	0x03, 0x42, 0x41, 0x52, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x66, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x61, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b,
-	0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x52, 0x12, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20,
-	0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48,
-	0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5c, 0x0a, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66,
-	0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x1a, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12,
-	0x4a, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0b,
-	0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a, 0xba, 0x01, 0x0a, 0x0d,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a,
-	0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x6f, 0x0a, 0x17, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e,
+	0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x7b, 0x0a, 0x1c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61,
+	0x7a, 0x79, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42,
+	0x02, 0x28, 0x01, 0x52, 0x19, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a,
+	0x79, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27,
+	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12,
+	0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28,
+	0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01,
+	0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f,
+	0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+	0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x18, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x6e, 0x0a, 0x17,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e,
 	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
 	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
 	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11,
-	0x73, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65,
-	0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x8e, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18,
-	0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x6f, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x60, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03,
+	0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72,
+	0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x18,
+	0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75,
+	0x6d, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
 	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a,
-	0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a,
-	0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61,
+	0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d,
+	0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
+	0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+	0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11,
+	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70,
 	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e,
-	0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
-	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x66, 0x0a, 0x10,
+	0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
 	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7b, 0x0a, 0x18, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f,
+	0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d,
+	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x66,
+	0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x7f, 0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x16, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x76, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a,
+	0x02, 0x38, 0x32, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52, 0x0d, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x54,
+	0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a,
+	0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a, 0x02, 0x38, 0x36, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b,
+	0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x18, 0x57, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58,
+	0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01,
+	0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x50, 0x20, 0x01, 0x28,
+	0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04,
+	0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f,
+	0x61, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30,
+	0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x12, 0x27, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28,
+	0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05,
+	0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x79,
+	0x74, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x60, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x42, 0x41, 0x52, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x66, 0x0a,
+	0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41,
+	0x52, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c,
+	0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f,
+	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
+	0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c,
+	0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x0a,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x5c, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
 	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x28, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47,
-	0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x62,
-	0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07,
-	0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01,
-	0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47,
-	0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x2c, 0x0a, 0x0e,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c,
-	0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x65,
-	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0e, 0x72, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xea, 0x03, 0x0a, 0x13, 0x54, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x12, 0x53, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x12, 0x34, 0x0a, 0x15, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0d, 0x48,
+	0x01, 0x52, 0x13, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72,
+	0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76,
+	0x65, 0x1a, 0xba, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x61, 0x12, 0x6f, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
+	0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73,
+	0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x8e,
+	0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x6f,
+	0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x1b,
+	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x7b, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x28, 0x0a, 0x0a,
+	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x01, 0x62, 0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a,
+	0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12,
+	0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
+	0x42, 0x10, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x22, 0xfe, 0x2e, 0x0a, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x79, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
 	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
 	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x0b, 0x6d, 0x61,
-	0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x3f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x0d,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x31, 0x12, 0x38, 0x0a,
+	0x02, 0x66, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x32, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x33, 0x18, 0x03, 0x20,
 	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52,
-	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x67, 0x0a,
-	0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66,
+	0x33, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x34, 0x12, 0x38, 0x0a, 0x02, 0x66,
+	0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x02, 0x66, 0x35, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28,
 	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xc5, 0x02, 0x0a, 0x17, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x12, 0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x52, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x1a, 0x24, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
-	0x75, 0x70, 0x12, 0x13, 0x0a, 0x01, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa,
-	0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x61, 0x1a, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x13, 0x0a, 0x01, 0x61, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x61, 0x22, 0xa0, 0x05,
-	0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x12, 0x28, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28,
-	0x03, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01,
-	0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52,
-	0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a,
-	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e,
-	0x20, 0x03, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa,
-	0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
-	0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
-	0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x28, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x0d, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x03,
-	0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01,
-	0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
-	0x4f, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67,
-	0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa,
-	0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x22, 0x20, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80,
-	0x80, 0x02, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52,
-	0x4f, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46,
-	0x4f, 0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
-	0x42, 0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e,
-	0x5f, 0x42, 0x41, 0x5a, 0x10, 0x06, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05,
-	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
-	0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5c,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x36, 0x12,
+	0x38, 0x0a, 0x02, 0x66, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x37, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x38, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x02, 0x66, 0x38, 0x12, 0x38, 0x0a, 0x02, 0x66, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
 	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x30, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20,
-	0x03, 0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03, 0x28,
-	0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5e, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5e, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06,
-	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x60, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28,
-	0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x60, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20,
-	0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x39, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03,
-	0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x31,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x31, 0x31, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31,
+	0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x33, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x35,
+	0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x31, 0x35, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31,
+	0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x37, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x31, 0x39,
+	0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x31, 0x39, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32,
+	0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x31, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x32, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x33,
+	0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x32, 0x33, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x34, 0x18, 0x18, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32,
+	0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x35, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x32, 0x36, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x37,
+	0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x32, 0x37, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x38, 0x18, 0x1c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32,
+	0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x32, 0x39, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x39, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x31,
+	0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x33, 0x31, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18, 0x20, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33,
+	0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x33, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x33, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x33, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x35,
+	0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x33, 0x35, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x36, 0x18, 0x24, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33,
+	0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x37, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x37, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x33, 0x38, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x33, 0x39,
+	0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x33, 0x39, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x30, 0x18, 0x28, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34,
+	0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x31, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x31, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x34, 0x32, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x33,
+	0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x34, 0x33, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x34, 0x18, 0x2c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34,
+	0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x35, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x35, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x34, 0x36, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x37,
+	0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x34, 0x37, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x38, 0x18, 0x30, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34,
+	0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x34, 0x39, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x39, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x35, 0x30, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x31,
+	0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x35, 0x31, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x32, 0x18, 0x34, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35,
+	0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x33, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x33, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x35, 0x34, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x35,
+	0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x35, 0x35, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x36, 0x18, 0x38, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35,
+	0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x37, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x37, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x35, 0x38, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x35, 0x39,
+	0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x35, 0x39, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x30, 0x18, 0x3c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36,
+	0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x31, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x31, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x36, 0x32, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x33,
+	0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x36, 0x33, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x34, 0x18, 0x40, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36,
+	0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x35, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x35, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x36, 0x36, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x37,
+	0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x36, 0x37, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x38, 0x18, 0x44, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36,
+	0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x36, 0x39, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x39, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x37, 0x30, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x31,
+	0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x37, 0x31, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x32, 0x18, 0x48, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37,
+	0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x33, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x33, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x37, 0x34, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x35,
+	0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x37, 0x35, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x36, 0x18, 0x4c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37,
+	0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x37, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x37, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x37, 0x38, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x37, 0x39,
+	0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x37, 0x39, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x30, 0x18, 0x50, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38,
+	0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x31, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x31, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x38, 0x32, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x33,
+	0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x38, 0x33, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x34, 0x18, 0x54, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38,
+	0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x35, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x35, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x38, 0x36, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x37,
+	0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x38, 0x37, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x38, 0x18, 0x58, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38,
+	0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x38, 0x39, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x39, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x39, 0x30, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x30, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x31,
+	0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x39, 0x31, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x32, 0x18, 0x5c, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39,
+	0x32, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x33, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x33, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x39, 0x34, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x34, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x35,
+	0x18, 0x5f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x39, 0x35, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x36, 0x18, 0x60, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39,
+	0x36, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x37, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x37, 0x12, 0x3a, 0x0a,
+	0x03, 0x66, 0x39, 0x38, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x38, 0x12, 0x3a, 0x0a, 0x03, 0x66, 0x39, 0x39,
+	0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x39, 0x39, 0x12, 0x3c, 0x0a, 0x04, 0x66, 0x31, 0x30, 0x30, 0x18, 0x64, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02,
-	0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x81,
-	0x01, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x30,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x04, 0x66,
+	0x31, 0x30, 0x30, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x12, 0x2c, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03,
+	0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22,
+	0xea, 0x03, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x12, 0x53, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x53, 0x0a, 0x10,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x60, 0x0a, 0x0b, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x1a, 0x67, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xc5, 0x02, 0x0a,
+	0x17, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69,
+	0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69,
+	0x65, 0x6c, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x24, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x13, 0x0a, 0x01, 0x61, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x61, 0x1a, 0x24,
+	0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+	0x13, 0x0a, 0x01, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x61, 0x22, 0x74, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x60, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x42, 0x02, 0x28, 0x01, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c,
+	0x61, 0x7a, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa0, 0x05, 0x0a, 0x0f, 0x54,
+	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x28,
+	0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a,
+	0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01,
+	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a,
+	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28,
+	0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x12, 0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52,
+	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2e,
+	0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e,
+	0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28,
+	0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64,
+	0x20, 0x03, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01,
+	0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x4f, 0x0a, 0x0b,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28,
+	0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x20, 0x0a,
+	0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
+	0xff, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x12, 0x30, 0x0a, 0x03, 0x6f,
+	0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45,
+	0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x03, 0x6f, 0x6e, 0x65, 0x12, 0x3c, 0x0a,
+	0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45,
+	0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x73,
+	0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e,
+	0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x12,
+	0x48, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0b, 0x74, 0x68,
+	0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x45, 0x0a, 0x0a, 0x73, 0x69, 0x78,
+	0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e,
+	0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53, 0x49, 0x58, 0x54, 0x59, 0x53,
+	0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e,
+	0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x08, 0x4e,
+	0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,
+	0x65, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
+	0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
+	0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
+	0x42, 0x41, 0x5a, 0x10, 0x06, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01,
+	0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5c, 0x0a,
+	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x30,
 	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
 	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
 	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x0d, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d,
+	0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03,
+	0x28, 0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5e, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5e, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x60, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x60, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03,
+	0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5a, 0x0a, 0x0c, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28,
+	0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5c, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42,
-	0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x3a, 0x58, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x81, 0x01,
+	0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x30, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
+	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 }
 
 var (
@@ -2706,109 +4247,232 @@
 }
 
 var file_internal_testprotos_testeditions_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_internal_testprotos_testeditions_test_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
+var file_internal_testprotos_testeditions_test_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
 var file_internal_testprotos_testeditions_test_proto_goTypes = []any{
-	(ForeignEnum)(0),                   // 0: goproto.proto.testeditions.ForeignEnum
-	(TestAllTypes_NestedEnum)(0),       // 1: goproto.proto.testeditions.TestAllTypes.NestedEnum
-	(*TestAllTypes)(nil),               // 2: goproto.proto.testeditions.TestAllTypes
-	(*ForeignMessage)(nil),             // 3: goproto.proto.testeditions.ForeignMessage
-	(*TestRequired)(nil),               // 4: goproto.proto.testeditions.TestRequired
-	(*TestRequiredForeign)(nil),        // 5: goproto.proto.testeditions.TestRequiredForeign
-	(*TestRequiredGroupFields)(nil),    // 6: goproto.proto.testeditions.TestRequiredGroupFields
-	(*TestPackedTypes)(nil),            // 7: goproto.proto.testeditions.TestPackedTypes
-	(*TestPackedExtensions)(nil),       // 8: goproto.proto.testeditions.TestPackedExtensions
-	(*TestAllTypes_NestedMessage)(nil), // 9: goproto.proto.testeditions.TestAllTypes.NestedMessage
-	(*TestAllTypes_OptionalGroup)(nil), // 10: goproto.proto.testeditions.TestAllTypes.OptionalGroup
-	(*TestAllTypes_RepeatedGroup)(nil), // 11: goproto.proto.testeditions.TestAllTypes.RepeatedGroup
-	nil,                                // 12: goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
-	nil,                                // 13: goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
-	nil,                                // 14: goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
-	nil,                                // 15: goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
-	nil,                                // 16: goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
-	nil,                                // 17: goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
-	nil,                                // 18: goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
-	nil,                                // 19: goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
-	nil,                                // 20: goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
-	nil,                                // 21: goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
-	nil,                                // 22: goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
-	nil,                                // 23: goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
-	nil,                                // 24: goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
-	nil,                                // 25: goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
-	nil,                                // 26: goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
-	nil,                                // 27: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
-	nil,                                // 28: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
-	(*TestAllTypes_OneofGroup)(nil),    // 29: goproto.proto.testeditions.TestAllTypes.OneofGroup
-	nil,                                // 30: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
-	(*TestRequiredGroupFields_OptionalGroup)(nil), // 31: goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
-	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 32: goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	(ForeignEnum)(0),                     // 0: goproto.proto.testeditions.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),         // 1: goproto.proto.testeditions.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),                 // 2: goproto.proto.testeditions.TestAllTypes
+	(*TestManyMessageFieldsMessage)(nil), // 3: goproto.proto.testeditions.TestManyMessageFieldsMessage
+	(*ForeignMessage)(nil),               // 4: goproto.proto.testeditions.ForeignMessage
+	(*TestRequired)(nil),                 // 5: goproto.proto.testeditions.TestRequired
+	(*TestRequiredForeign)(nil),          // 6: goproto.proto.testeditions.TestRequiredForeign
+	(*TestRequiredGroupFields)(nil),      // 7: goproto.proto.testeditions.TestRequiredGroupFields
+	(*TestRequiredLazy)(nil),             // 8: goproto.proto.testeditions.TestRequiredLazy
+	(*TestPackedTypes)(nil),              // 9: goproto.proto.testeditions.TestPackedTypes
+	(*TestPackedExtensions)(nil),         // 10: goproto.proto.testeditions.TestPackedExtensions
+	(*RemoteDefault)(nil),                // 11: goproto.proto.testeditions.RemoteDefault
+	(*TestAllTypes_NestedMessage)(nil),   // 12: goproto.proto.testeditions.TestAllTypes.NestedMessage
+	(*TestAllTypes_OptionalGroup)(nil),   // 13: goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	(*TestAllTypes_RepeatedGroup)(nil),   // 14: goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	nil,                                  // 15: goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	nil,                                  // 16: goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	nil,                                  // 17: goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	nil,                                  // 18: goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	nil,                                  // 19: goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	nil,                                  // 20: goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	nil,                                  // 21: goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                  // 22: goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                  // 23: goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                  // 24: goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                  // 25: goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	nil,                                  // 26: goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	nil,                                  // 27: goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	nil,                                  // 28: goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	nil,                                  // 29: goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	nil,                                  // 30: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                  // 31: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	(*TestAllTypes_OneofGroup)(nil),      // 32: goproto.proto.testeditions.TestAllTypes.OneofGroup
+	nil,                                  // 33: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	(*TestRequiredGroupFields_OptionalGroup)(nil), // 34: goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 35: goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	(ImportEnum)(0),       // 36: goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil), // 37: goproto.proto.testeditions.ImportMessage
+	(enums.Enum)(0),       // 38: goproto.proto.enums.Enum
 }
 var file_internal_testprotos_testeditions_test_proto_depIdxs = []int32{
-	10, // 0: goproto.proto.testeditions.TestAllTypes.optionalgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
-	10, // 1: goproto.proto.testeditions.TestAllTypes.not_group_like_delimited:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
-	9,  // 2: goproto.proto.testeditions.TestAllTypes.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	3,  // 3: goproto.proto.testeditions.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
-	1,  // 4: goproto.proto.testeditions.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
-	0,  // 5: goproto.proto.testeditions.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
-	11, // 6: goproto.proto.testeditions.TestAllTypes.repeatedgroup:type_name -> goproto.proto.testeditions.TestAllTypes.RepeatedGroup
-	9,  // 7: goproto.proto.testeditions.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	3,  // 8: goproto.proto.testeditions.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
-	1,  // 9: goproto.proto.testeditions.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
-	0,  // 10: goproto.proto.testeditions.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
-	12, // 11: goproto.proto.testeditions.TestAllTypes.map_int32_int32:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
-	13, // 12: goproto.proto.testeditions.TestAllTypes.map_int64_int64:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
-	14, // 13: goproto.proto.testeditions.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
-	15, // 14: goproto.proto.testeditions.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
-	16, // 15: goproto.proto.testeditions.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
-	17, // 16: goproto.proto.testeditions.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
-	18, // 17: goproto.proto.testeditions.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
-	19, // 18: goproto.proto.testeditions.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
-	20, // 19: goproto.proto.testeditions.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
-	21, // 20: goproto.proto.testeditions.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
-	22, // 21: goproto.proto.testeditions.TestAllTypes.map_int32_float:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
-	23, // 22: goproto.proto.testeditions.TestAllTypes.map_int32_double:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
-	24, // 23: goproto.proto.testeditions.TestAllTypes.map_bool_bool:type_name -> goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
-	25, // 24: goproto.proto.testeditions.TestAllTypes.map_string_string:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
-	26, // 25: goproto.proto.testeditions.TestAllTypes.map_string_bytes:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
-	27, // 26: goproto.proto.testeditions.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
-	28, // 27: goproto.proto.testeditions.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
-	1,  // 28: goproto.proto.testeditions.TestAllTypes.default_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
-	0,  // 29: goproto.proto.testeditions.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
-	9,  // 30: goproto.proto.testeditions.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	1,  // 31: goproto.proto.testeditions.TestAllTypes.oneof_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
-	29, // 32: goproto.proto.testeditions.TestAllTypes.oneofgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OneofGroup
-	4,  // 33: goproto.proto.testeditions.TestRequiredForeign.optional_message:type_name -> goproto.proto.testeditions.TestRequired
-	4,  // 34: goproto.proto.testeditions.TestRequiredForeign.repeated_message:type_name -> goproto.proto.testeditions.TestRequired
-	30, // 35: goproto.proto.testeditions.TestRequiredForeign.map_message:type_name -> goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
-	4,  // 36: goproto.proto.testeditions.TestRequiredForeign.oneof_message:type_name -> goproto.proto.testeditions.TestRequired
-	31, // 37: goproto.proto.testeditions.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
-	32, // 38: goproto.proto.testeditions.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
-	0,  // 39: goproto.proto.testeditions.TestPackedTypes.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
-	2,  // 40: goproto.proto.testeditions.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.testeditions.TestAllTypes
-	9,  // 41: goproto.proto.testeditions.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	9,  // 42: goproto.proto.testeditions.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	9,  // 43: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
-	1,  // 44: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
-	4,  // 45: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.testeditions.TestRequired
-	8,  // 46: goproto.proto.testeditions.packed_int32:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 47: goproto.proto.testeditions.packed_int64:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 48: goproto.proto.testeditions.packed_uint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 49: goproto.proto.testeditions.packed_uint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 50: goproto.proto.testeditions.packed_sint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 51: goproto.proto.testeditions.packed_sint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 52: goproto.proto.testeditions.packed_fixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 53: goproto.proto.testeditions.packed_fixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 54: goproto.proto.testeditions.packed_sfixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 55: goproto.proto.testeditions.packed_sfixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 56: goproto.proto.testeditions.packed_float:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 57: goproto.proto.testeditions.packed_double:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 58: goproto.proto.testeditions.packed_bool:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	8,  // 59: goproto.proto.testeditions.packed_enum:extendee -> goproto.proto.testeditions.TestPackedExtensions
-	0,  // 60: goproto.proto.testeditions.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
-	61, // [61:61] is the sub-list for method output_type
-	61, // [61:61] is the sub-list for method input_type
-	60, // [60:61] is the sub-list for extension type_name
-	46, // [46:60] is the sub-list for extension extendee
-	0,  // [0:46] is the sub-list for field type_name
+	1,   // 0: goproto.proto.testeditions.TestAllTypes.singular_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 1: goproto.proto.testeditions.TestAllTypes.singular_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	36,  // 2: goproto.proto.testeditions.TestAllTypes.singular_import_enum:type_name -> goproto.proto.testeditions.ImportEnum
+	13,  // 3: goproto.proto.testeditions.TestAllTypes.optionalgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	13,  // 4: goproto.proto.testeditions.TestAllTypes.not_group_like_delimited:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	12,  // 5: goproto.proto.testeditions.TestAllTypes.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 6: goproto.proto.testeditions.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
+	37,  // 7: goproto.proto.testeditions.TestAllTypes.optional_import_message:type_name -> goproto.proto.testeditions.ImportMessage
+	1,   // 8: goproto.proto.testeditions.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 9: goproto.proto.testeditions.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	36,  // 10: goproto.proto.testeditions.TestAllTypes.optional_import_enum:type_name -> goproto.proto.testeditions.ImportEnum
+	12,  // 11: goproto.proto.testeditions.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	14,  // 12: goproto.proto.testeditions.TestAllTypes.repeatedgroup:type_name -> goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	12,  // 13: goproto.proto.testeditions.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 14: goproto.proto.testeditions.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
+	37,  // 15: goproto.proto.testeditions.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.testeditions.ImportMessage
+	1,   // 16: goproto.proto.testeditions.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 17: goproto.proto.testeditions.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	36,  // 18: goproto.proto.testeditions.TestAllTypes.repeated_importenum:type_name -> goproto.proto.testeditions.ImportEnum
+	15,  // 19: goproto.proto.testeditions.TestAllTypes.map_int32_int32:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	16,  // 20: goproto.proto.testeditions.TestAllTypes.map_int64_int64:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	17,  // 21: goproto.proto.testeditions.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	18,  // 22: goproto.proto.testeditions.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	19,  // 23: goproto.proto.testeditions.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	20,  // 24: goproto.proto.testeditions.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	21,  // 25: goproto.proto.testeditions.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	22,  // 26: goproto.proto.testeditions.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	23,  // 27: goproto.proto.testeditions.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	24,  // 28: goproto.proto.testeditions.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	25,  // 29: goproto.proto.testeditions.TestAllTypes.map_int32_float:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	26,  // 30: goproto.proto.testeditions.TestAllTypes.map_int32_double:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	27,  // 31: goproto.proto.testeditions.TestAllTypes.map_bool_bool:type_name -> goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	28,  // 32: goproto.proto.testeditions.TestAllTypes.map_string_string:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	29,  // 33: goproto.proto.testeditions.TestAllTypes.map_string_bytes:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	30,  // 34: goproto.proto.testeditions.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	31,  // 35: goproto.proto.testeditions.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	1,   // 36: goproto.proto.testeditions.TestAllTypes.default_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 37: goproto.proto.testeditions.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	12,  // 38: goproto.proto.testeditions.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 39: goproto.proto.testeditions.TestAllTypes.oneof_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	32,  // 40: goproto.proto.testeditions.TestAllTypes.oneofgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OneofGroup
+	2,   // 41: goproto.proto.testeditions.TestManyMessageFieldsMessage.f1:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 42: goproto.proto.testeditions.TestManyMessageFieldsMessage.f2:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 43: goproto.proto.testeditions.TestManyMessageFieldsMessage.f3:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 44: goproto.proto.testeditions.TestManyMessageFieldsMessage.f4:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 45: goproto.proto.testeditions.TestManyMessageFieldsMessage.f5:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 46: goproto.proto.testeditions.TestManyMessageFieldsMessage.f6:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 47: goproto.proto.testeditions.TestManyMessageFieldsMessage.f7:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 48: goproto.proto.testeditions.TestManyMessageFieldsMessage.f8:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 49: goproto.proto.testeditions.TestManyMessageFieldsMessage.f9:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 50: goproto.proto.testeditions.TestManyMessageFieldsMessage.f10:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 51: goproto.proto.testeditions.TestManyMessageFieldsMessage.f11:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 52: goproto.proto.testeditions.TestManyMessageFieldsMessage.f12:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 53: goproto.proto.testeditions.TestManyMessageFieldsMessage.f13:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 54: goproto.proto.testeditions.TestManyMessageFieldsMessage.f14:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 55: goproto.proto.testeditions.TestManyMessageFieldsMessage.f15:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 56: goproto.proto.testeditions.TestManyMessageFieldsMessage.f16:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 57: goproto.proto.testeditions.TestManyMessageFieldsMessage.f17:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 58: goproto.proto.testeditions.TestManyMessageFieldsMessage.f18:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 59: goproto.proto.testeditions.TestManyMessageFieldsMessage.f19:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 60: goproto.proto.testeditions.TestManyMessageFieldsMessage.f20:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 61: goproto.proto.testeditions.TestManyMessageFieldsMessage.f21:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 62: goproto.proto.testeditions.TestManyMessageFieldsMessage.f22:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 63: goproto.proto.testeditions.TestManyMessageFieldsMessage.f23:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 64: goproto.proto.testeditions.TestManyMessageFieldsMessage.f24:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 65: goproto.proto.testeditions.TestManyMessageFieldsMessage.f25:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 66: goproto.proto.testeditions.TestManyMessageFieldsMessage.f26:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 67: goproto.proto.testeditions.TestManyMessageFieldsMessage.f27:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 68: goproto.proto.testeditions.TestManyMessageFieldsMessage.f28:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 69: goproto.proto.testeditions.TestManyMessageFieldsMessage.f29:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 70: goproto.proto.testeditions.TestManyMessageFieldsMessage.f30:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 71: goproto.proto.testeditions.TestManyMessageFieldsMessage.f31:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 72: goproto.proto.testeditions.TestManyMessageFieldsMessage.f32:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 73: goproto.proto.testeditions.TestManyMessageFieldsMessage.f33:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 74: goproto.proto.testeditions.TestManyMessageFieldsMessage.f34:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 75: goproto.proto.testeditions.TestManyMessageFieldsMessage.f35:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 76: goproto.proto.testeditions.TestManyMessageFieldsMessage.f36:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 77: goproto.proto.testeditions.TestManyMessageFieldsMessage.f37:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 78: goproto.proto.testeditions.TestManyMessageFieldsMessage.f38:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 79: goproto.proto.testeditions.TestManyMessageFieldsMessage.f39:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 80: goproto.proto.testeditions.TestManyMessageFieldsMessage.f40:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 81: goproto.proto.testeditions.TestManyMessageFieldsMessage.f41:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 82: goproto.proto.testeditions.TestManyMessageFieldsMessage.f42:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 83: goproto.proto.testeditions.TestManyMessageFieldsMessage.f43:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 84: goproto.proto.testeditions.TestManyMessageFieldsMessage.f44:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 85: goproto.proto.testeditions.TestManyMessageFieldsMessage.f45:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 86: goproto.proto.testeditions.TestManyMessageFieldsMessage.f46:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 87: goproto.proto.testeditions.TestManyMessageFieldsMessage.f47:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 88: goproto.proto.testeditions.TestManyMessageFieldsMessage.f48:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 89: goproto.proto.testeditions.TestManyMessageFieldsMessage.f49:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 90: goproto.proto.testeditions.TestManyMessageFieldsMessage.f50:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 91: goproto.proto.testeditions.TestManyMessageFieldsMessage.f51:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 92: goproto.proto.testeditions.TestManyMessageFieldsMessage.f52:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 93: goproto.proto.testeditions.TestManyMessageFieldsMessage.f53:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 94: goproto.proto.testeditions.TestManyMessageFieldsMessage.f54:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 95: goproto.proto.testeditions.TestManyMessageFieldsMessage.f55:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 96: goproto.proto.testeditions.TestManyMessageFieldsMessage.f56:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 97: goproto.proto.testeditions.TestManyMessageFieldsMessage.f57:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 98: goproto.proto.testeditions.TestManyMessageFieldsMessage.f58:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 99: goproto.proto.testeditions.TestManyMessageFieldsMessage.f59:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 100: goproto.proto.testeditions.TestManyMessageFieldsMessage.f60:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 101: goproto.proto.testeditions.TestManyMessageFieldsMessage.f61:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 102: goproto.proto.testeditions.TestManyMessageFieldsMessage.f62:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 103: goproto.proto.testeditions.TestManyMessageFieldsMessage.f63:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 104: goproto.proto.testeditions.TestManyMessageFieldsMessage.f64:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 105: goproto.proto.testeditions.TestManyMessageFieldsMessage.f65:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 106: goproto.proto.testeditions.TestManyMessageFieldsMessage.f66:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 107: goproto.proto.testeditions.TestManyMessageFieldsMessage.f67:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 108: goproto.proto.testeditions.TestManyMessageFieldsMessage.f68:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 109: goproto.proto.testeditions.TestManyMessageFieldsMessage.f69:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 110: goproto.proto.testeditions.TestManyMessageFieldsMessage.f70:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 111: goproto.proto.testeditions.TestManyMessageFieldsMessage.f71:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 112: goproto.proto.testeditions.TestManyMessageFieldsMessage.f72:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 113: goproto.proto.testeditions.TestManyMessageFieldsMessage.f73:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 114: goproto.proto.testeditions.TestManyMessageFieldsMessage.f74:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 115: goproto.proto.testeditions.TestManyMessageFieldsMessage.f75:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 116: goproto.proto.testeditions.TestManyMessageFieldsMessage.f76:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 117: goproto.proto.testeditions.TestManyMessageFieldsMessage.f77:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 118: goproto.proto.testeditions.TestManyMessageFieldsMessage.f78:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 119: goproto.proto.testeditions.TestManyMessageFieldsMessage.f79:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 120: goproto.proto.testeditions.TestManyMessageFieldsMessage.f80:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 121: goproto.proto.testeditions.TestManyMessageFieldsMessage.f81:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 122: goproto.proto.testeditions.TestManyMessageFieldsMessage.f82:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 123: goproto.proto.testeditions.TestManyMessageFieldsMessage.f83:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 124: goproto.proto.testeditions.TestManyMessageFieldsMessage.f84:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 125: goproto.proto.testeditions.TestManyMessageFieldsMessage.f85:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 126: goproto.proto.testeditions.TestManyMessageFieldsMessage.f86:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 127: goproto.proto.testeditions.TestManyMessageFieldsMessage.f87:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 128: goproto.proto.testeditions.TestManyMessageFieldsMessage.f88:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 129: goproto.proto.testeditions.TestManyMessageFieldsMessage.f89:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 130: goproto.proto.testeditions.TestManyMessageFieldsMessage.f90:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 131: goproto.proto.testeditions.TestManyMessageFieldsMessage.f91:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 132: goproto.proto.testeditions.TestManyMessageFieldsMessage.f92:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 133: goproto.proto.testeditions.TestManyMessageFieldsMessage.f93:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 134: goproto.proto.testeditions.TestManyMessageFieldsMessage.f94:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 135: goproto.proto.testeditions.TestManyMessageFieldsMessage.f95:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 136: goproto.proto.testeditions.TestManyMessageFieldsMessage.f96:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 137: goproto.proto.testeditions.TestManyMessageFieldsMessage.f97:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 138: goproto.proto.testeditions.TestManyMessageFieldsMessage.f98:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 139: goproto.proto.testeditions.TestManyMessageFieldsMessage.f99:type_name -> goproto.proto.testeditions.TestAllTypes
+	2,   // 140: goproto.proto.testeditions.TestManyMessageFieldsMessage.f100:type_name -> goproto.proto.testeditions.TestAllTypes
+	5,   // 141: goproto.proto.testeditions.TestRequiredForeign.optional_message:type_name -> goproto.proto.testeditions.TestRequired
+	5,   // 142: goproto.proto.testeditions.TestRequiredForeign.repeated_message:type_name -> goproto.proto.testeditions.TestRequired
+	33,  // 143: goproto.proto.testeditions.TestRequiredForeign.map_message:type_name -> goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	5,   // 144: goproto.proto.testeditions.TestRequiredForeign.oneof_message:type_name -> goproto.proto.testeditions.TestRequired
+	34,  // 145: goproto.proto.testeditions.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	35,  // 146: goproto.proto.testeditions.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	5,   // 147: goproto.proto.testeditions.TestRequiredLazy.optional_lazy_message:type_name -> goproto.proto.testeditions.TestRequired
+	0,   // 148: goproto.proto.testeditions.TestPackedTypes.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	38,  // 149: goproto.proto.testeditions.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
+	38,  // 150: goproto.proto.testeditions.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
+	38,  // 151: goproto.proto.testeditions.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
+	38,  // 152: goproto.proto.testeditions.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
+	38,  // 153: goproto.proto.testeditions.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
+	38,  // 154: goproto.proto.testeditions.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
+	38,  // 155: goproto.proto.testeditions.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
+	38,  // 156: goproto.proto.testeditions.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
+	2,   // 157: goproto.proto.testeditions.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.testeditions.TestAllTypes
+	12,  // 158: goproto.proto.testeditions.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 159: goproto.proto.testeditions.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 160: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 161: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
+	5,   // 162: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.testeditions.TestRequired
+	10,  // 163: goproto.proto.testeditions.packed_int32:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 164: goproto.proto.testeditions.packed_int64:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 165: goproto.proto.testeditions.packed_uint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 166: goproto.proto.testeditions.packed_uint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 167: goproto.proto.testeditions.packed_sint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 168: goproto.proto.testeditions.packed_sint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 169: goproto.proto.testeditions.packed_fixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 170: goproto.proto.testeditions.packed_fixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 171: goproto.proto.testeditions.packed_sfixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 172: goproto.proto.testeditions.packed_sfixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 173: goproto.proto.testeditions.packed_float:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 174: goproto.proto.testeditions.packed_double:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 175: goproto.proto.testeditions.packed_bool:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	10,  // 176: goproto.proto.testeditions.packed_enum:extendee -> goproto.proto.testeditions.TestPackedExtensions
+	0,   // 177: goproto.proto.testeditions.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
+	178, // [178:178] is the sub-list for method output_type
+	178, // [178:178] is the sub-list for method input_type
+	177, // [177:178] is the sub-list for extension type_name
+	163, // [163:177] is the sub-list for extension extendee
+	0,   // [0:163] is the sub-list for field type_name
 }
 
 func init() { file_internal_testprotos_testeditions_test_proto_init() }
@@ -2816,6 +4480,7 @@
 	if File_internal_testprotos_testeditions_test_proto != nil {
 		return
 	}
+	file_internal_testprotos_testeditions_test_import_proto_init()
 	file_internal_testprotos_testeditions_test_proto_msgTypes[0].OneofWrappers = []any{
 		(*TestAllTypes_OneofUint32)(nil),
 		(*TestAllTypes_OneofNestedMessage)(nil),
@@ -2829,7 +4494,7 @@
 		(*TestAllTypes_Oneofgroup)(nil),
 		(*TestAllTypes_OneofOptionalUint32)(nil),
 	}
-	file_internal_testprotos_testeditions_test_proto_msgTypes[3].OneofWrappers = []any{
+	file_internal_testprotos_testeditions_test_proto_msgTypes[4].OneofWrappers = []any{
 		(*TestRequiredForeign_OneofMessage)(nil),
 	}
 	type x struct{}
@@ -2838,7 +4503,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_internal_testprotos_testeditions_test_proto_rawDesc,
 			NumEnums:      2,
-			NumMessages:   31,
+			NumMessages:   34,
 			NumExtensions: 14,
 			NumServices:   0,
 		},
diff --git a/internal/testprotos/testeditions/test_extension.pb.go b/internal/testprotos/testeditions/test_extension.pb.go
index af0212b..4adab79 100644
--- a/internal/testprotos/testeditions/test_extension.pb.go
+++ b/internal/testprotos/testeditions/test_extension.pb.go
@@ -15,10 +15,10 @@
 )
 
 type TestAllExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestAllExtensions) Reset() {
@@ -52,13 +52,12 @@
 }
 
 type OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState           `protogen:"open.v1"`
 	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
 	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *OptionalGroup) Reset() {
@@ -113,12 +112,11 @@
 }
 
 type RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                 protoimpl.MessageState           `protogen:"open.v1"`
 	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
 	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *RepeatedGroup) Reset() {
@@ -166,10 +164,10 @@
 }
 
 type TestFeatureResolution struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *TestFeatureResolution) Reset() {
@@ -203,9 +201,9 @@
 }
 
 type RepeatedFieldEncoding struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *RepeatedFieldEncoding) Reset() {
@@ -239,12 +237,11 @@
 }
 
 type TestAllExtensions_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	A           *int32             `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllExtensions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *TestAllExtensions_NestedMessage) Reset() {
diff --git a/internal/testprotos/testeditions/test_extension2.pb.go b/internal/testprotos/testeditions/test_extension2.pb.go
index a19fe54..934775a 100644
--- a/internal/testprotos/testeditions/test_extension2.pb.go
+++ b/internal/testprotos/testeditions/test_extension2.pb.go
@@ -15,9 +15,9 @@
 )
 
 type OtherRepeatedFieldEncoding struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OtherRepeatedFieldEncoding) Reset() {
diff --git a/internal/testprotos/testeditions/test_import.pb.go b/internal/testprotos/testeditions/test_import.pb.go
new file mode 100644
index 0000000..c9e801f
--- /dev/null
+++ b/internal/testprotos/testeditions/test_import.pb.go
@@ -0,0 +1,164 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/test_import.proto
+
+package testeditions
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_test_import_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_test_import_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImportEnum.Descriptor instead.
+func (ImportEnum) EnumDescriptor() ([]byte, []int) {
+	return file_internal_testprotos_testeditions_test_import_proto_rawDescGZIP(), []int{0}
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_testeditions_test_import_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_test_import_proto_msgTypes[0]
+	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 ImportMessage.ProtoReflect.Descriptor instead.
+func (*ImportMessage) Descriptor() ([]byte, []int) {
+	return file_internal_testprotos_testeditions_test_import_proto_rawDescGZIP(), []int{0}
+}
+
+var File_internal_testprotos_testeditions_test_import_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_test_import_proto_rawDesc = []byte{
+	0x0a, 0x32, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2a, 0x1d, 0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
+	0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62,
+	0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var (
+	file_internal_testprotos_testeditions_test_import_proto_rawDescOnce sync.Once
+	file_internal_testprotos_testeditions_test_import_proto_rawDescData = file_internal_testprotos_testeditions_test_import_proto_rawDesc
+)
+
+func file_internal_testprotos_testeditions_test_import_proto_rawDescGZIP() []byte {
+	file_internal_testprotos_testeditions_test_import_proto_rawDescOnce.Do(func() {
+		file_internal_testprotos_testeditions_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_testeditions_test_import_proto_rawDescData)
+	})
+	return file_internal_testprotos_testeditions_test_import_proto_rawDescData
+}
+
+var file_internal_testprotos_testeditions_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_testeditions_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_testeditions_test_import_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil), // 1: goproto.proto.testeditions.ImportMessage
+}
+var file_internal_testprotos_testeditions_test_import_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_testeditions_test_import_proto_init() }
+func file_internal_testprotos_testeditions_test_import_proto_init() {
+	if File_internal_testprotos_testeditions_test_import_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_test_import_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_test_import_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_test_import_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_testeditions_test_import_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_testeditions_test_import_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_test_import_proto = out.File
+	file_internal_testprotos_testeditions_test_import_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_test_import_proto_goTypes = nil
+	file_internal_testprotos_testeditions_test_import_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.pb.go
new file mode 100644
index 0000000..8d16e54
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.pb.go
@@ -0,0 +1,8396 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto
+
+package testeditions_hybrid
+
+import (
+	enums_hybrid "google.golang.org/protobuf/internal/testprotos/enums/enums_hybrid"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type ForeignEnum int32
+
+const (
+	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
+	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
+	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
+	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
+)
+
+// Enum value maps for ForeignEnum.
+var (
+	ForeignEnum_name = map[int32]string{
+		0: "FOREIGN_ZERO",
+		4: "FOREIGN_FOO",
+		5: "FOREIGN_BAR",
+		6: "FOREIGN_BAZ",
+	}
+	ForeignEnum_value = map[string]int32{
+		"FOREIGN_ZERO": 0,
+		"FOREIGN_FOO":  4,
+		"FOREIGN_BAR":  5,
+		"FOREIGN_BAZ":  6,
+	}
+)
+
+func (x ForeignEnum) Enum() *ForeignEnum {
+	p := new(ForeignEnum)
+	*p = x
+	return p
+}
+
+func (x ForeignEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ForeignEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes[0]
+}
+
+func (x ForeignEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes_NestedEnum int32
+
+const (
+	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
+	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
+	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
+	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
+)
+
+// Enum value maps for TestAllTypes_NestedEnum.
+var (
+	TestAllTypes_NestedEnum_name = map[int32]string{
+		0:  "FOO",
+		1:  "BAR",
+		2:  "BAZ",
+		-1: "NEG",
+	}
+	TestAllTypes_NestedEnum_value = map[string]int32{
+		"FOO": 0,
+		"BAR": 1,
+		"BAZ": 2,
+		"NEG": -1,
+	}
+)
+
+func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
+	p := new(TestAllTypes_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x TestAllTypes_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes[1].Descriptor()
+}
+
+func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes[1]
+}
+
+func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes struct {
+	state            protoimpl.MessageState `protogen:"hybrid.v1"`
+	SingularInt32    int32                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
+	SingularInt64    int64                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
+	SingularUint32   uint32                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
+	SingularUint64   uint64                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64" json:"singular_uint64,omitempty"`
+	SingularSint32   int32                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32" json:"singular_sint32,omitempty"`
+	SingularSint64   int64                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64" json:"singular_sint64,omitempty"`
+	SingularFixed32  uint32                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32" json:"singular_fixed32,omitempty"`
+	SingularFixed64  uint64                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64" json:"singular_fixed64,omitempty"`
+	SingularSfixed32 int32                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32" json:"singular_sfixed32,omitempty"`
+	SingularSfixed64 int64                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64" json:"singular_sfixed64,omitempty"`
+	SingularFloat    float32                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat" json:"singular_float,omitempty"`
+	SingularDouble   float64                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble" json:"singular_double,omitempty"`
+	SingularBool     bool                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool" json:"singular_bool,omitempty"`
+	SingularString   string                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString" json:"singular_string,omitempty"`
+	SingularBytes    []byte                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes" json:"singular_bytes,omitempty"`
+	// message-typed fields elided, as they cannot specify implicit presence.
+	SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=hybrid.goproto.proto.testeditions.ImportEnum" json:"singular_import_enum,omitempty"`
+	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"`
+	OptionalUint64            *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalSint32            *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalSint64            *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalFixed32           *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalFixed64           *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed32          *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalSfixed64          *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalFloat             *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalDouble            *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalBool              *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited" json:"not_group_like_delimited,omitempty"`
+	OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
+	OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage" json:"optional_import_message,omitempty"`
+	OptionalNestedEnum        *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
+	OptionalForeignEnum       *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
+	OptionalImportEnum        *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=hybrid.goproto.proto.testeditions.ImportEnum" json:"optional_import_enum,omitempty"`
+	OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage" json:"optional_lazy_nested_message,omitempty"`
+	RepeatedInt32             []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	Repeatedgroup             []*TestAllTypes_RepeatedGroup          `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	RepeatedNestedMessage     []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
+	RepeatedForeignMessage    []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
+	RepeatedImportmessage     []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage" json:"repeated_importmessage,omitempty"`
+	RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=hybrid.goproto.proto.testeditions.ImportEnum" json:"repeated_importenum,omitempty"`
+	MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64             map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32           map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64           map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32           map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64           map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32         map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	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"`
+	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"`
+	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"`
+	MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum       map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	// Singular with defaults
+	DefaultInt32       *int32                   `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81" json:"default_int32,omitempty"`
+	DefaultInt64       *int64                   `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82" json:"default_int64,omitempty"`
+	DefaultUint32      *uint32                  `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83" json:"default_uint32,omitempty"`
+	DefaultUint64      *uint64                  `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84" json:"default_uint64,omitempty"`
+	DefaultSint32      *int32                   `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85" json:"default_sint32,omitempty"`
+	DefaultSint64      *int64                   `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86" json:"default_sint64,omitempty"`
+	DefaultFixed32     *uint32                  `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87" json:"default_fixed32,omitempty"`
+	DefaultFixed64     *uint64                  `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88" json:"default_fixed64,omitempty"`
+	DefaultSfixed32    *int32                   `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89" json:"default_sfixed32,omitempty"`
+	DefaultSfixed64    *int64                   `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90" json:"default_sfixed64,omitempty"`
+	DefaultFloat       *float32                 `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5" json:"default_float,omitempty"`
+	DefaultDouble      *float64                 `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000" json:"default_double,omitempty"`
+	DefaultBool        *bool                    `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
+	DefaultString      *string                  `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
+	DefaultBytes       []byte                   `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
+	DefaultNestedEnum  *TestAllTypes_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
+	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
+	// Types that are valid to be assigned to OneofField:
+	//
+	//	*TestAllTypes_OneofUint32
+	//	*TestAllTypes_OneofNestedMessage
+	//	*TestAllTypes_OneofString
+	//	*TestAllTypes_OneofBytes
+	//	*TestAllTypes_OneofBool
+	//	*TestAllTypes_OneofUint64
+	//	*TestAllTypes_OneofFloat
+	//	*TestAllTypes_OneofDouble
+	//	*TestAllTypes_OneofEnum
+	//	*TestAllTypes_Oneofgroup
+	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
+	// A oneof with exactly one field.
+	//
+	// Types that are valid to be assigned to OneofOptional:
+	//
+	//	*TestAllTypes_OneofOptionalUint32
+	OneofOptional isTestAllTypes_OneofOptional `protobuf_oneof:"oneof_optional"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+// Default values for TestAllTypes fields.
+const (
+	Default_TestAllTypes_DefaultInt32       = int32(81)
+	Default_TestAllTypes_DefaultInt64       = int64(82)
+	Default_TestAllTypes_DefaultUint32      = uint32(83)
+	Default_TestAllTypes_DefaultUint64      = uint64(84)
+	Default_TestAllTypes_DefaultSint32      = int32(-85)
+	Default_TestAllTypes_DefaultSint64      = int64(86)
+	Default_TestAllTypes_DefaultFixed32     = uint32(87)
+	Default_TestAllTypes_DefaultFixed64     = uint64(88)
+	Default_TestAllTypes_DefaultSfixed32    = int32(89)
+	Default_TestAllTypes_DefaultSfixed64    = int64(-90)
+	Default_TestAllTypes_DefaultFloat       = float32(91.5)
+	Default_TestAllTypes_DefaultDouble      = float64(92000)
+	Default_TestAllTypes_DefaultBool        = bool(true)
+	Default_TestAllTypes_DefaultString      = string("hello")
+	Default_TestAllTypes_DefaultNestedEnum  = TestAllTypes_BAR
+	Default_TestAllTypes_DefaultForeignEnum = ForeignEnum_FOREIGN_BAR
+)
+
+// Default values for TestAllTypes fields.
+var (
+	Default_TestAllTypes_DefaultBytes = []byte("world")
+)
+
+func (x *TestAllTypes) Reset() {
+	*x = TestAllTypes{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes) ProtoMessage() {}
+
+func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes) GetSingularInt32() int32 {
+	if x != nil {
+		return x.SingularInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularInt64() int64 {
+	if x != nil {
+		return x.SingularInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint32() uint32 {
+	if x != nil {
+		return x.SingularUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint64() uint64 {
+	if x != nil {
+		return x.SingularUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint32() int32 {
+	if x != nil {
+		return x.SingularSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint64() int64 {
+	if x != nil {
+		return x.SingularSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed32() uint32 {
+	if x != nil {
+		return x.SingularFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed64() uint64 {
+	if x != nil {
+		return x.SingularFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed32() int32 {
+	if x != nil {
+		return x.SingularSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed64() int64 {
+	if x != nil {
+		return x.SingularSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFloat() float32 {
+	if x != nil {
+		return x.SingularFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularDouble() float64 {
+	if x != nil {
+		return x.SingularDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularBool() bool {
+	if x != nil {
+		return x.SingularBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetSingularString() string {
+	if x != nil {
+		return x.SingularString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetSingularBytes() []byte {
+	if x != nil {
+		return x.SingularBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalInt64() int64 {
+	if x != nil && x.OptionalInt64 != nil {
+		return *x.OptionalInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint32() uint32 {
+	if x != nil && x.OptionalUint32 != nil {
+		return *x.OptionalUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint64() uint64 {
+	if x != nil && x.OptionalUint64 != nil {
+		return *x.OptionalUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint32() int32 {
+	if x != nil && x.OptionalSint32 != nil {
+		return *x.OptionalSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint64() int64 {
+	if x != nil && x.OptionalSint64 != nil {
+		return *x.OptionalSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed32() uint32 {
+	if x != nil && x.OptionalFixed32 != nil {
+		return *x.OptionalFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed64() uint64 {
+	if x != nil && x.OptionalFixed64 != nil {
+		return *x.OptionalFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed32() int32 {
+	if x != nil && x.OptionalSfixed32 != nil {
+		return *x.OptionalSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed64() int64 {
+	if x != nil && x.OptionalSfixed64 != nil {
+		return *x.OptionalSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFloat() float32 {
+	if x != nil && x.OptionalFloat != nil {
+		return *x.OptionalFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalDouble() float64 {
+	if x != nil && x.OptionalDouble != nil {
+		return *x.OptionalDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalBool() bool {
+	if x != nil && x.OptionalBool != nil {
+		return *x.OptionalBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOptionalString() string {
+	if x != nil && x.OptionalString != nil {
+		return *x.OptionalString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOptionalBytes() []byte {
+	if x != nil {
+		return x.OptionalBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalgroup() *TestAllTypes_OptionalGroup {
+	if x != nil {
+		return x.Optionalgroup
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetNotGroupLikeDelimited() *TestAllTypes_OptionalGroup {
+	if x != nil {
+		return x.NotGroupLikeDelimited
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.OptionalForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.OptionalImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil && x.OptionalNestedEnum != nil {
+		return *x.OptionalNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
+	if x != nil && x.OptionalForeignEnum != nil {
+		return *x.OptionalForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil && x.OptionalImportEnum != nil {
+		return *x.OptionalImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalLazyNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalLazyNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt32() []int32 {
+	if x != nil {
+		return x.RepeatedInt32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt64() []int64 {
+	if x != nil {
+		return x.RepeatedInt64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
+	if x != nil {
+		return x.RepeatedUint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
+	if x != nil {
+		return x.RepeatedUint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint32() []int32 {
+	if x != nil {
+		return x.RepeatedSint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint64() []int64 {
+	if x != nil {
+		return x.RepeatedSint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
+	if x != nil {
+		return x.RepeatedFixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
+	if x != nil {
+		return x.RepeatedFixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
+	if x != nil {
+		return x.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
+	if x != nil {
+		return x.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFloat() []float32 {
+	if x != nil {
+		return x.RepeatedFloat
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedDouble() []float64 {
+	if x != nil {
+		return x.RepeatedDouble
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBool() []bool {
+	if x != nil {
+		return x.RepeatedBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedString() []string {
+	if x != nil {
+		return x.RepeatedString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
+	if x != nil {
+		return x.RepeatedBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedgroup() []*TestAllTypes_RepeatedGroup {
+	if x != nil {
+		return x.Repeatedgroup
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.RepeatedNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
+	if x != nil {
+		return x.RepeatedForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		return x.RepeatedImportmessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.RepeatedNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
+	if x != nil {
+		return x.RepeatedForeignEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.RepeatedImportenum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
+	if x != nil {
+		return x.MapInt32Int32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
+	if x != nil {
+		return x.MapInt64Int64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
+	if x != nil {
+		return x.MapUint32Uint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
+	if x != nil {
+		return x.MapUint64Uint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
+	if x != nil {
+		return x.MapSint32Sint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
+	if x != nil {
+		return x.MapSint64Sint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
+	if x != nil {
+		return x.MapFixed32Fixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
+	if x != nil {
+		return x.MapFixed64Fixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
+	if x != nil {
+		return x.MapSfixed32Sfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
+	if x != nil {
+		return x.MapSfixed64Sfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
+	if x != nil {
+		return x.MapInt32Float
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
+	if x != nil {
+		return x.MapInt32Double
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
+	if x != nil {
+		return x.MapBoolBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringString() map[string]string {
+	if x != nil {
+		return x.MapStringString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
+	if x != nil {
+		return x.MapStringBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.MapStringNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.MapStringNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetDefaultInt32() int32 {
+	if x != nil && x.DefaultInt32 != nil {
+		return *x.DefaultInt32
+	}
+	return Default_TestAllTypes_DefaultInt32
+}
+
+func (x *TestAllTypes) GetDefaultInt64() int64 {
+	if x != nil && x.DefaultInt64 != nil {
+		return *x.DefaultInt64
+	}
+	return Default_TestAllTypes_DefaultInt64
+}
+
+func (x *TestAllTypes) GetDefaultUint32() uint32 {
+	if x != nil && x.DefaultUint32 != nil {
+		return *x.DefaultUint32
+	}
+	return Default_TestAllTypes_DefaultUint32
+}
+
+func (x *TestAllTypes) GetDefaultUint64() uint64 {
+	if x != nil && x.DefaultUint64 != nil {
+		return *x.DefaultUint64
+	}
+	return Default_TestAllTypes_DefaultUint64
+}
+
+func (x *TestAllTypes) GetDefaultSint32() int32 {
+	if x != nil && x.DefaultSint32 != nil {
+		return *x.DefaultSint32
+	}
+	return Default_TestAllTypes_DefaultSint32
+}
+
+func (x *TestAllTypes) GetDefaultSint64() int64 {
+	if x != nil && x.DefaultSint64 != nil {
+		return *x.DefaultSint64
+	}
+	return Default_TestAllTypes_DefaultSint64
+}
+
+func (x *TestAllTypes) GetDefaultFixed32() uint32 {
+	if x != nil && x.DefaultFixed32 != nil {
+		return *x.DefaultFixed32
+	}
+	return Default_TestAllTypes_DefaultFixed32
+}
+
+func (x *TestAllTypes) GetDefaultFixed64() uint64 {
+	if x != nil && x.DefaultFixed64 != nil {
+		return *x.DefaultFixed64
+	}
+	return Default_TestAllTypes_DefaultFixed64
+}
+
+func (x *TestAllTypes) GetDefaultSfixed32() int32 {
+	if x != nil && x.DefaultSfixed32 != nil {
+		return *x.DefaultSfixed32
+	}
+	return Default_TestAllTypes_DefaultSfixed32
+}
+
+func (x *TestAllTypes) GetDefaultSfixed64() int64 {
+	if x != nil && x.DefaultSfixed64 != nil {
+		return *x.DefaultSfixed64
+	}
+	return Default_TestAllTypes_DefaultSfixed64
+}
+
+func (x *TestAllTypes) GetDefaultFloat() float32 {
+	if x != nil && x.DefaultFloat != nil {
+		return *x.DefaultFloat
+	}
+	return Default_TestAllTypes_DefaultFloat
+}
+
+func (x *TestAllTypes) GetDefaultDouble() float64 {
+	if x != nil && x.DefaultDouble != nil {
+		return *x.DefaultDouble
+	}
+	return Default_TestAllTypes_DefaultDouble
+}
+
+func (x *TestAllTypes) GetDefaultBool() bool {
+	if x != nil && x.DefaultBool != nil {
+		return *x.DefaultBool
+	}
+	return Default_TestAllTypes_DefaultBool
+}
+
+func (x *TestAllTypes) GetDefaultString() string {
+	if x != nil && x.DefaultString != nil {
+		return *x.DefaultString
+	}
+	return Default_TestAllTypes_DefaultString
+}
+
+func (x *TestAllTypes) GetDefaultBytes() []byte {
+	if x != nil && x.DefaultBytes != nil {
+		return x.DefaultBytes
+	}
+	return append([]byte(nil), Default_TestAllTypes_DefaultBytes...)
+}
+
+func (x *TestAllTypes) GetDefaultNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil && x.DefaultNestedEnum != nil {
+		return *x.DefaultNestedEnum
+	}
+	return Default_TestAllTypes_DefaultNestedEnum
+}
+
+func (x *TestAllTypes) GetDefaultForeignEnum() ForeignEnum {
+	if x != nil && x.DefaultForeignEnum != nil {
+		return *x.DefaultForeignEnum
+	}
+	return Default_TestAllTypes_DefaultForeignEnum
+}
+
+func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
+	if x != nil {
+		return x.OneofField
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofUint32() uint32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofString() string {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+			return x.OneofString
+		}
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOneofBytes() []byte {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofBool() bool {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOneofUint64() uint64 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofFloat() float32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofDouble() float64 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
+	if x != nil {
+		return x.OneofOptional
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
+	if x != nil {
+		if x, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) SetSingularInt32(v int32) {
+	x.SingularInt32 = v
+}
+
+func (x *TestAllTypes) SetSingularInt64(v int64) {
+	x.SingularInt64 = v
+}
+
+func (x *TestAllTypes) SetSingularUint32(v uint32) {
+	x.SingularUint32 = v
+}
+
+func (x *TestAllTypes) SetSingularUint64(v uint64) {
+	x.SingularUint64 = v
+}
+
+func (x *TestAllTypes) SetSingularSint32(v int32) {
+	x.SingularSint32 = v
+}
+
+func (x *TestAllTypes) SetSingularSint64(v int64) {
+	x.SingularSint64 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed32(v uint32) {
+	x.SingularFixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed64(v uint64) {
+	x.SingularFixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed32(v int32) {
+	x.SingularSfixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed64(v int64) {
+	x.SingularSfixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularFloat(v float32) {
+	x.SingularFloat = v
+}
+
+func (x *TestAllTypes) SetSingularDouble(v float64) {
+	x.SingularDouble = v
+}
+
+func (x *TestAllTypes) SetSingularBool(v bool) {
+	x.SingularBool = v
+}
+
+func (x *TestAllTypes) SetSingularString(v string) {
+	x.SingularString = v
+}
+
+func (x *TestAllTypes) SetSingularBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.SingularBytes = v
+}
+
+func (x *TestAllTypes) SetSingularNestedEnum(v TestAllTypes_NestedEnum) {
+	x.SingularNestedEnum = v
+}
+
+func (x *TestAllTypes) SetSingularForeignEnum(v ForeignEnum) {
+	x.SingularForeignEnum = v
+}
+
+func (x *TestAllTypes) SetSingularImportEnum(v ImportEnum) {
+	x.SingularImportEnum = v
+}
+
+func (x *TestAllTypes) SetOptionalInt32(v int32) {
+	x.OptionalInt32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalInt64(v int64) {
+	x.OptionalInt64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalUint32(v uint32) {
+	x.OptionalUint32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalUint64(v uint64) {
+	x.OptionalUint64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSint32(v int32) {
+	x.OptionalSint32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSint64(v int64) {
+	x.OptionalSint64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFixed32(v uint32) {
+	x.OptionalFixed32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFixed64(v uint64) {
+	x.OptionalFixed64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSfixed32(v int32) {
+	x.OptionalSfixed32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSfixed64(v int64) {
+	x.OptionalSfixed64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFloat(v float32) {
+	x.OptionalFloat = &v
+}
+
+func (x *TestAllTypes) SetOptionalDouble(v float64) {
+	x.OptionalDouble = &v
+}
+
+func (x *TestAllTypes) SetOptionalBool(v bool) {
+	x.OptionalBool = &v
+}
+
+func (x *TestAllTypes) SetOptionalString(v string) {
+	x.OptionalString = &v
+}
+
+func (x *TestAllTypes) SetOptionalBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OptionalBytes = v
+}
+
+func (x *TestAllTypes) SetOptionalgroup(v *TestAllTypes_OptionalGroup) {
+	x.Optionalgroup = v
+}
+
+func (x *TestAllTypes) SetNotGroupLikeDelimited(v *TestAllTypes_OptionalGroup) {
+	x.NotGroupLikeDelimited = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalForeignMessage(v *ForeignMessage) {
+	x.OptionalForeignMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalImportMessage(v *ImportMessage) {
+	x.OptionalImportMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedEnum(v TestAllTypes_NestedEnum) {
+	x.OptionalNestedEnum = &v
+}
+
+func (x *TestAllTypes) SetOptionalForeignEnum(v ForeignEnum) {
+	x.OptionalForeignEnum = &v
+}
+
+func (x *TestAllTypes) SetOptionalImportEnum(v ImportEnum) {
+	x.OptionalImportEnum = &v
+}
+
+func (x *TestAllTypes) SetOptionalLazyNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.OptionalLazyNestedMessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt32(v []int32) {
+	x.RepeatedInt32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt64(v []int64) {
+	x.RepeatedInt64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint32(v []uint32) {
+	x.RepeatedUint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint64(v []uint64) {
+	x.RepeatedUint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint32(v []int32) {
+	x.RepeatedSint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint64(v []int64) {
+	x.RepeatedSint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed32(v []uint32) {
+	x.RepeatedFixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed64(v []uint64) {
+	x.RepeatedFixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed32(v []int32) {
+	x.RepeatedSfixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed64(v []int64) {
+	x.RepeatedSfixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFloat(v []float32) {
+	x.RepeatedFloat = v
+}
+
+func (x *TestAllTypes) SetRepeatedDouble(v []float64) {
+	x.RepeatedDouble = v
+}
+
+func (x *TestAllTypes) SetRepeatedBool(v []bool) {
+	x.RepeatedBool = v
+}
+
+func (x *TestAllTypes) SetRepeatedString(v []string) {
+	x.RepeatedString = v
+}
+
+func (x *TestAllTypes) SetRepeatedBytes(v [][]byte) {
+	x.RepeatedBytes = v
+}
+
+func (x *TestAllTypes) SetRepeatedgroup(v []*TestAllTypes_RepeatedGroup) {
+	x.Repeatedgroup = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedMessage(v []*TestAllTypes_NestedMessage) {
+	x.RepeatedNestedMessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignMessage(v []*ForeignMessage) {
+	x.RepeatedForeignMessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportmessage(v []*ImportMessage) {
+	x.RepeatedImportmessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedEnum(v []TestAllTypes_NestedEnum) {
+	x.RepeatedNestedEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignEnum(v []ForeignEnum) {
+	x.RepeatedForeignEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportenum(v []ImportEnum) {
+	x.RepeatedImportenum = v
+}
+
+func (x *TestAllTypes) SetMapInt32Int32(v map[int32]int32) {
+	x.MapInt32Int32 = v
+}
+
+func (x *TestAllTypes) SetMapInt64Int64(v map[int64]int64) {
+	x.MapInt64Int64 = v
+}
+
+func (x *TestAllTypes) SetMapUint32Uint32(v map[uint32]uint32) {
+	x.MapUint32Uint32 = v
+}
+
+func (x *TestAllTypes) SetMapUint64Uint64(v map[uint64]uint64) {
+	x.MapUint64Uint64 = v
+}
+
+func (x *TestAllTypes) SetMapSint32Sint32(v map[int32]int32) {
+	x.MapSint32Sint32 = v
+}
+
+func (x *TestAllTypes) SetMapSint64Sint64(v map[int64]int64) {
+	x.MapSint64Sint64 = v
+}
+
+func (x *TestAllTypes) SetMapFixed32Fixed32(v map[uint32]uint32) {
+	x.MapFixed32Fixed32 = v
+}
+
+func (x *TestAllTypes) SetMapFixed64Fixed64(v map[uint64]uint64) {
+	x.MapFixed64Fixed64 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed32Sfixed32(v map[int32]int32) {
+	x.MapSfixed32Sfixed32 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed64Sfixed64(v map[int64]int64) {
+	x.MapSfixed64Sfixed64 = v
+}
+
+func (x *TestAllTypes) SetMapInt32Float(v map[int32]float32) {
+	x.MapInt32Float = v
+}
+
+func (x *TestAllTypes) SetMapInt32Double(v map[int32]float64) {
+	x.MapInt32Double = v
+}
+
+func (x *TestAllTypes) SetMapBoolBool(v map[bool]bool) {
+	x.MapBoolBool = v
+}
+
+func (x *TestAllTypes) SetMapStringString(v map[string]string) {
+	x.MapStringString = v
+}
+
+func (x *TestAllTypes) SetMapStringBytes(v map[string][]byte) {
+	x.MapStringBytes = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedMessage(v map[string]*TestAllTypes_NestedMessage) {
+	x.MapStringNestedMessage = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedEnum(v map[string]TestAllTypes_NestedEnum) {
+	x.MapStringNestedEnum = v
+}
+
+func (x *TestAllTypes) SetDefaultInt32(v int32) {
+	x.DefaultInt32 = &v
+}
+
+func (x *TestAllTypes) SetDefaultInt64(v int64) {
+	x.DefaultInt64 = &v
+}
+
+func (x *TestAllTypes) SetDefaultUint32(v uint32) {
+	x.DefaultUint32 = &v
+}
+
+func (x *TestAllTypes) SetDefaultUint64(v uint64) {
+	x.DefaultUint64 = &v
+}
+
+func (x *TestAllTypes) SetDefaultSint32(v int32) {
+	x.DefaultSint32 = &v
+}
+
+func (x *TestAllTypes) SetDefaultSint64(v int64) {
+	x.DefaultSint64 = &v
+}
+
+func (x *TestAllTypes) SetDefaultFixed32(v uint32) {
+	x.DefaultFixed32 = &v
+}
+
+func (x *TestAllTypes) SetDefaultFixed64(v uint64) {
+	x.DefaultFixed64 = &v
+}
+
+func (x *TestAllTypes) SetDefaultSfixed32(v int32) {
+	x.DefaultSfixed32 = &v
+}
+
+func (x *TestAllTypes) SetDefaultSfixed64(v int64) {
+	x.DefaultSfixed64 = &v
+}
+
+func (x *TestAllTypes) SetDefaultFloat(v float32) {
+	x.DefaultFloat = &v
+}
+
+func (x *TestAllTypes) SetDefaultDouble(v float64) {
+	x.DefaultDouble = &v
+}
+
+func (x *TestAllTypes) SetDefaultBool(v bool) {
+	x.DefaultBool = &v
+}
+
+func (x *TestAllTypes) SetDefaultString(v string) {
+	x.DefaultString = &v
+}
+
+func (x *TestAllTypes) SetDefaultBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.DefaultBytes = v
+}
+
+func (x *TestAllTypes) SetDefaultNestedEnum(v TestAllTypes_NestedEnum) {
+	x.DefaultNestedEnum = &v
+}
+
+func (x *TestAllTypes) SetDefaultForeignEnum(v ForeignEnum) {
+	x.DefaultForeignEnum = &v
+}
+
+func (x *TestAllTypes) SetOneofUint32(v uint32) {
+	x.OneofField = &TestAllTypes_OneofUint32{v}
+}
+
+func (x *TestAllTypes) SetOneofNestedMessage(v *TestAllTypes_NestedMessage) {
+	if v == nil {
+		x.OneofField = nil
+		return
+	}
+	x.OneofField = &TestAllTypes_OneofNestedMessage{v}
+}
+
+func (x *TestAllTypes) SetOneofString(v string) {
+	x.OneofField = &TestAllTypes_OneofString{v}
+}
+
+func (x *TestAllTypes) SetOneofBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OneofField = &TestAllTypes_OneofBytes{v}
+}
+
+func (x *TestAllTypes) SetOneofBool(v bool) {
+	x.OneofField = &TestAllTypes_OneofBool{v}
+}
+
+func (x *TestAllTypes) SetOneofUint64(v uint64) {
+	x.OneofField = &TestAllTypes_OneofUint64{v}
+}
+
+func (x *TestAllTypes) SetOneofFloat(v float32) {
+	x.OneofField = &TestAllTypes_OneofFloat{v}
+}
+
+func (x *TestAllTypes) SetOneofDouble(v float64) {
+	x.OneofField = &TestAllTypes_OneofDouble{v}
+}
+
+func (x *TestAllTypes) SetOneofEnum(v TestAllTypes_NestedEnum) {
+	x.OneofField = &TestAllTypes_OneofEnum{v}
+}
+
+func (x *TestAllTypes) SetOneofgroup(v *TestAllTypes_OneofGroup) {
+	if v == nil {
+		x.OneofField = nil
+		return
+	}
+	x.OneofField = &TestAllTypes_Oneofgroup{v}
+}
+
+func (x *TestAllTypes) SetOneofOptionalUint32(v uint32) {
+	x.OneofOptional = &TestAllTypes_OneofOptionalUint32{v}
+}
+
+func (x *TestAllTypes) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalUint32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalUint64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSint32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSint64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFixed32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFixed64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSfixed32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSfixed64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFloat != nil
+}
+
+func (x *TestAllTypes) HasOptionalDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalDouble != nil
+}
+
+func (x *TestAllTypes) HasOptionalBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalBool != nil
+}
+
+func (x *TestAllTypes) HasOptionalString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalString != nil
+}
+
+func (x *TestAllTypes) HasOptionalBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalBytes != nil
+}
+
+func (x *TestAllTypes) HasOptionalgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.Optionalgroup != nil
+}
+
+func (x *TestAllTypes) HasNotGroupLikeDelimited() bool {
+	if x == nil {
+		return false
+	}
+	return x.NotGroupLikeDelimited != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedEnum != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalForeignEnum != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalImportEnum != nil
+}
+
+func (x *TestAllTypes) HasOptionalLazyNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalLazyNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasDefaultInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultInt32 != nil
+}
+
+func (x *TestAllTypes) HasDefaultInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultInt64 != nil
+}
+
+func (x *TestAllTypes) HasDefaultUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultUint32 != nil
+}
+
+func (x *TestAllTypes) HasDefaultUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultUint64 != nil
+}
+
+func (x *TestAllTypes) HasDefaultSint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultSint32 != nil
+}
+
+func (x *TestAllTypes) HasDefaultSint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultSint64 != nil
+}
+
+func (x *TestAllTypes) HasDefaultFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultFixed32 != nil
+}
+
+func (x *TestAllTypes) HasDefaultFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultFixed64 != nil
+}
+
+func (x *TestAllTypes) HasDefaultSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultSfixed32 != nil
+}
+
+func (x *TestAllTypes) HasDefaultSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultSfixed64 != nil
+}
+
+func (x *TestAllTypes) HasDefaultFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultFloat != nil
+}
+
+func (x *TestAllTypes) HasDefaultDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultDouble != nil
+}
+
+func (x *TestAllTypes) HasDefaultBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultBool != nil
+}
+
+func (x *TestAllTypes) HasDefaultString() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultString != nil
+}
+
+func (x *TestAllTypes) HasDefaultBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultBytes != nil
+}
+
+func (x *TestAllTypes) HasDefaultNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultNestedEnum != nil
+}
+
+func (x *TestAllTypes) HasDefaultForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.DefaultForeignEnum != nil
+}
+
+func (x *TestAllTypes) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.OneofField != nil
+}
+
+func (x *TestAllTypes) HasOneofUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofUint32)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofString() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofString)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBytes() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofBytes)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBool() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofBool)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofUint64() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofUint64)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofFloat() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofFloat)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofDouble() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofDouble)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofEnum() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofEnum)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofgroup() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_Oneofgroup)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofOptional() bool {
+	if x == nil {
+		return false
+	}
+	return x.OneofOptional != nil
+}
+
+func (x *TestAllTypes) HasOneofOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32)
+	return ok
+}
+
+func (x *TestAllTypes) ClearOptionalInt32() {
+	x.OptionalInt32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalInt64() {
+	x.OptionalInt64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalUint32() {
+	x.OptionalUint32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalUint64() {
+	x.OptionalUint64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSint32() {
+	x.OptionalSint32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSint64() {
+	x.OptionalSint64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFixed32() {
+	x.OptionalFixed32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFixed64() {
+	x.OptionalFixed64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed32() {
+	x.OptionalSfixed32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed64() {
+	x.OptionalSfixed64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFloat() {
+	x.OptionalFloat = nil
+}
+
+func (x *TestAllTypes) ClearOptionalDouble() {
+	x.OptionalDouble = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBool() {
+	x.OptionalBool = nil
+}
+
+func (x *TestAllTypes) ClearOptionalString() {
+	x.OptionalString = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBytes() {
+	x.OptionalBytes = nil
+}
+
+func (x *TestAllTypes) ClearOptionalgroup() {
+	x.Optionalgroup = nil
+}
+
+func (x *TestAllTypes) ClearNotGroupLikeDelimited() {
+	x.NotGroupLikeDelimited = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignMessage() {
+	x.OptionalForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportMessage() {
+	x.OptionalImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedEnum() {
+	x.OptionalNestedEnum = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignEnum() {
+	x.OptionalForeignEnum = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportEnum() {
+	x.OptionalImportEnum = nil
+}
+
+func (x *TestAllTypes) ClearOptionalLazyNestedMessage() {
+	x.OptionalLazyNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearDefaultInt32() {
+	x.DefaultInt32 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultInt64() {
+	x.DefaultInt64 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultUint32() {
+	x.DefaultUint32 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultUint64() {
+	x.DefaultUint64 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultSint32() {
+	x.DefaultSint32 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultSint64() {
+	x.DefaultSint64 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultFixed32() {
+	x.DefaultFixed32 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultFixed64() {
+	x.DefaultFixed64 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultSfixed32() {
+	x.DefaultSfixed32 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultSfixed64() {
+	x.DefaultSfixed64 = nil
+}
+
+func (x *TestAllTypes) ClearDefaultFloat() {
+	x.DefaultFloat = nil
+}
+
+func (x *TestAllTypes) ClearDefaultDouble() {
+	x.DefaultDouble = nil
+}
+
+func (x *TestAllTypes) ClearDefaultBool() {
+	x.DefaultBool = nil
+}
+
+func (x *TestAllTypes) ClearDefaultString() {
+	x.DefaultString = nil
+}
+
+func (x *TestAllTypes) ClearDefaultBytes() {
+	x.DefaultBytes = nil
+}
+
+func (x *TestAllTypes) ClearDefaultNestedEnum() {
+	x.DefaultNestedEnum = nil
+}
+
+func (x *TestAllTypes) ClearDefaultForeignEnum() {
+	x.DefaultForeignEnum = nil
+}
+
+func (x *TestAllTypes) ClearOneofField() {
+	x.OneofField = nil
+}
+
+func (x *TestAllTypes) ClearOneofUint32() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofNestedMessage() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofString() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBytes() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBool() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofUint64() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofFloat() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofDouble() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofEnum() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofgroup() {
+	if _, ok := x.OneofField.(*TestAllTypes_Oneofgroup); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofOptional() {
+	x.OneofOptional = nil
+}
+
+func (x *TestAllTypes) ClearOneofOptionalUint32() {
+	if _, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32); ok {
+		x.OneofOptional = nil
+	}
+}
+
+const TestAllTypes_OneofField_not_set_case case_TestAllTypes_OneofField = 0
+const TestAllTypes_OneofUint32_case case_TestAllTypes_OneofField = 111
+const TestAllTypes_OneofNestedMessage_case case_TestAllTypes_OneofField = 112
+const TestAllTypes_OneofString_case case_TestAllTypes_OneofField = 113
+const TestAllTypes_OneofBytes_case case_TestAllTypes_OneofField = 114
+const TestAllTypes_OneofBool_case case_TestAllTypes_OneofField = 115
+const TestAllTypes_OneofUint64_case case_TestAllTypes_OneofField = 116
+const TestAllTypes_OneofFloat_case case_TestAllTypes_OneofField = 117
+const TestAllTypes_OneofDouble_case case_TestAllTypes_OneofField = 118
+const TestAllTypes_OneofEnum_case case_TestAllTypes_OneofField = 119
+const TestAllTypes_Oneofgroup_case case_TestAllTypes_OneofField = 121
+
+func (x *TestAllTypes) WhichOneofField() case_TestAllTypes_OneofField {
+	if x == nil {
+		return TestAllTypes_OneofField_not_set_case
+	}
+	switch x.OneofField.(type) {
+	case *TestAllTypes_OneofUint32:
+		return TestAllTypes_OneofUint32_case
+	case *TestAllTypes_OneofNestedMessage:
+		return TestAllTypes_OneofNestedMessage_case
+	case *TestAllTypes_OneofString:
+		return TestAllTypes_OneofString_case
+	case *TestAllTypes_OneofBytes:
+		return TestAllTypes_OneofBytes_case
+	case *TestAllTypes_OneofBool:
+		return TestAllTypes_OneofBool_case
+	case *TestAllTypes_OneofUint64:
+		return TestAllTypes_OneofUint64_case
+	case *TestAllTypes_OneofFloat:
+		return TestAllTypes_OneofFloat_case
+	case *TestAllTypes_OneofDouble:
+		return TestAllTypes_OneofDouble_case
+	case *TestAllTypes_OneofEnum:
+		return TestAllTypes_OneofEnum_case
+	case *TestAllTypes_Oneofgroup:
+		return TestAllTypes_Oneofgroup_case
+	default:
+		return TestAllTypes_OneofField_not_set_case
+	}
+}
+
+const TestAllTypes_OneofOptional_not_set_case case_TestAllTypes_OneofOptional = 0
+const TestAllTypes_OneofOptionalUint32_case case_TestAllTypes_OneofOptional = 120
+
+func (x *TestAllTypes) WhichOneofOptional() case_TestAllTypes_OneofOptional {
+	if x == nil {
+		return TestAllTypes_OneofOptional_not_set_case
+	}
+	switch x.OneofOptional.(type) {
+	case *TestAllTypes_OneofOptionalUint32:
+		return TestAllTypes_OneofOptionalUint32_case
+	default:
+		return TestAllTypes_OneofOptional_not_set_case
+	}
+}
+
+type TestAllTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SingularInt32    int32
+	SingularInt64    int64
+	SingularUint32   uint32
+	SingularUint64   uint64
+	SingularSint32   int32
+	SingularSint64   int64
+	SingularFixed32  uint32
+	SingularFixed64  uint64
+	SingularSfixed32 int32
+	SingularSfixed64 int64
+	SingularFloat    float32
+	SingularDouble   float64
+	SingularBool     bool
+	SingularString   string
+	SingularBytes    []byte
+	// message-typed fields elided, as they cannot specify implicit presence.
+	SingularNestedEnum        TestAllTypes_NestedEnum
+	SingularForeignEnum       ForeignEnum
+	SingularImportEnum        ImportEnum
+	OptionalInt32             *int32
+	OptionalInt64             *int64
+	OptionalUint32            *uint32
+	OptionalUint64            *uint64
+	OptionalSint32            *int32
+	OptionalSint64            *int64
+	OptionalFixed32           *uint32
+	OptionalFixed64           *uint64
+	OptionalSfixed32          *int32
+	OptionalSfixed64          *int64
+	OptionalFloat             *float32
+	OptionalDouble            *float64
+	OptionalBool              *bool
+	OptionalString            *string
+	OptionalBytes             []byte
+	Optionalgroup             *TestAllTypes_OptionalGroup
+	NotGroupLikeDelimited     *TestAllTypes_OptionalGroup
+	OptionalNestedMessage     *TestAllTypes_NestedMessage
+	OptionalForeignMessage    *ForeignMessage
+	OptionalImportMessage     *ImportMessage
+	OptionalNestedEnum        *TestAllTypes_NestedEnum
+	OptionalForeignEnum       *ForeignEnum
+	OptionalImportEnum        *ImportEnum
+	OptionalLazyNestedMessage *TestAllTypes_NestedMessage
+	RepeatedInt32             []int32
+	RepeatedInt64             []int64
+	RepeatedUint32            []uint32
+	RepeatedUint64            []uint64
+	RepeatedSint32            []int32
+	RepeatedSint64            []int64
+	RepeatedFixed32           []uint32
+	RepeatedFixed64           []uint64
+	RepeatedSfixed32          []int32
+	RepeatedSfixed64          []int64
+	RepeatedFloat             []float32
+	RepeatedDouble            []float64
+	RepeatedBool              []bool
+	RepeatedString            []string
+	RepeatedBytes             [][]byte
+	Repeatedgroup             []*TestAllTypes_RepeatedGroup
+	RepeatedNestedMessage     []*TestAllTypes_NestedMessage
+	RepeatedForeignMessage    []*ForeignMessage
+	RepeatedImportmessage     []*ImportMessage
+	RepeatedNestedEnum        []TestAllTypes_NestedEnum
+	RepeatedForeignEnum       []ForeignEnum
+	RepeatedImportenum        []ImportEnum
+	MapInt32Int32             map[int32]int32
+	MapInt64Int64             map[int64]int64
+	MapUint32Uint32           map[uint32]uint32
+	MapUint64Uint64           map[uint64]uint64
+	MapSint32Sint32           map[int32]int32
+	MapSint64Sint64           map[int64]int64
+	MapFixed32Fixed32         map[uint32]uint32
+	MapFixed64Fixed64         map[uint64]uint64
+	MapSfixed32Sfixed32       map[int32]int32
+	MapSfixed64Sfixed64       map[int64]int64
+	MapInt32Float             map[int32]float32
+	MapInt32Double            map[int32]float64
+	MapBoolBool               map[bool]bool
+	MapStringString           map[string]string
+	MapStringBytes            map[string][]byte
+	MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage
+	MapStringNestedEnum       map[string]TestAllTypes_NestedEnum
+	// Singular with defaults
+	DefaultInt32       *int32
+	DefaultInt64       *int64
+	DefaultUint32      *uint32
+	DefaultUint64      *uint64
+	DefaultSint32      *int32
+	DefaultSint64      *int64
+	DefaultFixed32     *uint32
+	DefaultFixed64     *uint64
+	DefaultSfixed32    *int32
+	DefaultSfixed64    *int64
+	DefaultFloat       *float32
+	DefaultDouble      *float64
+	DefaultBool        *bool
+	DefaultString      *string
+	DefaultBytes       []byte
+	DefaultNestedEnum  *TestAllTypes_NestedEnum
+	DefaultForeignEnum *ForeignEnum
+	// Fields of oneof OneofField:
+	OneofUint32        *uint32
+	OneofNestedMessage *TestAllTypes_NestedMessage
+	OneofString        *string
+	OneofBytes         []byte
+	OneofBool          *bool
+	OneofUint64        *uint64
+	OneofFloat         *float32
+	OneofDouble        *float64
+	OneofEnum          *TestAllTypes_NestedEnum
+	Oneofgroup         *TestAllTypes_OneofGroup
+	// -- end of OneofField
+	// A oneof with exactly one field.
+
+	// Fields of oneof OneofOptional:
+	OneofOptionalUint32 *uint32
+	// -- end of OneofOptional
+}
+
+func (b0 TestAllTypes_builder) Build() *TestAllTypes {
+	m0 := &TestAllTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.SingularInt32 = b.SingularInt32
+	x.SingularInt64 = b.SingularInt64
+	x.SingularUint32 = b.SingularUint32
+	x.SingularUint64 = b.SingularUint64
+	x.SingularSint32 = b.SingularSint32
+	x.SingularSint64 = b.SingularSint64
+	x.SingularFixed32 = b.SingularFixed32
+	x.SingularFixed64 = b.SingularFixed64
+	x.SingularSfixed32 = b.SingularSfixed32
+	x.SingularSfixed64 = b.SingularSfixed64
+	x.SingularFloat = b.SingularFloat
+	x.SingularDouble = b.SingularDouble
+	x.SingularBool = b.SingularBool
+	x.SingularString = b.SingularString
+	x.SingularBytes = b.SingularBytes
+	x.SingularNestedEnum = b.SingularNestedEnum
+	x.SingularForeignEnum = b.SingularForeignEnum
+	x.SingularImportEnum = b.SingularImportEnum
+	x.OptionalInt32 = b.OptionalInt32
+	x.OptionalInt64 = b.OptionalInt64
+	x.OptionalUint32 = b.OptionalUint32
+	x.OptionalUint64 = b.OptionalUint64
+	x.OptionalSint32 = b.OptionalSint32
+	x.OptionalSint64 = b.OptionalSint64
+	x.OptionalFixed32 = b.OptionalFixed32
+	x.OptionalFixed64 = b.OptionalFixed64
+	x.OptionalSfixed32 = b.OptionalSfixed32
+	x.OptionalSfixed64 = b.OptionalSfixed64
+	x.OptionalFloat = b.OptionalFloat
+	x.OptionalDouble = b.OptionalDouble
+	x.OptionalBool = b.OptionalBool
+	x.OptionalString = b.OptionalString
+	x.OptionalBytes = b.OptionalBytes
+	x.Optionalgroup = b.Optionalgroup
+	x.NotGroupLikeDelimited = b.NotGroupLikeDelimited
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	x.OptionalForeignMessage = b.OptionalForeignMessage
+	x.OptionalImportMessage = b.OptionalImportMessage
+	x.OptionalNestedEnum = b.OptionalNestedEnum
+	x.OptionalForeignEnum = b.OptionalForeignEnum
+	x.OptionalImportEnum = b.OptionalImportEnum
+	x.OptionalLazyNestedMessage = b.OptionalLazyNestedMessage
+	x.RepeatedInt32 = b.RepeatedInt32
+	x.RepeatedInt64 = b.RepeatedInt64
+	x.RepeatedUint32 = b.RepeatedUint32
+	x.RepeatedUint64 = b.RepeatedUint64
+	x.RepeatedSint32 = b.RepeatedSint32
+	x.RepeatedSint64 = b.RepeatedSint64
+	x.RepeatedFixed32 = b.RepeatedFixed32
+	x.RepeatedFixed64 = b.RepeatedFixed64
+	x.RepeatedSfixed32 = b.RepeatedSfixed32
+	x.RepeatedSfixed64 = b.RepeatedSfixed64
+	x.RepeatedFloat = b.RepeatedFloat
+	x.RepeatedDouble = b.RepeatedDouble
+	x.RepeatedBool = b.RepeatedBool
+	x.RepeatedString = b.RepeatedString
+	x.RepeatedBytes = b.RepeatedBytes
+	x.Repeatedgroup = b.Repeatedgroup
+	x.RepeatedNestedMessage = b.RepeatedNestedMessage
+	x.RepeatedForeignMessage = b.RepeatedForeignMessage
+	x.RepeatedImportmessage = b.RepeatedImportmessage
+	x.RepeatedNestedEnum = b.RepeatedNestedEnum
+	x.RepeatedForeignEnum = b.RepeatedForeignEnum
+	x.RepeatedImportenum = b.RepeatedImportenum
+	x.MapInt32Int32 = b.MapInt32Int32
+	x.MapInt64Int64 = b.MapInt64Int64
+	x.MapUint32Uint32 = b.MapUint32Uint32
+	x.MapUint64Uint64 = b.MapUint64Uint64
+	x.MapSint32Sint32 = b.MapSint32Sint32
+	x.MapSint64Sint64 = b.MapSint64Sint64
+	x.MapFixed32Fixed32 = b.MapFixed32Fixed32
+	x.MapFixed64Fixed64 = b.MapFixed64Fixed64
+	x.MapSfixed32Sfixed32 = b.MapSfixed32Sfixed32
+	x.MapSfixed64Sfixed64 = b.MapSfixed64Sfixed64
+	x.MapInt32Float = b.MapInt32Float
+	x.MapInt32Double = b.MapInt32Double
+	x.MapBoolBool = b.MapBoolBool
+	x.MapStringString = b.MapStringString
+	x.MapStringBytes = b.MapStringBytes
+	x.MapStringNestedMessage = b.MapStringNestedMessage
+	x.MapStringNestedEnum = b.MapStringNestedEnum
+	x.DefaultInt32 = b.DefaultInt32
+	x.DefaultInt64 = b.DefaultInt64
+	x.DefaultUint32 = b.DefaultUint32
+	x.DefaultUint64 = b.DefaultUint64
+	x.DefaultSint32 = b.DefaultSint32
+	x.DefaultSint64 = b.DefaultSint64
+	x.DefaultFixed32 = b.DefaultFixed32
+	x.DefaultFixed64 = b.DefaultFixed64
+	x.DefaultSfixed32 = b.DefaultSfixed32
+	x.DefaultSfixed64 = b.DefaultSfixed64
+	x.DefaultFloat = b.DefaultFloat
+	x.DefaultDouble = b.DefaultDouble
+	x.DefaultBool = b.DefaultBool
+	x.DefaultString = b.DefaultString
+	x.DefaultBytes = b.DefaultBytes
+	x.DefaultNestedEnum = b.DefaultNestedEnum
+	x.DefaultForeignEnum = b.DefaultForeignEnum
+	if b.OneofUint32 != nil {
+		x.OneofField = &TestAllTypes_OneofUint32{*b.OneofUint32}
+	}
+	if b.OneofNestedMessage != nil {
+		x.OneofField = &TestAllTypes_OneofNestedMessage{b.OneofNestedMessage}
+	}
+	if b.OneofString != nil {
+		x.OneofField = &TestAllTypes_OneofString{*b.OneofString}
+	}
+	if b.OneofBytes != nil {
+		x.OneofField = &TestAllTypes_OneofBytes{b.OneofBytes}
+	}
+	if b.OneofBool != nil {
+		x.OneofField = &TestAllTypes_OneofBool{*b.OneofBool}
+	}
+	if b.OneofUint64 != nil {
+		x.OneofField = &TestAllTypes_OneofUint64{*b.OneofUint64}
+	}
+	if b.OneofFloat != nil {
+		x.OneofField = &TestAllTypes_OneofFloat{*b.OneofFloat}
+	}
+	if b.OneofDouble != nil {
+		x.OneofField = &TestAllTypes_OneofDouble{*b.OneofDouble}
+	}
+	if b.OneofEnum != nil {
+		x.OneofField = &TestAllTypes_OneofEnum{*b.OneofEnum}
+	}
+	if b.Oneofgroup != nil {
+		x.OneofField = &TestAllTypes_Oneofgroup{b.Oneofgroup}
+	}
+	if b.OneofOptionalUint32 != nil {
+		x.OneofOptional = &TestAllTypes_OneofOptionalUint32{*b.OneofOptionalUint32}
+	}
+	return m0
+}
+
+type case_TestAllTypes_OneofField protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofField) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type case_TestAllTypes_OneofOptional protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofOptional) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestAllTypes_OneofField interface {
+	isTestAllTypes_OneofField()
+}
+
+type TestAllTypes_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+
+type TestAllTypes_OneofNestedMessage struct {
+	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
+}
+
+type TestAllTypes_OneofString struct {
+	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"`
+}
+
+type TestAllTypes_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+
+type TestAllTypes_OneofBool struct {
+	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+
+type TestAllTypes_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+
+type TestAllTypes_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+
+type TestAllTypes_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+
+type TestAllTypes_OneofEnum struct {
+	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum,oneof"`
+}
+
+type TestAllTypes_Oneofgroup struct {
+	Oneofgroup *TestAllTypes_OneofGroup `protobuf:"group,121,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+
+func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_Oneofgroup) isTestAllTypes_OneofField() {}
+
+type isTestAllTypes_OneofOptional interface {
+	isTestAllTypes_OneofOptional()
+}
+
+type TestAllTypes_OneofOptionalUint32 struct {
+	OneofOptionalUint32 uint32 `protobuf:"varint,120,opt,name=oneof_optional_uint32,json=oneofOptionalUint32,oneof"`
+}
+
+func (*TestAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}
+
+type TestManyMessageFieldsMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	F1            *TestAllTypes          `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2            *TestAllTypes          `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
+	F3            *TestAllTypes          `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	F4            *TestAllTypes          `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	F5            *TestAllTypes          `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
+	F6            *TestAllTypes          `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
+	F7            *TestAllTypes          `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
+	F8            *TestAllTypes          `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
+	F9            *TestAllTypes          `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
+	F10           *TestAllTypes          `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
+	F11           *TestAllTypes          `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
+	F12           *TestAllTypes          `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
+	F13           *TestAllTypes          `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
+	F14           *TestAllTypes          `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
+	F15           *TestAllTypes          `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
+	F16           *TestAllTypes          `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
+	F17           *TestAllTypes          `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
+	F18           *TestAllTypes          `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
+	F19           *TestAllTypes          `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
+	F20           *TestAllTypes          `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
+	F21           *TestAllTypes          `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
+	F22           *TestAllTypes          `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
+	F23           *TestAllTypes          `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
+	F24           *TestAllTypes          `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
+	F25           *TestAllTypes          `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
+	F26           *TestAllTypes          `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
+	F27           *TestAllTypes          `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
+	F28           *TestAllTypes          `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
+	F29           *TestAllTypes          `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
+	F30           *TestAllTypes          `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
+	F31           *TestAllTypes          `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
+	F32           *TestAllTypes          `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
+	F33           *TestAllTypes          `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
+	F34           *TestAllTypes          `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
+	F35           *TestAllTypes          `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
+	F36           *TestAllTypes          `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
+	F37           *TestAllTypes          `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
+	F38           *TestAllTypes          `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
+	F39           *TestAllTypes          `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
+	F40           *TestAllTypes          `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
+	F41           *TestAllTypes          `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
+	F42           *TestAllTypes          `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
+	F43           *TestAllTypes          `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
+	F44           *TestAllTypes          `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
+	F45           *TestAllTypes          `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
+	F46           *TestAllTypes          `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
+	F47           *TestAllTypes          `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
+	F48           *TestAllTypes          `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
+	F49           *TestAllTypes          `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
+	F50           *TestAllTypes          `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
+	F51           *TestAllTypes          `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
+	F52           *TestAllTypes          `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
+	F53           *TestAllTypes          `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
+	F54           *TestAllTypes          `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
+	F55           *TestAllTypes          `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
+	F56           *TestAllTypes          `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
+	F57           *TestAllTypes          `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
+	F58           *TestAllTypes          `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
+	F59           *TestAllTypes          `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
+	F60           *TestAllTypes          `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
+	F61           *TestAllTypes          `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
+	F62           *TestAllTypes          `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
+	F63           *TestAllTypes          `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
+	F64           *TestAllTypes          `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
+	F65           *TestAllTypes          `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
+	F66           *TestAllTypes          `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
+	F67           *TestAllTypes          `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
+	F68           *TestAllTypes          `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
+	F69           *TestAllTypes          `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
+	F70           *TestAllTypes          `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
+	F71           *TestAllTypes          `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
+	F72           *TestAllTypes          `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
+	F73           *TestAllTypes          `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
+	F74           *TestAllTypes          `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
+	F75           *TestAllTypes          `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
+	F76           *TestAllTypes          `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
+	F77           *TestAllTypes          `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
+	F78           *TestAllTypes          `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
+	F79           *TestAllTypes          `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
+	F80           *TestAllTypes          `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
+	F81           *TestAllTypes          `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
+	F82           *TestAllTypes          `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
+	F83           *TestAllTypes          `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
+	F84           *TestAllTypes          `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
+	F85           *TestAllTypes          `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
+	F86           *TestAllTypes          `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
+	F87           *TestAllTypes          `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
+	F88           *TestAllTypes          `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
+	F89           *TestAllTypes          `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
+	F90           *TestAllTypes          `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
+	F91           *TestAllTypes          `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
+	F92           *TestAllTypes          `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
+	F93           *TestAllTypes          `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
+	F94           *TestAllTypes          `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
+	F95           *TestAllTypes          `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
+	F96           *TestAllTypes          `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
+	F97           *TestAllTypes          `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
+	F98           *TestAllTypes          `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
+	F99           *TestAllTypes          `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
+	F100          *TestAllTypes          `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestManyMessageFieldsMessage) Reset() {
+	*x = TestManyMessageFieldsMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestManyMessageFieldsMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestManyMessageFieldsMessage) ProtoMessage() {}
+
+func (x *TestManyMessageFieldsMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestManyMessageFieldsMessage) GetF1() *TestAllTypes {
+	if x != nil {
+		return x.F1
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF2() *TestAllTypes {
+	if x != nil {
+		return x.F2
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF3() *TestAllTypes {
+	if x != nil {
+		return x.F3
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF4() *TestAllTypes {
+	if x != nil {
+		return x.F4
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF5() *TestAllTypes {
+	if x != nil {
+		return x.F5
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF6() *TestAllTypes {
+	if x != nil {
+		return x.F6
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF7() *TestAllTypes {
+	if x != nil {
+		return x.F7
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF8() *TestAllTypes {
+	if x != nil {
+		return x.F8
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF9() *TestAllTypes {
+	if x != nil {
+		return x.F9
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF10() *TestAllTypes {
+	if x != nil {
+		return x.F10
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF11() *TestAllTypes {
+	if x != nil {
+		return x.F11
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF12() *TestAllTypes {
+	if x != nil {
+		return x.F12
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF13() *TestAllTypes {
+	if x != nil {
+		return x.F13
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF14() *TestAllTypes {
+	if x != nil {
+		return x.F14
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF15() *TestAllTypes {
+	if x != nil {
+		return x.F15
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF16() *TestAllTypes {
+	if x != nil {
+		return x.F16
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF17() *TestAllTypes {
+	if x != nil {
+		return x.F17
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF18() *TestAllTypes {
+	if x != nil {
+		return x.F18
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF19() *TestAllTypes {
+	if x != nil {
+		return x.F19
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF20() *TestAllTypes {
+	if x != nil {
+		return x.F20
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF21() *TestAllTypes {
+	if x != nil {
+		return x.F21
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF22() *TestAllTypes {
+	if x != nil {
+		return x.F22
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF23() *TestAllTypes {
+	if x != nil {
+		return x.F23
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF24() *TestAllTypes {
+	if x != nil {
+		return x.F24
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF25() *TestAllTypes {
+	if x != nil {
+		return x.F25
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF26() *TestAllTypes {
+	if x != nil {
+		return x.F26
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF27() *TestAllTypes {
+	if x != nil {
+		return x.F27
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF28() *TestAllTypes {
+	if x != nil {
+		return x.F28
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF29() *TestAllTypes {
+	if x != nil {
+		return x.F29
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF30() *TestAllTypes {
+	if x != nil {
+		return x.F30
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF31() *TestAllTypes {
+	if x != nil {
+		return x.F31
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF32() *TestAllTypes {
+	if x != nil {
+		return x.F32
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF33() *TestAllTypes {
+	if x != nil {
+		return x.F33
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF34() *TestAllTypes {
+	if x != nil {
+		return x.F34
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF35() *TestAllTypes {
+	if x != nil {
+		return x.F35
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF36() *TestAllTypes {
+	if x != nil {
+		return x.F36
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF37() *TestAllTypes {
+	if x != nil {
+		return x.F37
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF38() *TestAllTypes {
+	if x != nil {
+		return x.F38
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF39() *TestAllTypes {
+	if x != nil {
+		return x.F39
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF40() *TestAllTypes {
+	if x != nil {
+		return x.F40
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF41() *TestAllTypes {
+	if x != nil {
+		return x.F41
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF42() *TestAllTypes {
+	if x != nil {
+		return x.F42
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF43() *TestAllTypes {
+	if x != nil {
+		return x.F43
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF44() *TestAllTypes {
+	if x != nil {
+		return x.F44
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF45() *TestAllTypes {
+	if x != nil {
+		return x.F45
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF46() *TestAllTypes {
+	if x != nil {
+		return x.F46
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF47() *TestAllTypes {
+	if x != nil {
+		return x.F47
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF48() *TestAllTypes {
+	if x != nil {
+		return x.F48
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF49() *TestAllTypes {
+	if x != nil {
+		return x.F49
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF50() *TestAllTypes {
+	if x != nil {
+		return x.F50
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF51() *TestAllTypes {
+	if x != nil {
+		return x.F51
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF52() *TestAllTypes {
+	if x != nil {
+		return x.F52
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF53() *TestAllTypes {
+	if x != nil {
+		return x.F53
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF54() *TestAllTypes {
+	if x != nil {
+		return x.F54
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF55() *TestAllTypes {
+	if x != nil {
+		return x.F55
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF56() *TestAllTypes {
+	if x != nil {
+		return x.F56
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF57() *TestAllTypes {
+	if x != nil {
+		return x.F57
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF58() *TestAllTypes {
+	if x != nil {
+		return x.F58
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF59() *TestAllTypes {
+	if x != nil {
+		return x.F59
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF60() *TestAllTypes {
+	if x != nil {
+		return x.F60
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF61() *TestAllTypes {
+	if x != nil {
+		return x.F61
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF62() *TestAllTypes {
+	if x != nil {
+		return x.F62
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF63() *TestAllTypes {
+	if x != nil {
+		return x.F63
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF64() *TestAllTypes {
+	if x != nil {
+		return x.F64
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF65() *TestAllTypes {
+	if x != nil {
+		return x.F65
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF66() *TestAllTypes {
+	if x != nil {
+		return x.F66
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF67() *TestAllTypes {
+	if x != nil {
+		return x.F67
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF68() *TestAllTypes {
+	if x != nil {
+		return x.F68
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF69() *TestAllTypes {
+	if x != nil {
+		return x.F69
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF70() *TestAllTypes {
+	if x != nil {
+		return x.F70
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF71() *TestAllTypes {
+	if x != nil {
+		return x.F71
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF72() *TestAllTypes {
+	if x != nil {
+		return x.F72
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF73() *TestAllTypes {
+	if x != nil {
+		return x.F73
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF74() *TestAllTypes {
+	if x != nil {
+		return x.F74
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF75() *TestAllTypes {
+	if x != nil {
+		return x.F75
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF76() *TestAllTypes {
+	if x != nil {
+		return x.F76
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF77() *TestAllTypes {
+	if x != nil {
+		return x.F77
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF78() *TestAllTypes {
+	if x != nil {
+		return x.F78
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF79() *TestAllTypes {
+	if x != nil {
+		return x.F79
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF80() *TestAllTypes {
+	if x != nil {
+		return x.F80
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF81() *TestAllTypes {
+	if x != nil {
+		return x.F81
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF82() *TestAllTypes {
+	if x != nil {
+		return x.F82
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF83() *TestAllTypes {
+	if x != nil {
+		return x.F83
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF84() *TestAllTypes {
+	if x != nil {
+		return x.F84
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF85() *TestAllTypes {
+	if x != nil {
+		return x.F85
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF86() *TestAllTypes {
+	if x != nil {
+		return x.F86
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF87() *TestAllTypes {
+	if x != nil {
+		return x.F87
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF88() *TestAllTypes {
+	if x != nil {
+		return x.F88
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF89() *TestAllTypes {
+	if x != nil {
+		return x.F89
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF90() *TestAllTypes {
+	if x != nil {
+		return x.F90
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF91() *TestAllTypes {
+	if x != nil {
+		return x.F91
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF92() *TestAllTypes {
+	if x != nil {
+		return x.F92
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF93() *TestAllTypes {
+	if x != nil {
+		return x.F93
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF94() *TestAllTypes {
+	if x != nil {
+		return x.F94
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF95() *TestAllTypes {
+	if x != nil {
+		return x.F95
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF96() *TestAllTypes {
+	if x != nil {
+		return x.F96
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF97() *TestAllTypes {
+	if x != nil {
+		return x.F97
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF98() *TestAllTypes {
+	if x != nil {
+		return x.F98
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF99() *TestAllTypes {
+	if x != nil {
+		return x.F99
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF100() *TestAllTypes {
+	if x != nil {
+		return x.F100
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) SetF1(v *TestAllTypes) {
+	x.F1 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF2(v *TestAllTypes) {
+	x.F2 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF3(v *TestAllTypes) {
+	x.F3 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF4(v *TestAllTypes) {
+	x.F4 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF5(v *TestAllTypes) {
+	x.F5 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF6(v *TestAllTypes) {
+	x.F6 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF7(v *TestAllTypes) {
+	x.F7 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF8(v *TestAllTypes) {
+	x.F8 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF9(v *TestAllTypes) {
+	x.F9 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF10(v *TestAllTypes) {
+	x.F10 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF11(v *TestAllTypes) {
+	x.F11 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF12(v *TestAllTypes) {
+	x.F12 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF13(v *TestAllTypes) {
+	x.F13 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF14(v *TestAllTypes) {
+	x.F14 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF15(v *TestAllTypes) {
+	x.F15 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF16(v *TestAllTypes) {
+	x.F16 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF17(v *TestAllTypes) {
+	x.F17 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF18(v *TestAllTypes) {
+	x.F18 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF19(v *TestAllTypes) {
+	x.F19 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF20(v *TestAllTypes) {
+	x.F20 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF21(v *TestAllTypes) {
+	x.F21 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF22(v *TestAllTypes) {
+	x.F22 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF23(v *TestAllTypes) {
+	x.F23 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF24(v *TestAllTypes) {
+	x.F24 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF25(v *TestAllTypes) {
+	x.F25 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF26(v *TestAllTypes) {
+	x.F26 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF27(v *TestAllTypes) {
+	x.F27 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF28(v *TestAllTypes) {
+	x.F28 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF29(v *TestAllTypes) {
+	x.F29 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF30(v *TestAllTypes) {
+	x.F30 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF31(v *TestAllTypes) {
+	x.F31 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF32(v *TestAllTypes) {
+	x.F32 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF33(v *TestAllTypes) {
+	x.F33 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF34(v *TestAllTypes) {
+	x.F34 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF35(v *TestAllTypes) {
+	x.F35 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF36(v *TestAllTypes) {
+	x.F36 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF37(v *TestAllTypes) {
+	x.F37 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF38(v *TestAllTypes) {
+	x.F38 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF39(v *TestAllTypes) {
+	x.F39 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF40(v *TestAllTypes) {
+	x.F40 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF41(v *TestAllTypes) {
+	x.F41 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF42(v *TestAllTypes) {
+	x.F42 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF43(v *TestAllTypes) {
+	x.F43 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF44(v *TestAllTypes) {
+	x.F44 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF45(v *TestAllTypes) {
+	x.F45 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF46(v *TestAllTypes) {
+	x.F46 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF47(v *TestAllTypes) {
+	x.F47 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF48(v *TestAllTypes) {
+	x.F48 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF49(v *TestAllTypes) {
+	x.F49 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF50(v *TestAllTypes) {
+	x.F50 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF51(v *TestAllTypes) {
+	x.F51 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF52(v *TestAllTypes) {
+	x.F52 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF53(v *TestAllTypes) {
+	x.F53 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF54(v *TestAllTypes) {
+	x.F54 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF55(v *TestAllTypes) {
+	x.F55 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF56(v *TestAllTypes) {
+	x.F56 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF57(v *TestAllTypes) {
+	x.F57 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF58(v *TestAllTypes) {
+	x.F58 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF59(v *TestAllTypes) {
+	x.F59 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF60(v *TestAllTypes) {
+	x.F60 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF61(v *TestAllTypes) {
+	x.F61 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF62(v *TestAllTypes) {
+	x.F62 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF63(v *TestAllTypes) {
+	x.F63 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF64(v *TestAllTypes) {
+	x.F64 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF65(v *TestAllTypes) {
+	x.F65 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF66(v *TestAllTypes) {
+	x.F66 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF67(v *TestAllTypes) {
+	x.F67 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF68(v *TestAllTypes) {
+	x.F68 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF69(v *TestAllTypes) {
+	x.F69 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF70(v *TestAllTypes) {
+	x.F70 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF71(v *TestAllTypes) {
+	x.F71 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF72(v *TestAllTypes) {
+	x.F72 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF73(v *TestAllTypes) {
+	x.F73 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF74(v *TestAllTypes) {
+	x.F74 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF75(v *TestAllTypes) {
+	x.F75 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF76(v *TestAllTypes) {
+	x.F76 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF77(v *TestAllTypes) {
+	x.F77 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF78(v *TestAllTypes) {
+	x.F78 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF79(v *TestAllTypes) {
+	x.F79 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF80(v *TestAllTypes) {
+	x.F80 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF81(v *TestAllTypes) {
+	x.F81 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF82(v *TestAllTypes) {
+	x.F82 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF83(v *TestAllTypes) {
+	x.F83 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF84(v *TestAllTypes) {
+	x.F84 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF85(v *TestAllTypes) {
+	x.F85 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF86(v *TestAllTypes) {
+	x.F86 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF87(v *TestAllTypes) {
+	x.F87 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF88(v *TestAllTypes) {
+	x.F88 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF89(v *TestAllTypes) {
+	x.F89 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF90(v *TestAllTypes) {
+	x.F90 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF91(v *TestAllTypes) {
+	x.F91 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF92(v *TestAllTypes) {
+	x.F92 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF93(v *TestAllTypes) {
+	x.F93 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF94(v *TestAllTypes) {
+	x.F94 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF95(v *TestAllTypes) {
+	x.F95 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF96(v *TestAllTypes) {
+	x.F96 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF97(v *TestAllTypes) {
+	x.F97 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF98(v *TestAllTypes) {
+	x.F98 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF99(v *TestAllTypes) {
+	x.F99 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF100(v *TestAllTypes) {
+	x.F100 = v
+}
+
+func (x *TestManyMessageFieldsMessage) HasF1() bool {
+	if x == nil {
+		return false
+	}
+	return x.F1 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF2() bool {
+	if x == nil {
+		return false
+	}
+	return x.F2 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF3() bool {
+	if x == nil {
+		return false
+	}
+	return x.F3 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF4() bool {
+	if x == nil {
+		return false
+	}
+	return x.F4 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF5() bool {
+	if x == nil {
+		return false
+	}
+	return x.F5 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF6() bool {
+	if x == nil {
+		return false
+	}
+	return x.F6 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF7() bool {
+	if x == nil {
+		return false
+	}
+	return x.F7 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF8() bool {
+	if x == nil {
+		return false
+	}
+	return x.F8 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF9() bool {
+	if x == nil {
+		return false
+	}
+	return x.F9 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF10() bool {
+	if x == nil {
+		return false
+	}
+	return x.F10 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF11() bool {
+	if x == nil {
+		return false
+	}
+	return x.F11 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF12() bool {
+	if x == nil {
+		return false
+	}
+	return x.F12 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF13() bool {
+	if x == nil {
+		return false
+	}
+	return x.F13 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF14() bool {
+	if x == nil {
+		return false
+	}
+	return x.F14 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF15() bool {
+	if x == nil {
+		return false
+	}
+	return x.F15 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF16() bool {
+	if x == nil {
+		return false
+	}
+	return x.F16 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF17() bool {
+	if x == nil {
+		return false
+	}
+	return x.F17 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF18() bool {
+	if x == nil {
+		return false
+	}
+	return x.F18 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF19() bool {
+	if x == nil {
+		return false
+	}
+	return x.F19 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF20() bool {
+	if x == nil {
+		return false
+	}
+	return x.F20 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF21() bool {
+	if x == nil {
+		return false
+	}
+	return x.F21 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF22() bool {
+	if x == nil {
+		return false
+	}
+	return x.F22 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF23() bool {
+	if x == nil {
+		return false
+	}
+	return x.F23 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF24() bool {
+	if x == nil {
+		return false
+	}
+	return x.F24 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF25() bool {
+	if x == nil {
+		return false
+	}
+	return x.F25 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF26() bool {
+	if x == nil {
+		return false
+	}
+	return x.F26 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF27() bool {
+	if x == nil {
+		return false
+	}
+	return x.F27 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF28() bool {
+	if x == nil {
+		return false
+	}
+	return x.F28 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF29() bool {
+	if x == nil {
+		return false
+	}
+	return x.F29 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF30() bool {
+	if x == nil {
+		return false
+	}
+	return x.F30 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF31() bool {
+	if x == nil {
+		return false
+	}
+	return x.F31 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF32() bool {
+	if x == nil {
+		return false
+	}
+	return x.F32 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF33() bool {
+	if x == nil {
+		return false
+	}
+	return x.F33 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF34() bool {
+	if x == nil {
+		return false
+	}
+	return x.F34 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF35() bool {
+	if x == nil {
+		return false
+	}
+	return x.F35 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF36() bool {
+	if x == nil {
+		return false
+	}
+	return x.F36 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF37() bool {
+	if x == nil {
+		return false
+	}
+	return x.F37 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF38() bool {
+	if x == nil {
+		return false
+	}
+	return x.F38 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF39() bool {
+	if x == nil {
+		return false
+	}
+	return x.F39 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF40() bool {
+	if x == nil {
+		return false
+	}
+	return x.F40 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF41() bool {
+	if x == nil {
+		return false
+	}
+	return x.F41 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF42() bool {
+	if x == nil {
+		return false
+	}
+	return x.F42 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF43() bool {
+	if x == nil {
+		return false
+	}
+	return x.F43 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF44() bool {
+	if x == nil {
+		return false
+	}
+	return x.F44 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF45() bool {
+	if x == nil {
+		return false
+	}
+	return x.F45 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF46() bool {
+	if x == nil {
+		return false
+	}
+	return x.F46 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF47() bool {
+	if x == nil {
+		return false
+	}
+	return x.F47 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF48() bool {
+	if x == nil {
+		return false
+	}
+	return x.F48 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF49() bool {
+	if x == nil {
+		return false
+	}
+	return x.F49 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF50() bool {
+	if x == nil {
+		return false
+	}
+	return x.F50 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF51() bool {
+	if x == nil {
+		return false
+	}
+	return x.F51 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF52() bool {
+	if x == nil {
+		return false
+	}
+	return x.F52 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF53() bool {
+	if x == nil {
+		return false
+	}
+	return x.F53 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF54() bool {
+	if x == nil {
+		return false
+	}
+	return x.F54 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF55() bool {
+	if x == nil {
+		return false
+	}
+	return x.F55 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF56() bool {
+	if x == nil {
+		return false
+	}
+	return x.F56 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF57() bool {
+	if x == nil {
+		return false
+	}
+	return x.F57 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF58() bool {
+	if x == nil {
+		return false
+	}
+	return x.F58 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF59() bool {
+	if x == nil {
+		return false
+	}
+	return x.F59 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF60() bool {
+	if x == nil {
+		return false
+	}
+	return x.F60 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF61() bool {
+	if x == nil {
+		return false
+	}
+	return x.F61 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF62() bool {
+	if x == nil {
+		return false
+	}
+	return x.F62 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF63() bool {
+	if x == nil {
+		return false
+	}
+	return x.F63 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF64() bool {
+	if x == nil {
+		return false
+	}
+	return x.F64 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF65() bool {
+	if x == nil {
+		return false
+	}
+	return x.F65 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF66() bool {
+	if x == nil {
+		return false
+	}
+	return x.F66 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF67() bool {
+	if x == nil {
+		return false
+	}
+	return x.F67 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF68() bool {
+	if x == nil {
+		return false
+	}
+	return x.F68 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF69() bool {
+	if x == nil {
+		return false
+	}
+	return x.F69 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF70() bool {
+	if x == nil {
+		return false
+	}
+	return x.F70 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF71() bool {
+	if x == nil {
+		return false
+	}
+	return x.F71 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF72() bool {
+	if x == nil {
+		return false
+	}
+	return x.F72 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF73() bool {
+	if x == nil {
+		return false
+	}
+	return x.F73 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF74() bool {
+	if x == nil {
+		return false
+	}
+	return x.F74 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF75() bool {
+	if x == nil {
+		return false
+	}
+	return x.F75 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF76() bool {
+	if x == nil {
+		return false
+	}
+	return x.F76 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF77() bool {
+	if x == nil {
+		return false
+	}
+	return x.F77 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF78() bool {
+	if x == nil {
+		return false
+	}
+	return x.F78 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF79() bool {
+	if x == nil {
+		return false
+	}
+	return x.F79 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF80() bool {
+	if x == nil {
+		return false
+	}
+	return x.F80 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF81() bool {
+	if x == nil {
+		return false
+	}
+	return x.F81 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF82() bool {
+	if x == nil {
+		return false
+	}
+	return x.F82 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF83() bool {
+	if x == nil {
+		return false
+	}
+	return x.F83 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF84() bool {
+	if x == nil {
+		return false
+	}
+	return x.F84 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF85() bool {
+	if x == nil {
+		return false
+	}
+	return x.F85 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF86() bool {
+	if x == nil {
+		return false
+	}
+	return x.F86 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF87() bool {
+	if x == nil {
+		return false
+	}
+	return x.F87 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF88() bool {
+	if x == nil {
+		return false
+	}
+	return x.F88 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF89() bool {
+	if x == nil {
+		return false
+	}
+	return x.F89 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF90() bool {
+	if x == nil {
+		return false
+	}
+	return x.F90 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF91() bool {
+	if x == nil {
+		return false
+	}
+	return x.F91 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF92() bool {
+	if x == nil {
+		return false
+	}
+	return x.F92 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF93() bool {
+	if x == nil {
+		return false
+	}
+	return x.F93 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF94() bool {
+	if x == nil {
+		return false
+	}
+	return x.F94 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF95() bool {
+	if x == nil {
+		return false
+	}
+	return x.F95 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF96() bool {
+	if x == nil {
+		return false
+	}
+	return x.F96 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF97() bool {
+	if x == nil {
+		return false
+	}
+	return x.F97 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF98() bool {
+	if x == nil {
+		return false
+	}
+	return x.F98 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF99() bool {
+	if x == nil {
+		return false
+	}
+	return x.F99 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF100() bool {
+	if x == nil {
+		return false
+	}
+	return x.F100 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF1() {
+	x.F1 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF2() {
+	x.F2 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF3() {
+	x.F3 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF4() {
+	x.F4 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF5() {
+	x.F5 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF6() {
+	x.F6 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF7() {
+	x.F7 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF8() {
+	x.F8 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF9() {
+	x.F9 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF10() {
+	x.F10 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF11() {
+	x.F11 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF12() {
+	x.F12 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF13() {
+	x.F13 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF14() {
+	x.F14 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF15() {
+	x.F15 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF16() {
+	x.F16 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF17() {
+	x.F17 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF18() {
+	x.F18 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF19() {
+	x.F19 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF20() {
+	x.F20 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF21() {
+	x.F21 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF22() {
+	x.F22 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF23() {
+	x.F23 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF24() {
+	x.F24 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF25() {
+	x.F25 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF26() {
+	x.F26 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF27() {
+	x.F27 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF28() {
+	x.F28 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF29() {
+	x.F29 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF30() {
+	x.F30 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF31() {
+	x.F31 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF32() {
+	x.F32 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF33() {
+	x.F33 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF34() {
+	x.F34 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF35() {
+	x.F35 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF36() {
+	x.F36 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF37() {
+	x.F37 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF38() {
+	x.F38 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF39() {
+	x.F39 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF40() {
+	x.F40 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF41() {
+	x.F41 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF42() {
+	x.F42 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF43() {
+	x.F43 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF44() {
+	x.F44 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF45() {
+	x.F45 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF46() {
+	x.F46 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF47() {
+	x.F47 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF48() {
+	x.F48 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF49() {
+	x.F49 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF50() {
+	x.F50 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF51() {
+	x.F51 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF52() {
+	x.F52 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF53() {
+	x.F53 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF54() {
+	x.F54 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF55() {
+	x.F55 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF56() {
+	x.F56 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF57() {
+	x.F57 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF58() {
+	x.F58 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF59() {
+	x.F59 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF60() {
+	x.F60 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF61() {
+	x.F61 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF62() {
+	x.F62 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF63() {
+	x.F63 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF64() {
+	x.F64 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF65() {
+	x.F65 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF66() {
+	x.F66 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF67() {
+	x.F67 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF68() {
+	x.F68 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF69() {
+	x.F69 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF70() {
+	x.F70 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF71() {
+	x.F71 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF72() {
+	x.F72 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF73() {
+	x.F73 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF74() {
+	x.F74 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF75() {
+	x.F75 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF76() {
+	x.F76 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF77() {
+	x.F77 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF78() {
+	x.F78 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF79() {
+	x.F79 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF80() {
+	x.F80 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF81() {
+	x.F81 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF82() {
+	x.F82 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF83() {
+	x.F83 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF84() {
+	x.F84 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF85() {
+	x.F85 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF86() {
+	x.F86 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF87() {
+	x.F87 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF88() {
+	x.F88 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF89() {
+	x.F89 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF90() {
+	x.F90 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF91() {
+	x.F91 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF92() {
+	x.F92 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF93() {
+	x.F93 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF94() {
+	x.F94 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF95() {
+	x.F95 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF96() {
+	x.F96 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF97() {
+	x.F97 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF98() {
+	x.F98 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF99() {
+	x.F99 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF100() {
+	x.F100 = nil
+}
+
+type TestManyMessageFieldsMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	F1   *TestAllTypes
+	F2   *TestAllTypes
+	F3   *TestAllTypes
+	F4   *TestAllTypes
+	F5   *TestAllTypes
+	F6   *TestAllTypes
+	F7   *TestAllTypes
+	F8   *TestAllTypes
+	F9   *TestAllTypes
+	F10  *TestAllTypes
+	F11  *TestAllTypes
+	F12  *TestAllTypes
+	F13  *TestAllTypes
+	F14  *TestAllTypes
+	F15  *TestAllTypes
+	F16  *TestAllTypes
+	F17  *TestAllTypes
+	F18  *TestAllTypes
+	F19  *TestAllTypes
+	F20  *TestAllTypes
+	F21  *TestAllTypes
+	F22  *TestAllTypes
+	F23  *TestAllTypes
+	F24  *TestAllTypes
+	F25  *TestAllTypes
+	F26  *TestAllTypes
+	F27  *TestAllTypes
+	F28  *TestAllTypes
+	F29  *TestAllTypes
+	F30  *TestAllTypes
+	F31  *TestAllTypes
+	F32  *TestAllTypes
+	F33  *TestAllTypes
+	F34  *TestAllTypes
+	F35  *TestAllTypes
+	F36  *TestAllTypes
+	F37  *TestAllTypes
+	F38  *TestAllTypes
+	F39  *TestAllTypes
+	F40  *TestAllTypes
+	F41  *TestAllTypes
+	F42  *TestAllTypes
+	F43  *TestAllTypes
+	F44  *TestAllTypes
+	F45  *TestAllTypes
+	F46  *TestAllTypes
+	F47  *TestAllTypes
+	F48  *TestAllTypes
+	F49  *TestAllTypes
+	F50  *TestAllTypes
+	F51  *TestAllTypes
+	F52  *TestAllTypes
+	F53  *TestAllTypes
+	F54  *TestAllTypes
+	F55  *TestAllTypes
+	F56  *TestAllTypes
+	F57  *TestAllTypes
+	F58  *TestAllTypes
+	F59  *TestAllTypes
+	F60  *TestAllTypes
+	F61  *TestAllTypes
+	F62  *TestAllTypes
+	F63  *TestAllTypes
+	F64  *TestAllTypes
+	F65  *TestAllTypes
+	F66  *TestAllTypes
+	F67  *TestAllTypes
+	F68  *TestAllTypes
+	F69  *TestAllTypes
+	F70  *TestAllTypes
+	F71  *TestAllTypes
+	F72  *TestAllTypes
+	F73  *TestAllTypes
+	F74  *TestAllTypes
+	F75  *TestAllTypes
+	F76  *TestAllTypes
+	F77  *TestAllTypes
+	F78  *TestAllTypes
+	F79  *TestAllTypes
+	F80  *TestAllTypes
+	F81  *TestAllTypes
+	F82  *TestAllTypes
+	F83  *TestAllTypes
+	F84  *TestAllTypes
+	F85  *TestAllTypes
+	F86  *TestAllTypes
+	F87  *TestAllTypes
+	F88  *TestAllTypes
+	F89  *TestAllTypes
+	F90  *TestAllTypes
+	F91  *TestAllTypes
+	F92  *TestAllTypes
+	F93  *TestAllTypes
+	F94  *TestAllTypes
+	F95  *TestAllTypes
+	F96  *TestAllTypes
+	F97  *TestAllTypes
+	F98  *TestAllTypes
+	F99  *TestAllTypes
+	F100 *TestAllTypes
+}
+
+func (b0 TestManyMessageFieldsMessage_builder) Build() *TestManyMessageFieldsMessage {
+	m0 := &TestManyMessageFieldsMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.F1 = b.F1
+	x.F2 = b.F2
+	x.F3 = b.F3
+	x.F4 = b.F4
+	x.F5 = b.F5
+	x.F6 = b.F6
+	x.F7 = b.F7
+	x.F8 = b.F8
+	x.F9 = b.F9
+	x.F10 = b.F10
+	x.F11 = b.F11
+	x.F12 = b.F12
+	x.F13 = b.F13
+	x.F14 = b.F14
+	x.F15 = b.F15
+	x.F16 = b.F16
+	x.F17 = b.F17
+	x.F18 = b.F18
+	x.F19 = b.F19
+	x.F20 = b.F20
+	x.F21 = b.F21
+	x.F22 = b.F22
+	x.F23 = b.F23
+	x.F24 = b.F24
+	x.F25 = b.F25
+	x.F26 = b.F26
+	x.F27 = b.F27
+	x.F28 = b.F28
+	x.F29 = b.F29
+	x.F30 = b.F30
+	x.F31 = b.F31
+	x.F32 = b.F32
+	x.F33 = b.F33
+	x.F34 = b.F34
+	x.F35 = b.F35
+	x.F36 = b.F36
+	x.F37 = b.F37
+	x.F38 = b.F38
+	x.F39 = b.F39
+	x.F40 = b.F40
+	x.F41 = b.F41
+	x.F42 = b.F42
+	x.F43 = b.F43
+	x.F44 = b.F44
+	x.F45 = b.F45
+	x.F46 = b.F46
+	x.F47 = b.F47
+	x.F48 = b.F48
+	x.F49 = b.F49
+	x.F50 = b.F50
+	x.F51 = b.F51
+	x.F52 = b.F52
+	x.F53 = b.F53
+	x.F54 = b.F54
+	x.F55 = b.F55
+	x.F56 = b.F56
+	x.F57 = b.F57
+	x.F58 = b.F58
+	x.F59 = b.F59
+	x.F60 = b.F60
+	x.F61 = b.F61
+	x.F62 = b.F62
+	x.F63 = b.F63
+	x.F64 = b.F64
+	x.F65 = b.F65
+	x.F66 = b.F66
+	x.F67 = b.F67
+	x.F68 = b.F68
+	x.F69 = b.F69
+	x.F70 = b.F70
+	x.F71 = b.F71
+	x.F72 = b.F72
+	x.F73 = b.F73
+	x.F74 = b.F74
+	x.F75 = b.F75
+	x.F76 = b.F76
+	x.F77 = b.F77
+	x.F78 = b.F78
+	x.F79 = b.F79
+	x.F80 = b.F80
+	x.F81 = b.F81
+	x.F82 = b.F82
+	x.F83 = b.F83
+	x.F84 = b.F84
+	x.F85 = b.F85
+	x.F86 = b.F86
+	x.F87 = b.F87
+	x.F88 = b.F88
+	x.F89 = b.F89
+	x.F90 = b.F90
+	x.F91 = b.F91
+	x.F92 = b.F92
+	x.F93 = b.F93
+	x.F94 = b.F94
+	x.F95 = b.F95
+	x.F96 = b.F96
+	x.F97 = b.F97
+	x.F98 = b.F98
+	x.F99 = b.F99
+	x.F100 = b.F100
+	return m0
+}
+
+type ForeignMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	D             *int32                 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ForeignMessage) Reset() {
+	*x = ForeignMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ForeignMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForeignMessage) ProtoMessage() {}
+
+func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ForeignMessage) GetC() int32 {
+	if x != nil && x.C != nil {
+		return *x.C
+	}
+	return 0
+}
+
+func (x *ForeignMessage) GetD() int32 {
+	if x != nil && x.D != nil {
+		return *x.D
+	}
+	return 0
+}
+
+func (x *ForeignMessage) SetC(v int32) {
+	x.C = &v
+}
+
+func (x *ForeignMessage) SetD(v int32) {
+	x.D = &v
+}
+
+func (x *ForeignMessage) HasC() bool {
+	if x == nil {
+		return false
+	}
+	return x.C != nil
+}
+
+func (x *ForeignMessage) HasD() bool {
+	if x == nil {
+		return false
+	}
+	return x.D != nil
+}
+
+func (x *ForeignMessage) ClearC() {
+	x.C = nil
+}
+
+func (x *ForeignMessage) ClearD() {
+	x.D = nil
+}
+
+type ForeignMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	C *int32
+	D *int32
+}
+
+func (b0 ForeignMessage_builder) Build() *ForeignMessage {
+	m0 := &ForeignMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.C = b.C
+	x.D = b.D
+	return m0
+}
+
+type TestRequired struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	RequiredField *int32                 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestRequired) Reset() {
+	*x = TestRequired{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequired) ProtoMessage() {}
+
+func (x *TestRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequired) GetRequiredField() int32 {
+	if x != nil && x.RequiredField != nil {
+		return *x.RequiredField
+	}
+	return 0
+}
+
+func (x *TestRequired) SetRequiredField(v int32) {
+	x.RequiredField = &v
+}
+
+func (x *TestRequired) HasRequiredField() bool {
+	if x == nil {
+		return false
+	}
+	return x.RequiredField != nil
+}
+
+func (x *TestRequired) ClearRequiredField() {
+	x.RequiredField = nil
+}
+
+type TestRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RequiredField *int32
+}
+
+func (b0 TestRequired_builder) Build() *TestRequired {
+	m0 := &TestRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.RequiredField = b.RequiredField
+	return m0
+}
+
+type TestRequiredForeign struct {
+	state           protoimpl.MessageState  `protogen:"hybrid.v1"`
+	OptionalMessage *TestRequired           `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
+	RepeatedMessage []*TestRequired         `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
+	MapMessage      map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// Types that are valid to be assigned to OneofField:
+	//
+	//	*TestRequiredForeign_OneofMessage
+	OneofField    isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestRequiredForeign) Reset() {
+	*x = TestRequiredForeign{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredForeign) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredForeign) ProtoMessage() {}
+
+func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredForeign) GetOptionalMessage() *TestRequired {
+	if x != nil {
+		return x.OptionalMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetRepeatedMessage() []*TestRequired {
+	if x != nil {
+		return x.RepeatedMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetMapMessage() map[int32]*TestRequired {
+	if x != nil {
+		return x.MapMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
+	if x != nil {
+		return x.OneofField
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestRequiredForeign_OneofMessage); ok {
+			return x.OneofMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) SetOptionalMessage(v *TestRequired) {
+	x.OptionalMessage = v
+}
+
+func (x *TestRequiredForeign) SetRepeatedMessage(v []*TestRequired) {
+	x.RepeatedMessage = v
+}
+
+func (x *TestRequiredForeign) SetMapMessage(v map[int32]*TestRequired) {
+	x.MapMessage = v
+}
+
+func (x *TestRequiredForeign) SetOneofMessage(v *TestRequired) {
+	if v == nil {
+		x.OneofField = nil
+		return
+	}
+	x.OneofField = &TestRequiredForeign_OneofMessage{v}
+}
+
+func (x *TestRequiredForeign) HasOptionalMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalMessage != nil
+}
+
+func (x *TestRequiredForeign) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.OneofField != nil
+}
+
+func (x *TestRequiredForeign) HasOneofMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestRequiredForeign_OneofMessage)
+	return ok
+}
+
+func (x *TestRequiredForeign) ClearOptionalMessage() {
+	x.OptionalMessage = nil
+}
+
+func (x *TestRequiredForeign) ClearOneofField() {
+	x.OneofField = nil
+}
+
+func (x *TestRequiredForeign) ClearOneofMessage() {
+	if _, ok := x.OneofField.(*TestRequiredForeign_OneofMessage); ok {
+		x.OneofField = nil
+	}
+}
+
+const TestRequiredForeign_OneofField_not_set_case case_TestRequiredForeign_OneofField = 0
+const TestRequiredForeign_OneofMessage_case case_TestRequiredForeign_OneofField = 4
+
+func (x *TestRequiredForeign) WhichOneofField() case_TestRequiredForeign_OneofField {
+	if x == nil {
+		return TestRequiredForeign_OneofField_not_set_case
+	}
+	switch x.OneofField.(type) {
+	case *TestRequiredForeign_OneofMessage:
+		return TestRequiredForeign_OneofMessage_case
+	default:
+		return TestRequiredForeign_OneofField_not_set_case
+	}
+}
+
+type TestRequiredForeign_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptionalMessage *TestRequired
+	RepeatedMessage []*TestRequired
+	MapMessage      map[int32]*TestRequired
+	// Fields of oneof OneofField:
+	OneofMessage *TestRequired
+	// -- end of OneofField
+}
+
+func (b0 TestRequiredForeign_builder) Build() *TestRequiredForeign {
+	m0 := &TestRequiredForeign{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptionalMessage = b.OptionalMessage
+	x.RepeatedMessage = b.RepeatedMessage
+	x.MapMessage = b.MapMessage
+	if b.OneofMessage != nil {
+		x.OneofField = &TestRequiredForeign_OneofMessage{b.OneofMessage}
+	}
+	return m0
+}
+
+type case_TestRequiredForeign_OneofField protoreflect.FieldNumber
+
+func (x case_TestRequiredForeign_OneofField) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestRequiredForeign_OneofField interface {
+	isTestRequiredForeign_OneofField()
+}
+
+type TestRequiredForeign_OneofMessage struct {
+	OneofMessage *TestRequired `protobuf:"bytes,4,opt,name=oneof_message,json=oneofMessage,oneof"`
+}
+
+func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
+
+type TestRequiredGroupFields struct {
+	state         protoimpl.MessageState                   `protogen:"hybrid.v1"`
+	Optionalgroup *TestRequiredGroupFields_OptionalGroup   `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields) Reset() {
+	*x = TestRequiredGroupFields{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields) GetOptionalgroup() *TestRequiredGroupFields_OptionalGroup {
+	if x != nil {
+		return x.Optionalgroup
+	}
+	return nil
+}
+
+func (x *TestRequiredGroupFields) GetRepeatedgroup() []*TestRequiredGroupFields_RepeatedGroup {
+	if x != nil {
+		return x.Repeatedgroup
+	}
+	return nil
+}
+
+func (x *TestRequiredGroupFields) SetOptionalgroup(v *TestRequiredGroupFields_OptionalGroup) {
+	x.Optionalgroup = v
+}
+
+func (x *TestRequiredGroupFields) SetRepeatedgroup(v []*TestRequiredGroupFields_RepeatedGroup) {
+	x.Repeatedgroup = v
+}
+
+func (x *TestRequiredGroupFields) HasOptionalgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.Optionalgroup != nil
+}
+
+func (x *TestRequiredGroupFields) ClearOptionalgroup() {
+	x.Optionalgroup = nil
+}
+
+type TestRequiredGroupFields_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Optionalgroup *TestRequiredGroupFields_OptionalGroup
+	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup
+}
+
+func (b0 TestRequiredGroupFields_builder) Build() *TestRequiredGroupFields {
+	m0 := &TestRequiredGroupFields{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Optionalgroup = b.Optionalgroup
+	x.Repeatedgroup = b.Repeatedgroup
+	return m0
+}
+
+type TestRequiredLazy struct {
+	state               protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage" json:"optional_lazy_message,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *TestRequiredLazy) Reset() {
+	*x = TestRequiredLazy{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredLazy) ProtoMessage() {}
+
+func (x *TestRequiredLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredLazy) GetOptionalLazyMessage() *TestRequired {
+	if x != nil {
+		return x.OptionalLazyMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredLazy) SetOptionalLazyMessage(v *TestRequired) {
+	x.OptionalLazyMessage = v
+}
+
+func (x *TestRequiredLazy) HasOptionalLazyMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalLazyMessage != nil
+}
+
+func (x *TestRequiredLazy) ClearOptionalLazyMessage() {
+	x.OptionalLazyMessage = nil
+}
+
+type TestRequiredLazy_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptionalLazyMessage *TestRequired
+}
+
+func (b0 TestRequiredLazy_builder) Build() *TestRequiredLazy {
+	m0 := &TestRequiredLazy{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptionalLazyMessage = b.OptionalLazyMessage
+	return m0
+}
+
+type TestPackedTypes struct {
+	state          protoimpl.MessageState `protogen:"hybrid.v1"`
+	PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
+	PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
+	PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
+	PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
+	PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
+	PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
+	PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
+	PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
+	PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
+	PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
+	PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
+	PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
+	PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
+	PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *TestPackedTypes) Reset() {
+	*x = TestPackedTypes{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestPackedTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestPackedTypes) ProtoMessage() {}
+
+func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestPackedTypes) GetPackedInt32() []int32 {
+	if x != nil {
+		return x.PackedInt32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedInt64() []int64 {
+	if x != nil {
+		return x.PackedInt64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedUint32() []uint32 {
+	if x != nil {
+		return x.PackedUint32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedUint64() []uint64 {
+	if x != nil {
+		return x.PackedUint64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSint32() []int32 {
+	if x != nil {
+		return x.PackedSint32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSint64() []int64 {
+	if x != nil {
+		return x.PackedSint64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFixed32() []uint32 {
+	if x != nil {
+		return x.PackedFixed32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFixed64() []uint64 {
+	if x != nil {
+		return x.PackedFixed64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSfixed32() []int32 {
+	if x != nil {
+		return x.PackedSfixed32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSfixed64() []int64 {
+	if x != nil {
+		return x.PackedSfixed64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFloat() []float32 {
+	if x != nil {
+		return x.PackedFloat
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedDouble() []float64 {
+	if x != nil {
+		return x.PackedDouble
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedBool() []bool {
+	if x != nil {
+		return x.PackedBool
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedEnum() []ForeignEnum {
+	if x != nil {
+		return x.PackedEnum
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) SetPackedInt32(v []int32) {
+	x.PackedInt32 = v
+}
+
+func (x *TestPackedTypes) SetPackedInt64(v []int64) {
+	x.PackedInt64 = v
+}
+
+func (x *TestPackedTypes) SetPackedUint32(v []uint32) {
+	x.PackedUint32 = v
+}
+
+func (x *TestPackedTypes) SetPackedUint64(v []uint64) {
+	x.PackedUint64 = v
+}
+
+func (x *TestPackedTypes) SetPackedSint32(v []int32) {
+	x.PackedSint32 = v
+}
+
+func (x *TestPackedTypes) SetPackedSint64(v []int64) {
+	x.PackedSint64 = v
+}
+
+func (x *TestPackedTypes) SetPackedFixed32(v []uint32) {
+	x.PackedFixed32 = v
+}
+
+func (x *TestPackedTypes) SetPackedFixed64(v []uint64) {
+	x.PackedFixed64 = v
+}
+
+func (x *TestPackedTypes) SetPackedSfixed32(v []int32) {
+	x.PackedSfixed32 = v
+}
+
+func (x *TestPackedTypes) SetPackedSfixed64(v []int64) {
+	x.PackedSfixed64 = v
+}
+
+func (x *TestPackedTypes) SetPackedFloat(v []float32) {
+	x.PackedFloat = v
+}
+
+func (x *TestPackedTypes) SetPackedDouble(v []float64) {
+	x.PackedDouble = v
+}
+
+func (x *TestPackedTypes) SetPackedBool(v []bool) {
+	x.PackedBool = v
+}
+
+func (x *TestPackedTypes) SetPackedEnum(v []ForeignEnum) {
+	x.PackedEnum = v
+}
+
+type TestPackedTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	PackedInt32    []int32
+	PackedInt64    []int64
+	PackedUint32   []uint32
+	PackedUint64   []uint64
+	PackedSint32   []int32
+	PackedSint64   []int64
+	PackedFixed32  []uint32
+	PackedFixed64  []uint64
+	PackedSfixed32 []int32
+	PackedSfixed64 []int64
+	PackedFloat    []float32
+	PackedDouble   []float64
+	PackedBool     []bool
+	PackedEnum     []ForeignEnum
+}
+
+func (b0 TestPackedTypes_builder) Build() *TestPackedTypes {
+	m0 := &TestPackedTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.PackedInt32 = b.PackedInt32
+	x.PackedInt64 = b.PackedInt64
+	x.PackedUint32 = b.PackedUint32
+	x.PackedUint64 = b.PackedUint64
+	x.PackedSint32 = b.PackedSint32
+	x.PackedSint64 = b.PackedSint64
+	x.PackedFixed32 = b.PackedFixed32
+	x.PackedFixed64 = b.PackedFixed64
+	x.PackedSfixed32 = b.PackedSfixed32
+	x.PackedSfixed64 = b.PackedSfixed64
+	x.PackedFloat = b.PackedFloat
+	x.PackedDouble = b.PackedDouble
+	x.PackedBool = b.PackedBool
+	x.PackedEnum = b.PackedEnum
+	return m0
+}
+
+type TestPackedExtensions struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestPackedExtensions) Reset() {
+	*x = TestPackedExtensions{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestPackedExtensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestPackedExtensions) ProtoMessage() {}
+
+func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestPackedExtensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestPackedExtensions_builder) Build() *TestPackedExtensions {
+	m0 := &TestPackedExtensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type RemoteDefault struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Default       *enums_hybrid.Enum     `protobuf:"varint,1,opt,name=default,enum=hybrid.goproto.proto.enums.Enum" json:"default,omitempty"`
+	Zero          *enums_hybrid.Enum     `protobuf:"varint,2,opt,name=zero,enum=hybrid.goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
+	One           *enums_hybrid.Enum     `protobuf:"varint,3,opt,name=one,enum=hybrid.goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
+	Elevent       *enums_hybrid.Enum     `protobuf:"varint,4,opt,name=elevent,enum=hybrid.goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
+	Seventeen     *enums_hybrid.Enum     `protobuf:"varint,5,opt,name=seventeen,enum=hybrid.goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
+	Thirtyseven   *enums_hybrid.Enum     `protobuf:"varint,6,opt,name=thirtyseven,enum=hybrid.goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
+	Sixtyseven    *enums_hybrid.Enum     `protobuf:"varint,7,opt,name=sixtyseven,enum=hybrid.goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
+	Negative      *enums_hybrid.Enum     `protobuf:"varint,8,opt,name=negative,enum=hybrid.goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+// Default values for RemoteDefault fields.
+const (
+	Default_RemoteDefault_Zero        = enums_hybrid.Enum(0)  // enums_hybrid.Enum_ZERO
+	Default_RemoteDefault_One         = enums_hybrid.Enum(1)  // enums_hybrid.Enum_ONE
+	Default_RemoteDefault_Elevent     = enums_hybrid.Enum(11) // enums_hybrid.Enum_ELEVENT
+	Default_RemoteDefault_Seventeen   = enums_hybrid.Enum(17) // enums_hybrid.Enum_SEVENTEEN
+	Default_RemoteDefault_Thirtyseven = enums_hybrid.Enum(37) // enums_hybrid.Enum_THIRTYSEVEN
+	Default_RemoteDefault_Sixtyseven  = enums_hybrid.Enum(67) // enums_hybrid.Enum_SIXTYSEVEN
+	Default_RemoteDefault_Negative    = enums_hybrid.Enum(-1) // enums_hybrid.Enum_NEGATIVE
+)
+
+func (x *RemoteDefault) Reset() {
+	*x = RemoteDefault{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RemoteDefault) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RemoteDefault) ProtoMessage() {}
+
+func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *RemoteDefault) GetDefault() enums_hybrid.Enum {
+	if x != nil && x.Default != nil {
+		return *x.Default
+	}
+	return enums_hybrid.Enum(1337)
+}
+
+func (x *RemoteDefault) GetZero() enums_hybrid.Enum {
+	if x != nil && x.Zero != nil {
+		return *x.Zero
+	}
+	return Default_RemoteDefault_Zero
+}
+
+func (x *RemoteDefault) GetOne() enums_hybrid.Enum {
+	if x != nil && x.One != nil {
+		return *x.One
+	}
+	return Default_RemoteDefault_One
+}
+
+func (x *RemoteDefault) GetElevent() enums_hybrid.Enum {
+	if x != nil && x.Elevent != nil {
+		return *x.Elevent
+	}
+	return Default_RemoteDefault_Elevent
+}
+
+func (x *RemoteDefault) GetSeventeen() enums_hybrid.Enum {
+	if x != nil && x.Seventeen != nil {
+		return *x.Seventeen
+	}
+	return Default_RemoteDefault_Seventeen
+}
+
+func (x *RemoteDefault) GetThirtyseven() enums_hybrid.Enum {
+	if x != nil && x.Thirtyseven != nil {
+		return *x.Thirtyseven
+	}
+	return Default_RemoteDefault_Thirtyseven
+}
+
+func (x *RemoteDefault) GetSixtyseven() enums_hybrid.Enum {
+	if x != nil && x.Sixtyseven != nil {
+		return *x.Sixtyseven
+	}
+	return Default_RemoteDefault_Sixtyseven
+}
+
+func (x *RemoteDefault) GetNegative() enums_hybrid.Enum {
+	if x != nil && x.Negative != nil {
+		return *x.Negative
+	}
+	return Default_RemoteDefault_Negative
+}
+
+func (x *RemoteDefault) SetDefault(v enums_hybrid.Enum) {
+	x.Default = &v
+}
+
+func (x *RemoteDefault) SetZero(v enums_hybrid.Enum) {
+	x.Zero = &v
+}
+
+func (x *RemoteDefault) SetOne(v enums_hybrid.Enum) {
+	x.One = &v
+}
+
+func (x *RemoteDefault) SetElevent(v enums_hybrid.Enum) {
+	x.Elevent = &v
+}
+
+func (x *RemoteDefault) SetSeventeen(v enums_hybrid.Enum) {
+	x.Seventeen = &v
+}
+
+func (x *RemoteDefault) SetThirtyseven(v enums_hybrid.Enum) {
+	x.Thirtyseven = &v
+}
+
+func (x *RemoteDefault) SetSixtyseven(v enums_hybrid.Enum) {
+	x.Sixtyseven = &v
+}
+
+func (x *RemoteDefault) SetNegative(v enums_hybrid.Enum) {
+	x.Negative = &v
+}
+
+func (x *RemoteDefault) HasDefault() bool {
+	if x == nil {
+		return false
+	}
+	return x.Default != nil
+}
+
+func (x *RemoteDefault) HasZero() bool {
+	if x == nil {
+		return false
+	}
+	return x.Zero != nil
+}
+
+func (x *RemoteDefault) HasOne() bool {
+	if x == nil {
+		return false
+	}
+	return x.One != nil
+}
+
+func (x *RemoteDefault) HasElevent() bool {
+	if x == nil {
+		return false
+	}
+	return x.Elevent != nil
+}
+
+func (x *RemoteDefault) HasSeventeen() bool {
+	if x == nil {
+		return false
+	}
+	return x.Seventeen != nil
+}
+
+func (x *RemoteDefault) HasThirtyseven() bool {
+	if x == nil {
+		return false
+	}
+	return x.Thirtyseven != nil
+}
+
+func (x *RemoteDefault) HasSixtyseven() bool {
+	if x == nil {
+		return false
+	}
+	return x.Sixtyseven != nil
+}
+
+func (x *RemoteDefault) HasNegative() bool {
+	if x == nil {
+		return false
+	}
+	return x.Negative != nil
+}
+
+func (x *RemoteDefault) ClearDefault() {
+	x.Default = nil
+}
+
+func (x *RemoteDefault) ClearZero() {
+	x.Zero = nil
+}
+
+func (x *RemoteDefault) ClearOne() {
+	x.One = nil
+}
+
+func (x *RemoteDefault) ClearElevent() {
+	x.Elevent = nil
+}
+
+func (x *RemoteDefault) ClearSeventeen() {
+	x.Seventeen = nil
+}
+
+func (x *RemoteDefault) ClearThirtyseven() {
+	x.Thirtyseven = nil
+}
+
+func (x *RemoteDefault) ClearSixtyseven() {
+	x.Sixtyseven = nil
+}
+
+func (x *RemoteDefault) ClearNegative() {
+	x.Negative = nil
+}
+
+type RemoteDefault_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Default     *enums_hybrid.Enum
+	Zero        *enums_hybrid.Enum
+	One         *enums_hybrid.Enum
+	Elevent     *enums_hybrid.Enum
+	Seventeen   *enums_hybrid.Enum
+	Thirtyseven *enums_hybrid.Enum
+	Sixtyseven  *enums_hybrid.Enum
+	Negative    *enums_hybrid.Enum
+}
+
+func (b0 RemoteDefault_builder) Build() *RemoteDefault {
+	m0 := &RemoteDefault{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Default = b.Default
+	x.Zero = b.Zero
+	x.One = b.One
+	x.Elevent = b.Elevent
+	x.Seventeen = b.Seventeen
+	x.Thirtyseven = b.Thirtyseven
+	x.Sixtyseven = b.Sixtyseven
+	x.Negative = b.Negative
+	return m0
+}
+
+type TestAllTypes_NestedMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_NestedMessage) Reset() {
+	*x = TestAllTypes_NestedMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_NestedMessage) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
+	if x != nil {
+		return x.Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllTypes_NestedMessage) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestAllTypes_NestedMessage) SetCorecursive(v *TestAllTypes) {
+	x.Corecursive = v
+}
+
+func (x *TestAllTypes_NestedMessage) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestAllTypes_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.Corecursive != nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearA() {
+	x.A = nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearCorecursive() {
+	x.Corecursive = nil
+}
+
+type TestAllTypes_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           *int32
+	Corecursive *TestAllTypes
+}
+
+func (b0 TestAllTypes_NestedMessage_builder) Build() *TestAllTypes_NestedMessage {
+	m0 := &TestAllTypes_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.Corecursive = b.Corecursive
+	return m0
+}
+
+type TestAllTypes_OptionalGroup struct {
+	state                 protoimpl.MessageState      `protogen:"hybrid.v1"`
+	A                     *int32                      `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
+	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	SameFieldNumber       *int32                      `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_OptionalGroup) Reset() {
+	*x = TestAllTypes_OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_OptionalGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OptionalGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes_OptionalGroup) GetSameFieldNumber() int32 {
+	if x != nil && x.SameFieldNumber != nil {
+		return *x.SameFieldNumber
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OptionalGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestAllTypes_OptionalGroup) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes_OptionalGroup) SetSameFieldNumber(v int32) {
+	x.SameFieldNumber = &v
+}
+
+func (x *TestAllTypes_OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestAllTypes_OptionalGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes_OptionalGroup) HasSameFieldNumber() bool {
+	if x == nil {
+		return false
+	}
+	return x.SameFieldNumber != nil
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearA() {
+	x.A = nil
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearSameFieldNumber() {
+	x.SameFieldNumber = nil
+}
+
+type TestAllTypes_OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllTypes_NestedMessage
+	SameFieldNumber       *int32
+}
+
+func (b0 TestAllTypes_OptionalGroup_builder) Build() *TestAllTypes_OptionalGroup {
+	m0 := &TestAllTypes_OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	x.SameFieldNumber = b.SameFieldNumber
+	return m0
+}
+
+type TestAllTypes_RepeatedGroup struct {
+	state                 protoimpl.MessageState      `protogen:"hybrid.v1"`
+	A                     *int32                      `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
+	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_RepeatedGroup) Reset() {
+	*x = TestAllTypes_RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_RepeatedGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_RepeatedGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestAllTypes_RepeatedGroup) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes_RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) ClearA() {
+	x.A = nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+type TestAllTypes_RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllTypes_NestedMessage
+}
+
+func (b0 TestAllTypes_RepeatedGroup_builder) Build() *TestAllTypes_RepeatedGroup {
+	m0 := &TestAllTypes_RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type TestAllTypes_OneofGroup struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_OneofGroup) Reset() {
+	*x = TestAllTypes_OneofGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_OneofGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_OneofGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_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)
+}
+
+func (x *TestAllTypes_OneofGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OneofGroup) GetB() int32 {
+	if x != nil && x.B != nil {
+		return *x.B
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OneofGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestAllTypes_OneofGroup) SetB(v int32) {
+	x.B = &v
+}
+
+func (x *TestAllTypes_OneofGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestAllTypes_OneofGroup) HasB() bool {
+	if x == nil {
+		return false
+	}
+	return x.B != nil
+}
+
+func (x *TestAllTypes_OneofGroup) ClearA() {
+	x.A = nil
+}
+
+func (x *TestAllTypes_OneofGroup) ClearB() {
+	x.B = nil
+}
+
+type TestAllTypes_OneofGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+	B *int32
+}
+
+func (b0 TestAllTypes_OneofGroup_builder) Build() *TestAllTypes_OneofGroup {
+	m0 := &TestAllTypes_OneofGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.B = b.B
+	return m0
+}
+
+type TestRequiredGroupFields_OptionalGroup struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             *int32                 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
+	*x = TestRequiredGroupFields_OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) ClearA() {
+	x.A = nil
+}
+
+type TestRequiredGroupFields_OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+}
+
+func (b0 TestRequiredGroupFields_OptionalGroup_builder) Build() *TestRequiredGroupFields_OptionalGroup {
+	m0 := &TestRequiredGroupFields_OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	return m0
+}
+
+type TestRequiredGroupFields_RepeatedGroup struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             *int32                 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
+	*x = TestRequiredGroupFields_RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) ClearA() {
+	x.A = nil
+}
+
+type TestRequiredGroupFields_RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+}
+
+func (b0 TestRequiredGroupFields_RepeatedGroup_builder) Build() *TestRequiredGroupFields_RepeatedGroup {
+	m0 := &TestRequiredGroupFields_RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         90,
+		Name:          "hybrid.goproto.proto.testeditions.packed_int32",
+		Tag:           "varint,90,rep,packed,name=packed_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         91,
+		Name:          "hybrid.goproto.proto.testeditions.packed_int64",
+		Tag:           "varint,91,rep,packed,name=packed_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         92,
+		Name:          "hybrid.goproto.proto.testeditions.packed_uint32",
+		Tag:           "varint,92,rep,packed,name=packed_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         93,
+		Name:          "hybrid.goproto.proto.testeditions.packed_uint64",
+		Tag:           "varint,93,rep,packed,name=packed_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         94,
+		Name:          "hybrid.goproto.proto.testeditions.packed_sint32",
+		Tag:           "zigzag32,94,rep,packed,name=packed_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         95,
+		Name:          "hybrid.goproto.proto.testeditions.packed_sint64",
+		Tag:           "zigzag64,95,rep,packed,name=packed_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         96,
+		Name:          "hybrid.goproto.proto.testeditions.packed_fixed32",
+		Tag:           "fixed32,96,rep,packed,name=packed_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         97,
+		Name:          "hybrid.goproto.proto.testeditions.packed_fixed64",
+		Tag:           "fixed64,97,rep,packed,name=packed_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         98,
+		Name:          "hybrid.goproto.proto.testeditions.packed_sfixed32",
+		Tag:           "fixed32,98,rep,packed,name=packed_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         99,
+		Name:          "hybrid.goproto.proto.testeditions.packed_sfixed64",
+		Tag:           "fixed64,99,rep,packed,name=packed_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]float32)(nil),
+		Field:         100,
+		Name:          "hybrid.goproto.proto.testeditions.packed_float",
+		Tag:           "fixed32,100,rep,packed,name=packed_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]float64)(nil),
+		Field:         101,
+		Name:          "hybrid.goproto.proto.testeditions.packed_double",
+		Tag:           "fixed64,101,rep,packed,name=packed_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]bool)(nil),
+		Field:         102,
+		Name:          "hybrid.goproto.proto.testeditions.packed_bool",
+		Tag:           "varint,102,rep,packed,name=packed_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]ForeignEnum)(nil),
+		Field:         103,
+		Name:          "hybrid.goproto.proto.testeditions.packed_enum",
+		Tag:           "varint,103,rep,packed,name=packed_enum,enum=hybrid.goproto.proto.testeditions.ForeignEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto",
+	},
+}
+
+// Extension fields to TestPackedExtensions.
+var (
+	// repeated int32 packed_int32 = 90;
+	E_PackedInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[0]
+	// repeated int64 packed_int64 = 91;
+	E_PackedInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[1]
+	// repeated uint32 packed_uint32 = 92;
+	E_PackedUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[2]
+	// repeated uint64 packed_uint64 = 93;
+	E_PackedUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[3]
+	// repeated sint32 packed_sint32 = 94;
+	E_PackedSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[4]
+	// repeated sint64 packed_sint64 = 95;
+	E_PackedSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[5]
+	// repeated fixed32 packed_fixed32 = 96;
+	E_PackedFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[6]
+	// repeated fixed64 packed_fixed64 = 97;
+	E_PackedFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[7]
+	// repeated sfixed32 packed_sfixed32 = 98;
+	E_PackedSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[8]
+	// repeated sfixed64 packed_sfixed64 = 99;
+	E_PackedSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[9]
+	// repeated float packed_float = 100;
+	E_PackedFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[10]
+	// repeated double packed_double = 101;
+	E_PackedDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[11]
+	// repeated bool packed_bool = 102;
+	E_PackedBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[12]
+	// repeated hybrid.goproto.proto.testeditions.ForeignEnum packed_enum = 103;
+	E_PackedEnum = &file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes[13]
+)
+
+var File_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x46, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+	0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x5f, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
+	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, 0x49, 0x0a, 0x0c, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7c, 0x20, 0x01, 0x28,
+	0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x03, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x12,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x82, 0x01, 0x20, 0x01,
+	0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x83,
+	0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x33, 0x0a,
+	0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02,
+	0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x02,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x01,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8e, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6a, 0x0a, 0x15, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69,
+	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x67, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x90,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01,
+	0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52,
+	0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c,
+	0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x7d, 0x0a, 0x18, 0x6e, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+	0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x18, 0x11,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65,
+	0x64, 0x12, 0x75, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x6c, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x62, 0x0a,
+	0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x5f, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d,
+	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x2d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x02, 0x28, 0x01, 0x52, 0x19, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a, 0x79, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
+	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11,
+	0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x25, 0x20,
+	0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x03, 0x28,
+	0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08,
+	0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27,
+	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6c,
+	0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+	0x2e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x18, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x75, 0x0a, 0x17,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x67, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x30, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x62, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
+	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5e, 0x0a, 0x13, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e,
+	0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x6a, 0x0a, 0x0f, 0x6d,
+	0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x76, 0x0a, 0x13, 0x6d,
+	0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79,
+	0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x12, 0x76, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x46, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x7c, 0x0a, 0x15, 0x6d,
+	0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x7c, 0x0a, 0x15, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x6a, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x12, 0x6d, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x42, 0x6f,
+	0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x70,
+	0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x6d, 0x0a, 0x10, 0x6d, 0x61,
+	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x19, 0x6d, 0x61,
+	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x7d, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x48, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61,
+	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x52, 0x20, 0x01, 0x28,
+	0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29,
+	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28,
+	0x11, 0x3a, 0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a, 0x02, 0x38,
+	0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x57, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
+	0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59,
+	0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x50, 0x20,
+	0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02,
+	0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32,
+	0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x0e, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x5e, 0x20,
+	0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c,
+	0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x60, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03,
+	0x42, 0x41, 0x52, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x61,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41,
+	0x52, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x71, 0x0a, 0x14, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a,
+	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02,
+	0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23,
+	0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76,
+	0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x63, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x79,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x78,
+	0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x70, 0x0a, 0x0d, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01,
+	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x6f,
+	0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a, 0xc1, 0x01,
+	0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+	0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x76, 0x0a,
+	0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65,
+	0x72, 0x1a, 0x95, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x61, 0x12, 0x76, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a,
+	0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70,
+	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a,
+	0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e,
+	0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
+	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x88, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+	0x1a, 0x82, 0x01, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x28, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x62, 0x22,
+	0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a,
+	0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12,
+	0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xba, 0x34, 0x0a, 0x1c,
+	0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x02,
+	0x66, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x31, 0x12, 0x3f, 0x0a,
+	0x02, 0x66, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x32, 0x12, 0x3f,
+	0x0a, 0x02, 0x66, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x33, 0x12,
+	0x3f, 0x0a, 0x02, 0x66, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x34,
+	0x12, 0x3f, 0x0a, 0x02, 0x66, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66,
+	0x35, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02,
+	0x66, 0x36, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x02, 0x66, 0x37, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x02, 0x66, 0x38, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x02, 0x66, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x31, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x32, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31,
+	0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x31, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x36, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31,
+	0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x37, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x38,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x39, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x31, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x32, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x31, 0x18, 0x15, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x32,
+	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x32, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x32, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x33, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x32, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x32, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x32, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x36, 0x18, 0x1a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x37, 0x18,
+	0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x32, 0x38, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x38, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x32, 0x39, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32,
+	0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x33, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x31, 0x18, 0x1f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18, 0x20,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33,
+	0x33, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x33, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x33, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x34,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x35, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x33, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x36, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x33, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x37, 0x18, 0x25, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x38,
+	0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x38, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x33, 0x39, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x39, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x34, 0x30, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x34, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x31, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x34, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x32, 0x18, 0x2a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x33, 0x18,
+	0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x34, 0x34, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x34, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x34, 0x35, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34,
+	0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x36, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x34, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x37, 0x18, 0x2f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x38, 0x18, 0x30,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34,
+	0x39, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x39, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x35, 0x30, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x30,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x31, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x35, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x32, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x35, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x33, 0x18, 0x35, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x34,
+	0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x34, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x35, 0x35, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x35, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x35, 0x36, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x35, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x37, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x35, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x38, 0x18, 0x3a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x39, 0x18,
+	0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x36, 0x30, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x30, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x36, 0x31, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36,
+	0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x32, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x36, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x33, 0x18, 0x3f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x34, 0x18, 0x40,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36,
+	0x35, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x35, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x36, 0x36, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x36,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x37, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x36, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x38, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x36, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x39, 0x18, 0x45, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x30,
+	0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x30, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x37, 0x31, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x31, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x37, 0x32, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x37, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x33, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x37, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x34, 0x18, 0x4a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x35, 0x18,
+	0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x37, 0x36, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x36, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x37, 0x37, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37,
+	0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x38, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x37, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x39, 0x18, 0x4f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x30, 0x18, 0x50,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38,
+	0x31, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x31, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x38, 0x32, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x32,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x33, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x38, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x38, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x35, 0x18, 0x55, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x36,
+	0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x36, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x38, 0x37, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x37, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x38, 0x38, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x38, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x39, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x38, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x30, 0x18, 0x5a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x31, 0x18,
+	0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x39, 0x32, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x32, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x39, 0x33, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39,
+	0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x34, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x39, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x35, 0x18, 0x5f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x36, 0x18, 0x60,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39,
+	0x37, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x37, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x39, 0x38, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x38,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x39, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x39, 0x39, 0x12, 0x43, 0x0a, 0x04, 0x66, 0x31, 0x30, 0x30, 0x18, 0x64, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x04, 0x66, 0x31, 0x30, 0x30, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x01, 0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x22, 0x8d, 0x04, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x12, 0x5a, 0x0a, 0x10,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a,
+	0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x6e, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66,
+	0x69, 0x65, 0x6c, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x17, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
+	0x12, 0x75, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x75, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x24,
+	0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+	0x13, 0x0a, 0x01, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x61, 0x1a, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x13, 0x0a, 0x01, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x61, 0x22, 0x7b, 0x0a, 0x10, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x67,
+	0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x42, 0x02,
+	0x28, 0x01, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a, 0x79,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa7, 0x05, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28,
+	0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d, 0x20, 0x03,
+	0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2c, 0x0a,
+	0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x62,
+	0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63,
+	0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28,
+	0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x26, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, 0x0b, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x22, 0x20, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80,
+	0x80, 0x80, 0x02, 0x22, 0xb7, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e,
+	0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x12, 0x3a, 0x0a, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x20, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75,
+	0x6d, 0x3a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x12, 0x37, 0x0a,
+	0x03, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e,
+	0x45, 0x52, 0x03, 0x6f, 0x6e, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45,
+	0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x73,
+	0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
+	0x3a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76,
+	0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x54,
+	0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0b, 0x74, 0x68, 0x69, 0x72,
+	0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53,
+	0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,
+	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54,
+	0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2a, 0x52, 0x0a,
+	0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x0c,
+	0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x0f,
+	0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x04, 0x12,
+	0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x05,
+	0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10,
+	0x06, 0x3a, 0x61, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20,
+	0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x63, 0x0a, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03, 0x28,
+	0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x65, 0x0a, 0x0e, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x37, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x3a, 0x65, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20,
+	0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x67, 0x0a, 0x0f, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x37, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x3a, 0x67, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63,
+	0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x37, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x63,
+	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x3a, 0x5f, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28,
+	0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x8f, 0x01, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x37, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20,
+	0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45,
+	0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x59, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
+	0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_goTypes = []any{
+	(ForeignEnum)(0),                     // 0: hybrid.goproto.proto.testeditions.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),         // 1: hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),                 // 2: hybrid.goproto.proto.testeditions.TestAllTypes
+	(*TestManyMessageFieldsMessage)(nil), // 3: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage
+	(*ForeignMessage)(nil),               // 4: hybrid.goproto.proto.testeditions.ForeignMessage
+	(*TestRequired)(nil),                 // 5: hybrid.goproto.proto.testeditions.TestRequired
+	(*TestRequiredForeign)(nil),          // 6: hybrid.goproto.proto.testeditions.TestRequiredForeign
+	(*TestRequiredGroupFields)(nil),      // 7: hybrid.goproto.proto.testeditions.TestRequiredGroupFields
+	(*TestRequiredLazy)(nil),             // 8: hybrid.goproto.proto.testeditions.TestRequiredLazy
+	(*TestPackedTypes)(nil),              // 9: hybrid.goproto.proto.testeditions.TestPackedTypes
+	(*TestPackedExtensions)(nil),         // 10: hybrid.goproto.proto.testeditions.TestPackedExtensions
+	(*RemoteDefault)(nil),                // 11: hybrid.goproto.proto.testeditions.RemoteDefault
+	(*TestAllTypes_NestedMessage)(nil),   // 12: hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	(*TestAllTypes_OptionalGroup)(nil),   // 13: hybrid.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	(*TestAllTypes_RepeatedGroup)(nil),   // 14: hybrid.goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	nil,                                  // 15: hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	nil,                                  // 16: hybrid.goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	nil,                                  // 17: hybrid.goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	nil,                                  // 18: hybrid.goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	nil,                                  // 19: hybrid.goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	nil,                                  // 20: hybrid.goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	nil,                                  // 21: hybrid.goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                  // 22: hybrid.goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                  // 23: hybrid.goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                  // 24: hybrid.goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                  // 25: hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	nil,                                  // 26: hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	nil,                                  // 27: hybrid.goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	nil,                                  // 28: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	nil,                                  // 29: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	nil,                                  // 30: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                  // 31: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	(*TestAllTypes_OneofGroup)(nil),      // 32: hybrid.goproto.proto.testeditions.TestAllTypes.OneofGroup
+	nil,                                  // 33: hybrid.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	(*TestRequiredGroupFields_OptionalGroup)(nil), // 34: hybrid.goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 35: hybrid.goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	(ImportEnum)(0),        // 36: hybrid.goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil),  // 37: hybrid.goproto.proto.testeditions.ImportMessage
+	(enums_hybrid.Enum)(0), // 38: hybrid.goproto.proto.enums.Enum
+}
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_depIdxs = []int32{
+	1,   // 0: hybrid.goproto.proto.testeditions.TestAllTypes.singular_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 1: hybrid.goproto.proto.testeditions.TestAllTypes.singular_foreign_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	36,  // 2: hybrid.goproto.proto.testeditions.TestAllTypes.singular_import_enum:type_name -> hybrid.goproto.proto.testeditions.ImportEnum
+	13,  // 3: hybrid.goproto.proto.testeditions.TestAllTypes.optionalgroup:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	13,  // 4: hybrid.goproto.proto.testeditions.TestAllTypes.not_group_like_delimited:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	12,  // 5: hybrid.goproto.proto.testeditions.TestAllTypes.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 6: hybrid.goproto.proto.testeditions.TestAllTypes.optional_foreign_message:type_name -> hybrid.goproto.proto.testeditions.ForeignMessage
+	37,  // 7: hybrid.goproto.proto.testeditions.TestAllTypes.optional_import_message:type_name -> hybrid.goproto.proto.testeditions.ImportMessage
+	1,   // 8: hybrid.goproto.proto.testeditions.TestAllTypes.optional_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 9: hybrid.goproto.proto.testeditions.TestAllTypes.optional_foreign_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	36,  // 10: hybrid.goproto.proto.testeditions.TestAllTypes.optional_import_enum:type_name -> hybrid.goproto.proto.testeditions.ImportEnum
+	12,  // 11: hybrid.goproto.proto.testeditions.TestAllTypes.optional_lazy_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	14,  // 12: hybrid.goproto.proto.testeditions.TestAllTypes.repeatedgroup:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	12,  // 13: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 14: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_foreign_message:type_name -> hybrid.goproto.proto.testeditions.ForeignMessage
+	37,  // 15: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_importmessage:type_name -> hybrid.goproto.proto.testeditions.ImportMessage
+	1,   // 16: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 17: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_foreign_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	36,  // 18: hybrid.goproto.proto.testeditions.TestAllTypes.repeated_importenum:type_name -> hybrid.goproto.proto.testeditions.ImportEnum
+	15,  // 19: hybrid.goproto.proto.testeditions.TestAllTypes.map_int32_int32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	16,  // 20: hybrid.goproto.proto.testeditions.TestAllTypes.map_int64_int64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	17,  // 21: hybrid.goproto.proto.testeditions.TestAllTypes.map_uint32_uint32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	18,  // 22: hybrid.goproto.proto.testeditions.TestAllTypes.map_uint64_uint64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	19,  // 23: hybrid.goproto.proto.testeditions.TestAllTypes.map_sint32_sint32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	20,  // 24: hybrid.goproto.proto.testeditions.TestAllTypes.map_sint64_sint64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	21,  // 25: hybrid.goproto.proto.testeditions.TestAllTypes.map_fixed32_fixed32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	22,  // 26: hybrid.goproto.proto.testeditions.TestAllTypes.map_fixed64_fixed64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	23,  // 27: hybrid.goproto.proto.testeditions.TestAllTypes.map_sfixed32_sfixed32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	24,  // 28: hybrid.goproto.proto.testeditions.TestAllTypes.map_sfixed64_sfixed64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	25,  // 29: hybrid.goproto.proto.testeditions.TestAllTypes.map_int32_float:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	26,  // 30: hybrid.goproto.proto.testeditions.TestAllTypes.map_int32_double:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	27,  // 31: hybrid.goproto.proto.testeditions.TestAllTypes.map_bool_bool:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	28,  // 32: hybrid.goproto.proto.testeditions.TestAllTypes.map_string_string:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	29,  // 33: hybrid.goproto.proto.testeditions.TestAllTypes.map_string_bytes:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	30,  // 34: hybrid.goproto.proto.testeditions.TestAllTypes.map_string_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	31,  // 35: hybrid.goproto.proto.testeditions.TestAllTypes.map_string_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	1,   // 36: hybrid.goproto.proto.testeditions.TestAllTypes.default_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 37: hybrid.goproto.proto.testeditions.TestAllTypes.default_foreign_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	12,  // 38: hybrid.goproto.proto.testeditions.TestAllTypes.oneof_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 39: hybrid.goproto.proto.testeditions.TestAllTypes.oneof_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	32,  // 40: hybrid.goproto.proto.testeditions.TestAllTypes.oneofgroup:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.OneofGroup
+	2,   // 41: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f1:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 42: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f2:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 43: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f3:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 44: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f4:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 45: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f5:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 46: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f6:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 47: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f7:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 48: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f8:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 49: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f9:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 50: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f10:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 51: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f11:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 52: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f12:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 53: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f13:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 54: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f14:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 55: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f15:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 56: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f16:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 57: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f17:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 58: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f18:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 59: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f19:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 60: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f20:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 61: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f21:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 62: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f22:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 63: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f23:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 64: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f24:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 65: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f25:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 66: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f26:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 67: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f27:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 68: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f28:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 69: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f29:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 70: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f30:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 71: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f31:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 72: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f32:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 73: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f33:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 74: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f34:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 75: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f35:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 76: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f36:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 77: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f37:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 78: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f38:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 79: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f39:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 80: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f40:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 81: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f41:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 82: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f42:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 83: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f43:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 84: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f44:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 85: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f45:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 86: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f46:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 87: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f47:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 88: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f48:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 89: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f49:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 90: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f50:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 91: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f51:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 92: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f52:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 93: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f53:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 94: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f54:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 95: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f55:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 96: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f56:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 97: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f57:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 98: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f58:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 99: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f59:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 100: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f60:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 101: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f61:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 102: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f62:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 103: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f63:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 104: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f64:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 105: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f65:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 106: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f66:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 107: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f67:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 108: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f68:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 109: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f69:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 110: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f70:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 111: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f71:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 112: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f72:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 113: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f73:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 114: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f74:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 115: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f75:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 116: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f76:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 117: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f77:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 118: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f78:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 119: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f79:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 120: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f80:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 121: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f81:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 122: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f82:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 123: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f83:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 124: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f84:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 125: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f85:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 126: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f86:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 127: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f87:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 128: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f88:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 129: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f89:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 130: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f90:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 131: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f91:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 132: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f92:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 133: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f93:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 134: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f94:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 135: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f95:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 136: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f96:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 137: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f97:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 138: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f98:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 139: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f99:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	2,   // 140: hybrid.goproto.proto.testeditions.TestManyMessageFieldsMessage.f100:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	5,   // 141: hybrid.goproto.proto.testeditions.TestRequiredForeign.optional_message:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	5,   // 142: hybrid.goproto.proto.testeditions.TestRequiredForeign.repeated_message:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	33,  // 143: hybrid.goproto.proto.testeditions.TestRequiredForeign.map_message:type_name -> hybrid.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	5,   // 144: hybrid.goproto.proto.testeditions.TestRequiredForeign.oneof_message:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	34,  // 145: hybrid.goproto.proto.testeditions.TestRequiredGroupFields.optionalgroup:type_name -> hybrid.goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	35,  // 146: hybrid.goproto.proto.testeditions.TestRequiredGroupFields.repeatedgroup:type_name -> hybrid.goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	5,   // 147: hybrid.goproto.proto.testeditions.TestRequiredLazy.optional_lazy_message:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	0,   // 148: hybrid.goproto.proto.testeditions.TestPackedTypes.packed_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	38,  // 149: hybrid.goproto.proto.testeditions.RemoteDefault.default:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 150: hybrid.goproto.proto.testeditions.RemoteDefault.zero:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 151: hybrid.goproto.proto.testeditions.RemoteDefault.one:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 152: hybrid.goproto.proto.testeditions.RemoteDefault.elevent:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 153: hybrid.goproto.proto.testeditions.RemoteDefault.seventeen:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 154: hybrid.goproto.proto.testeditions.RemoteDefault.thirtyseven:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 155: hybrid.goproto.proto.testeditions.RemoteDefault.sixtyseven:type_name -> hybrid.goproto.proto.enums.Enum
+	38,  // 156: hybrid.goproto.proto.testeditions.RemoteDefault.negative:type_name -> hybrid.goproto.proto.enums.Enum
+	2,   // 157: hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage.corecursive:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes
+	12,  // 158: hybrid.goproto.proto.testeditions.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 159: hybrid.goproto.proto.testeditions.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 160: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 161: hybrid.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	5,   // 162: hybrid.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry.value:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	10,  // 163: hybrid.goproto.proto.testeditions.packed_int32:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 164: hybrid.goproto.proto.testeditions.packed_int64:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 165: hybrid.goproto.proto.testeditions.packed_uint32:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 166: hybrid.goproto.proto.testeditions.packed_uint64:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 167: hybrid.goproto.proto.testeditions.packed_sint32:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 168: hybrid.goproto.proto.testeditions.packed_sint64:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 169: hybrid.goproto.proto.testeditions.packed_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 170: hybrid.goproto.proto.testeditions.packed_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 171: hybrid.goproto.proto.testeditions.packed_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 172: hybrid.goproto.proto.testeditions.packed_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 173: hybrid.goproto.proto.testeditions.packed_float:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 174: hybrid.goproto.proto.testeditions.packed_double:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 175: hybrid.goproto.proto.testeditions.packed_bool:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 176: hybrid.goproto.proto.testeditions.packed_enum:extendee -> hybrid.goproto.proto.testeditions.TestPackedExtensions
+	0,   // 177: hybrid.goproto.proto.testeditions.packed_enum:type_name -> hybrid.goproto.proto.testeditions.ForeignEnum
+	178, // [178:178] is the sub-list for method output_type
+	178, // [178:178] is the sub-list for method input_type
+	177, // [177:178] is the sub-list for extension type_name
+	163, // [163:177] is the sub-list for extension extendee
+	0,   // [0:163] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_init() }
+func file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_init()
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[0].OneofWrappers = []any{
+		(*TestAllTypes_OneofUint32)(nil),
+		(*TestAllTypes_OneofNestedMessage)(nil),
+		(*TestAllTypes_OneofString)(nil),
+		(*TestAllTypes_OneofBytes)(nil),
+		(*TestAllTypes_OneofBool)(nil),
+		(*TestAllTypes_OneofUint64)(nil),
+		(*TestAllTypes_OneofFloat)(nil),
+		(*TestAllTypes_OneofDouble)(nil),
+		(*TestAllTypes_OneofEnum)(nil),
+		(*TestAllTypes_Oneofgroup)(nil),
+		(*TestAllTypes_OneofOptionalUint32)(nil),
+	}
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes[4].OneofWrappers = []any{
+		(*TestRequiredForeign_OneofMessage)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   34,
+			NumExtensions: 14,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto
new file mode 100644
index 0000000..bbea801
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto
@@ -0,0 +1,382 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.testeditions;
+
+import "internal/testprotos/enums/enums_hybrid/enums.hybrid.proto";
+import "internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message TestAllTypes {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllTypes corecursive = 2;
+  }
+
+  enum NestedEnum {
+    FOO = 0;
+    BAR = 1;
+    BAZ = 2;
+    NEG = -1;  // Intentionally negative.
+  }
+
+  int32 singular_int32 = 124 [features.field_presence = IMPLICIT];
+  int64 singular_int64 = 125 [features.field_presence = IMPLICIT];
+  uint32 singular_uint32 = 126 [features.field_presence = IMPLICIT];
+  uint64 singular_uint64 = 127 [features.field_presence = IMPLICIT];
+  sint32 singular_sint32 = 128 [features.field_presence = IMPLICIT];
+  sint64 singular_sint64 = 129 [features.field_presence = IMPLICIT];
+  fixed32 singular_fixed32 = 130 [features.field_presence = IMPLICIT];
+  fixed64 singular_fixed64 = 131 [features.field_presence = IMPLICIT];
+  sfixed32 singular_sfixed32 = 132 [features.field_presence = IMPLICIT];
+  sfixed64 singular_sfixed64 = 133 [features.field_presence = IMPLICIT];
+  float singular_float = 134 [features.field_presence = IMPLICIT];
+  double singular_double = 135 [features.field_presence = IMPLICIT];
+  bool singular_bool = 136 [features.field_presence = IMPLICIT];
+  string singular_string = 137 [features.field_presence = IMPLICIT];
+  bytes singular_bytes = 138 [features.field_presence = IMPLICIT];
+  // message-typed fields elided, as they cannot specify implicit presence.
+  NestedEnum singular_nested_enum = 142 [features.field_presence = IMPLICIT];
+  ForeignEnum singular_foreign_enum = 143 [features.field_presence = IMPLICIT];
+  ImportEnum singular_import_enum = 144 [features.field_presence = IMPLICIT];
+
+  int32 optional_int32 = 1;
+  int64 optional_int64 = 2;
+  uint32 optional_uint32 = 3;
+  uint64 optional_uint64 = 4;
+  sint32 optional_sint32 = 5;
+  sint64 optional_sint64 = 6;
+  fixed32 optional_fixed32 = 7;
+  fixed64 optional_fixed64 = 8;
+  sfixed32 optional_sfixed32 = 9;
+  sfixed64 optional_sfixed64 = 10;
+  float optional_float = 11;
+  double optional_double = 12;
+  bool optional_bool = 13;
+  string optional_string = 14;
+  bytes optional_bytes = 15;
+  message OptionalGroup {
+    int32 a = 17;
+    NestedMessage optional_nested_message = 1000;
+    int32 same_field_number = 16;
+  }
+  OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
+  OptionalGroup not_group_like_delimited = 17
+      [features.message_encoding = DELIMITED];
+  NestedMessage optional_nested_message = 18;
+  ForeignMessage optional_foreign_message = 19;
+  ImportMessage optional_import_message = 20;
+  NestedEnum optional_nested_enum = 21;
+  ForeignEnum optional_foreign_enum = 22;
+  ImportEnum optional_import_enum = 23;
+  NestedMessage optional_lazy_nested_message = 24 [lazy = true];
+
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+
+  message RepeatedGroup {
+    int32 a = 47;
+    NestedMessage optional_nested_message = 1001;
+  }
+  repeated RepeatedGroup repeatedgroup = 46 [
+    features.message_encoding = DELIMITED,
+    features.repeated_field_encoding = EXPANDED
+  ];
+  repeated NestedMessage repeated_nested_message = 48;
+  repeated ForeignMessage repeated_foreign_message = 49;
+  repeated ImportMessage repeated_importmessage = 50;
+  repeated NestedEnum repeated_nested_enum = 51;
+  repeated ForeignEnum repeated_foreign_enum = 52;
+  repeated ImportEnum repeated_importenum = 53;
+
+  map<int32, int32> map_int32_int32 = 56;
+  map<int64, int64> map_int64_int64 = 57;
+  map<uint32, uint32> map_uint32_uint32 = 58;
+  map<uint64, uint64> map_uint64_uint64 = 59;
+  map<sint32, sint32> map_sint32_sint32 = 60;
+  map<sint64, sint64> map_sint64_sint64 = 61;
+  map<fixed32, fixed32> map_fixed32_fixed32 = 62;
+  map<fixed64, fixed64> map_fixed64_fixed64 = 63;
+  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
+  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
+  map<int32, float> map_int32_float = 66;
+  map<int32, double> map_int32_double = 67;
+  map<bool, bool> map_bool_bool = 68;
+  map<string, string> map_string_string = 69;
+  map<string, bytes> map_string_bytes = 70;
+  map<string, NestedMessage> map_string_nested_message = 71;
+  map<string, NestedEnum> map_string_nested_enum = 73;
+
+  // Singular with defaults
+  int32 default_int32 = 81 [default = 81];
+  int64 default_int64 = 82 [default = 82];
+  uint32 default_uint32 = 83 [default = 83];
+  uint64 default_uint64 = 84 [default = 84];
+  sint32 default_sint32 = 85 [default = -85];
+  sint64 default_sint64 = 86 [default = 86];
+  fixed32 default_fixed32 = 87 [default = 87];
+  fixed64 default_fixed64 = 88 [default = 88];
+  sfixed32 default_sfixed32 = 89 [default = 89];
+  sfixed64 default_sfixed64 = 80 [default = -90];
+  float default_float = 91 [default = 91.5];
+  double default_double = 92 [default = 92e3];
+  bool default_bool = 93 [default = true];
+  string default_string = 94 [default = "hello"];
+  bytes default_bytes = 95 [default = "world"];
+  NestedEnum default_nested_enum = 96 [default = BAR];
+  ForeignEnum default_foreign_enum = 97 [default = FOREIGN_BAR];
+
+  message OneofGroup {
+    int32 a = 1;
+    int32 b = 2;
+  }
+  oneof oneof_field {
+    uint32 oneof_uint32 = 111;
+    NestedMessage oneof_nested_message = 112;
+    string oneof_string = 113;
+    bytes oneof_bytes = 114;
+    bool oneof_bool = 115;
+    uint64 oneof_uint64 = 116;
+    float oneof_float = 117;
+    double oneof_double = 118;
+    NestedEnum oneof_enum = 119;
+    OneofGroup oneofgroup = 121 [features.message_encoding = DELIMITED];
+  }
+
+  // A oneof with exactly one field.
+  oneof oneof_optional {
+    uint32 oneof_optional_uint32 = 120;
+  }
+}
+
+message TestManyMessageFieldsMessage {
+  TestAllTypes f1 = 1;
+  TestAllTypes f2 = 2;
+  TestAllTypes f3 = 3;
+  TestAllTypes f4 = 4;
+  TestAllTypes f5 = 5;
+  TestAllTypes f6 = 6;
+  TestAllTypes f7 = 7;
+  TestAllTypes f8 = 8;
+  TestAllTypes f9 = 9;
+  TestAllTypes f10 = 10;
+  TestAllTypes f11 = 11;
+  TestAllTypes f12 = 12;
+  TestAllTypes f13 = 13;
+  TestAllTypes f14 = 14;
+  TestAllTypes f15 = 15;
+  TestAllTypes f16 = 16;
+  TestAllTypes f17 = 17;
+  TestAllTypes f18 = 18;
+  TestAllTypes f19 = 19;
+  TestAllTypes f20 = 20;
+  TestAllTypes f21 = 21;
+  TestAllTypes f22 = 22;
+  TestAllTypes f23 = 23;
+  TestAllTypes f24 = 24;
+  TestAllTypes f25 = 25;
+  TestAllTypes f26 = 26;
+  TestAllTypes f27 = 27;
+  TestAllTypes f28 = 28;
+  TestAllTypes f29 = 29;
+  TestAllTypes f30 = 30;
+  TestAllTypes f31 = 31;
+  TestAllTypes f32 = 32;
+  TestAllTypes f33 = 33;
+  TestAllTypes f34 = 34;
+  TestAllTypes f35 = 35;
+  TestAllTypes f36 = 36;
+  TestAllTypes f37 = 37;
+  TestAllTypes f38 = 38;
+  TestAllTypes f39 = 39;
+  TestAllTypes f40 = 40;
+  TestAllTypes f41 = 41;
+  TestAllTypes f42 = 42;
+  TestAllTypes f43 = 43;
+  TestAllTypes f44 = 44;
+  TestAllTypes f45 = 45;
+  TestAllTypes f46 = 46;
+  TestAllTypes f47 = 47;
+  TestAllTypes f48 = 48;
+  TestAllTypes f49 = 49;
+  TestAllTypes f50 = 50;
+  TestAllTypes f51 = 51;
+  TestAllTypes f52 = 52;
+  TestAllTypes f53 = 53;
+  TestAllTypes f54 = 54;
+  TestAllTypes f55 = 55;
+  TestAllTypes f56 = 56;
+  TestAllTypes f57 = 57;
+  TestAllTypes f58 = 58;
+  TestAllTypes f59 = 59;
+  TestAllTypes f60 = 60;
+  TestAllTypes f61 = 61;
+  TestAllTypes f62 = 62;
+  TestAllTypes f63 = 63;
+  TestAllTypes f64 = 64;
+  TestAllTypes f65 = 65;
+  TestAllTypes f66 = 66;
+  TestAllTypes f67 = 67;
+  TestAllTypes f68 = 68;
+  TestAllTypes f69 = 69;
+  TestAllTypes f70 = 70;
+  TestAllTypes f71 = 71;
+  TestAllTypes f72 = 72;
+  TestAllTypes f73 = 73;
+  TestAllTypes f74 = 74;
+  TestAllTypes f75 = 75;
+  TestAllTypes f76 = 76;
+  TestAllTypes f77 = 77;
+  TestAllTypes f78 = 78;
+  TestAllTypes f79 = 79;
+  TestAllTypes f80 = 80;
+  TestAllTypes f81 = 81;
+  TestAllTypes f82 = 82;
+  TestAllTypes f83 = 83;
+  TestAllTypes f84 = 84;
+  TestAllTypes f85 = 85;
+  TestAllTypes f86 = 86;
+  TestAllTypes f87 = 87;
+  TestAllTypes f88 = 88;
+  TestAllTypes f89 = 89;
+  TestAllTypes f90 = 90;
+  TestAllTypes f91 = 91;
+  TestAllTypes f92 = 92;
+  TestAllTypes f93 = 93;
+  TestAllTypes f94 = 94;
+  TestAllTypes f95 = 95;
+  TestAllTypes f96 = 96;
+  TestAllTypes f97 = 97;
+  TestAllTypes f98 = 98;
+  TestAllTypes f99 = 99;
+  TestAllTypes f100 = 100;
+}
+
+message ForeignMessage {
+  int32 c = 1;
+  int32 d = 2;
+}
+
+enum ForeignEnum {
+  FOREIGN_ZERO = 0;
+  FOREIGN_FOO = 4;
+  FOREIGN_BAR = 5;
+  FOREIGN_BAZ = 6;
+}
+
+message TestRequired {
+  int32 required_field = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message TestRequiredForeign {
+  TestRequired optional_message = 1;
+  repeated TestRequired repeated_message = 2;
+  map<int32, TestRequired> map_message = 3;
+  oneof oneof_field {
+    TestRequired oneof_message = 4;
+  }
+}
+
+message TestRequiredGroupFields {
+  message OptionalGroup {
+    int32 a = 2 [features.field_presence = LEGACY_REQUIRED];
+  }
+  OptionalGroup optionalgroup = 1 [features.message_encoding = DELIMITED];
+  message RepeatedGroup {
+    int32 a = 4 [features.field_presence = LEGACY_REQUIRED];
+  }
+  repeated RepeatedGroup repeatedgroup = 3
+      [features.message_encoding = DELIMITED];
+}
+
+message TestRequiredLazy {
+  TestRequired optional_lazy_message = 1 [lazy = true];
+}
+
+message TestPackedTypes {
+  repeated int32 packed_int32 = 90 [features.repeated_field_encoding = PACKED];
+  repeated int64 packed_int64 = 91 [features.repeated_field_encoding = PACKED];
+  repeated uint32 packed_uint32 = 92
+      [features.repeated_field_encoding = PACKED];
+  repeated uint64 packed_uint64 = 93
+      [features.repeated_field_encoding = PACKED];
+  repeated sint32 packed_sint32 = 94
+      [features.repeated_field_encoding = PACKED];
+  repeated sint64 packed_sint64 = 95
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed32 packed_fixed32 = 96
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed64 packed_fixed64 = 97
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed32 packed_sfixed32 = 98
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed64 packed_sfixed64 = 99
+      [features.repeated_field_encoding = PACKED];
+  repeated float packed_float = 100 [features.repeated_field_encoding = PACKED];
+  repeated double packed_double = 101
+      [features.repeated_field_encoding = PACKED];
+  repeated bool packed_bool = 102 [features.repeated_field_encoding = PACKED];
+  repeated ForeignEnum packed_enum = 103
+      [features.repeated_field_encoding = PACKED];
+}
+
+message TestPackedExtensions {
+  extensions 1 to max;
+}
+
+extend TestPackedExtensions {
+  repeated int32 packed_int32 = 90 [features.repeated_field_encoding = PACKED];
+  repeated int64 packed_int64 = 91 [features.repeated_field_encoding = PACKED];
+  repeated uint32 packed_uint32 = 92
+      [features.repeated_field_encoding = PACKED];
+  repeated uint64 packed_uint64 = 93
+      [features.repeated_field_encoding = PACKED];
+  repeated sint32 packed_sint32 = 94
+      [features.repeated_field_encoding = PACKED];
+  repeated sint64 packed_sint64 = 95
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed32 packed_fixed32 = 96
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed64 packed_fixed64 = 97
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed32 packed_sfixed32 = 98
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed64 packed_sfixed64 = 99
+      [features.repeated_field_encoding = PACKED];
+  repeated float packed_float = 100 [features.repeated_field_encoding = PACKED];
+  repeated double packed_double = 101
+      [features.repeated_field_encoding = PACKED];
+  repeated bool packed_bool = 102 [features.repeated_field_encoding = PACKED];
+  repeated ForeignEnum packed_enum = 103
+      [features.repeated_field_encoding = PACKED];
+}
+
+message RemoteDefault {
+  goproto.proto.enums.Enum default = 1;
+  goproto.proto.enums.Enum zero = 2 [default = ZERO];
+  goproto.proto.enums.Enum one = 3 [default = ONE];
+  goproto.proto.enums.Enum elevent = 4 [default = ELEVENT];
+  goproto.proto.enums.Enum seventeen = 5 [default = SEVENTEEN];
+  goproto.proto.enums.Enum thirtyseven = 6 [default = THIRTYSEVEN];
+  goproto.proto.enums.Enum sixtyseven = 7 [default = SIXTYSEVEN];
+  goproto.proto.enums.Enum negative = 8 [default = NEGATIVE];
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.pb.go
new file mode 100644
index 0000000..9d7ab6f
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.pb.go
@@ -0,0 +1,1589 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto
+
+package testeditions_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type TestAllExtensions struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestAllExtensions) Reset() {
+	*x = TestAllExtensions{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllExtensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllExtensions) ProtoMessage() {}
+
+func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestAllExtensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestAllExtensions_builder) Build() *TestAllExtensions {
+	m0 := &TestAllExtensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type OptionalGroup struct {
+	state                 protoimpl.MessageState           `protogen:"hybrid.v1"`
+	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
+	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *OptionalGroup) Reset() {
+	*x = OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OptionalGroup) ProtoMessage() {}
+
+func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *OptionalGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *OptionalGroup) GetSameFieldNumber() int32 {
+	if x != nil && x.SameFieldNumber != nil {
+		return *x.SameFieldNumber
+	}
+	return 0
+}
+
+func (x *OptionalGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *OptionalGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *OptionalGroup) SetSameFieldNumber(v int32) {
+	x.SameFieldNumber = &v
+}
+
+func (x *OptionalGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *OptionalGroup) HasSameFieldNumber() bool {
+	if x == nil {
+		return false
+	}
+	return x.SameFieldNumber != nil
+}
+
+func (x *OptionalGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *OptionalGroup) ClearA() {
+	x.A = nil
+}
+
+func (x *OptionalGroup) ClearSameFieldNumber() {
+	x.SameFieldNumber = nil
+}
+
+func (x *OptionalGroup) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+type OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	SameFieldNumber       *int32
+	OptionalNestedMessage *TestAllExtensions_NestedMessage
+}
+
+func (b0 OptionalGroup_builder) Build() *OptionalGroup {
+	m0 := &OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.SameFieldNumber = b.SameFieldNumber
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type RepeatedGroup struct {
+	state                 protoimpl.MessageState           `protogen:"hybrid.v1"`
+	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
+	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
+}
+
+func (x *RepeatedGroup) Reset() {
+	*x = RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepeatedGroup) ProtoMessage() {}
+
+func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *RepeatedGroup) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *RepeatedGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *RepeatedGroup) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *RepeatedGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *RepeatedGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *RepeatedGroup) ClearA() {
+	x.A = nil
+}
+
+func (x *RepeatedGroup) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+type RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllExtensions_NestedMessage
+}
+
+func (b0 RepeatedGroup_builder) Build() *RepeatedGroup {
+	m0 := &RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type TestFeatureResolution struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestFeatureResolution) Reset() {
+	*x = TestFeatureResolution{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestFeatureResolution) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestFeatureResolution) ProtoMessage() {}
+
+func (x *TestFeatureResolution) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestFeatureResolution_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestFeatureResolution_builder) Build() *TestFeatureResolution {
+	m0 := &TestFeatureResolution{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type RepeatedFieldEncoding struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *RepeatedFieldEncoding) Reset() {
+	*x = RepeatedFieldEncoding{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RepeatedFieldEncoding) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepeatedFieldEncoding) ProtoMessage() {}
+
+func (x *RepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type RepeatedFieldEncoding_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 RepeatedFieldEncoding_builder) Build() *RepeatedFieldEncoding {
+	m0 := &RepeatedFieldEncoding{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type TestAllExtensions_NestedMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	Corecursive   *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllExtensions_NestedMessage) Reset() {
+	*x = TestAllExtensions_NestedMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllExtensions_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllExtensions_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllExtensions_NestedMessage) GetA() int32 {
+	if x != nil && x.A != nil {
+		return *x.A
+	}
+	return 0
+}
+
+func (x *TestAllExtensions_NestedMessage) GetCorecursive() *TestAllExtensions {
+	if x != nil {
+		return x.Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllExtensions_NestedMessage) SetA(v int32) {
+	x.A = &v
+}
+
+func (x *TestAllExtensions_NestedMessage) SetCorecursive(v *TestAllExtensions) {
+	x.Corecursive = v
+}
+
+func (x *TestAllExtensions_NestedMessage) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return x.A != nil
+}
+
+func (x *TestAllExtensions_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.Corecursive != nil
+}
+
+func (x *TestAllExtensions_NestedMessage) ClearA() {
+	x.A = nil
+}
+
+func (x *TestAllExtensions_NestedMessage) ClearCorecursive() {
+	x.Corecursive = nil
+}
+
+type TestAllExtensions_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           *int32
+	Corecursive *TestAllExtensions
+}
+
+func (b0 TestAllExtensions_NestedMessage_builder) Build() *TestAllExtensions_NestedMessage {
+	m0 := &TestAllExtensions_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.Corecursive = b.Corecursive
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         1,
+		Name:          "hybrid.goproto.proto.testeditions.optional_int32",
+		Tag:           "varint,1,opt,name=optional_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         2,
+		Name:          "hybrid.goproto.proto.testeditions.optional_int64",
+		Tag:           "varint,2,opt,name=optional_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         3,
+		Name:          "hybrid.goproto.proto.testeditions.optional_uint32",
+		Tag:           "varint,3,opt,name=optional_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         4,
+		Name:          "hybrid.goproto.proto.testeditions.optional_uint64",
+		Tag:           "varint,4,opt,name=optional_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         5,
+		Name:          "hybrid.goproto.proto.testeditions.optional_sint32",
+		Tag:           "zigzag32,5,opt,name=optional_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         6,
+		Name:          "hybrid.goproto.proto.testeditions.optional_sint64",
+		Tag:           "zigzag64,6,opt,name=optional_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         7,
+		Name:          "hybrid.goproto.proto.testeditions.optional_fixed32",
+		Tag:           "fixed32,7,opt,name=optional_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         8,
+		Name:          "hybrid.goproto.proto.testeditions.optional_fixed64",
+		Tag:           "fixed64,8,opt,name=optional_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         9,
+		Name:          "hybrid.goproto.proto.testeditions.optional_sfixed32",
+		Tag:           "fixed32,9,opt,name=optional_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         10,
+		Name:          "hybrid.goproto.proto.testeditions.optional_sfixed64",
+		Tag:           "fixed64,10,opt,name=optional_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float32)(nil),
+		Field:         11,
+		Name:          "hybrid.goproto.proto.testeditions.optional_float",
+		Tag:           "fixed32,11,opt,name=optional_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float64)(nil),
+		Field:         12,
+		Name:          "hybrid.goproto.proto.testeditions.optional_double",
+		Tag:           "fixed64,12,opt,name=optional_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         13,
+		Name:          "hybrid.goproto.proto.testeditions.optional_bool",
+		Tag:           "varint,13,opt,name=optional_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         14,
+		Name:          "hybrid.goproto.proto.testeditions.optional_string",
+		Tag:           "bytes,14,opt,name=optional_string",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]byte)(nil),
+		Field:         15,
+		Name:          "hybrid.goproto.proto.testeditions.optional_bytes",
+		Tag:           "bytes,15,opt,name=optional_bytes",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*OptionalGroup)(nil),
+		Field:         16,
+		Name:          "hybrid.goproto.proto.testeditions.optionalgroup",
+		Tag:           "group,16,opt,name=OptionalGroup",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
+		Field:         18,
+		Name:          "hybrid.goproto.proto.testeditions.optional_nested_message",
+		Tag:           "bytes,18,opt,name=optional_nested_message",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
+		Field:         21,
+		Name:          "hybrid.goproto.proto.testeditions.optional_nested_enum",
+		Tag:           "varint,21,opt,name=optional_nested_enum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         31,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_int32",
+		Tag:           "varint,31,rep,name=repeated_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         32,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_int64",
+		Tag:           "varint,32,rep,name=repeated_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         33,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_uint32",
+		Tag:           "varint,33,rep,name=repeated_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         34,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_uint64",
+		Tag:           "varint,34,rep,name=repeated_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         35,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_sint32",
+		Tag:           "zigzag32,35,rep,name=repeated_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         36,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_sint64",
+		Tag:           "zigzag64,36,rep,name=repeated_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         37,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_fixed32",
+		Tag:           "fixed32,37,rep,name=repeated_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         38,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_fixed64",
+		Tag:           "fixed64,38,rep,name=repeated_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         39,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_sfixed32",
+		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         40,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_sfixed64",
+		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]float32)(nil),
+		Field:         41,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_float",
+		Tag:           "fixed32,41,rep,name=repeated_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]float64)(nil),
+		Field:         42,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_double",
+		Tag:           "fixed64,42,rep,name=repeated_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]bool)(nil),
+		Field:         43,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_bool",
+		Tag:           "varint,43,rep,name=repeated_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]string)(nil),
+		Field:         44,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_string",
+		Tag:           "bytes,44,rep,name=repeated_string",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([][]byte)(nil),
+		Field:         45,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_bytes",
+		Tag:           "bytes,45,rep,name=repeated_bytes",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*RepeatedGroup)(nil),
+		Field:         46,
+		Name:          "hybrid.goproto.proto.testeditions.repeatedgroup",
+		Tag:           "group,46,rep,name=RepeatedGroup",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
+		Field:         48,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_nested_message",
+		Tag:           "bytes,48,rep,name=repeated_nested_message",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
+		Field:         51,
+		Name:          "hybrid.goproto.proto.testeditions.repeated_nested_enum",
+		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         81,
+		Name:          "hybrid.goproto.proto.testeditions.default_int32",
+		Tag:           "varint,81,opt,name=default_int32,def=81",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         82,
+		Name:          "hybrid.goproto.proto.testeditions.default_int64",
+		Tag:           "varint,82,opt,name=default_int64,def=82",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         83,
+		Name:          "hybrid.goproto.proto.testeditions.default_uint32",
+		Tag:           "varint,83,opt,name=default_uint32,def=83",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         84,
+		Name:          "hybrid.goproto.proto.testeditions.default_uint64",
+		Tag:           "varint,84,opt,name=default_uint64,def=84",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         85,
+		Name:          "hybrid.goproto.proto.testeditions.default_sint32",
+		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         86,
+		Name:          "hybrid.goproto.proto.testeditions.default_sint64",
+		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         87,
+		Name:          "hybrid.goproto.proto.testeditions.default_fixed32",
+		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         88,
+		Name:          "hybrid.goproto.proto.testeditions.default_fixed64",
+		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         89,
+		Name:          "hybrid.goproto.proto.testeditions.default_sfixed32",
+		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         80,
+		Name:          "hybrid.goproto.proto.testeditions.default_sfixed64",
+		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float32)(nil),
+		Field:         91,
+		Name:          "hybrid.goproto.proto.testeditions.default_float",
+		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float64)(nil),
+		Field:         92,
+		Name:          "hybrid.goproto.proto.testeditions.default_double",
+		Tag:           "fixed64,92,opt,name=default_double,def=92000",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         93,
+		Name:          "hybrid.goproto.proto.testeditions.default_bool",
+		Tag:           "varint,93,opt,name=default_bool,def=1",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         94,
+		Name:          "hybrid.goproto.proto.testeditions.default_string",
+		Tag:           "bytes,94,opt,name=default_string,def=hello",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]byte)(nil),
+		Field:         95,
+		Name:          "hybrid.goproto.proto.testeditions.default_bytes",
+		Tag:           "bytes,95,opt,name=default_bytes,def=world",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestRequired)(nil),
+		Field:         1000,
+		Name:          "hybrid.goproto.proto.testeditions.single",
+		Tag:           "bytes,1000,opt,name=single",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*TestRequired)(nil),
+		Field:         1001,
+		Name:          "hybrid.goproto.proto.testeditions.multi",
+		Tag:           "bytes,1001,rep,name=multi",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         2,
+		Name:          "hybrid.goproto.proto.testeditions.global_expanded_extension",
+		Tag:           "varint,2,rep,name=global_expanded_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         3,
+		Name:          "hybrid.goproto.proto.testeditions.global_packed_extension_overriden",
+		Tag:           "varint,3,rep,packed,name=global_packed_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         4,
+		Name:          "hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension",
+		Tag:           "varint,4,rep,name=message_expanded_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         5,
+		Name:          "hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden",
+		Tag:           "varint,5,rep,packed,name=message_packed_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
+	},
+}
+
+// Extension fields to TestAllExtensions.
+var (
+	// optional int32 optional_int32 = 1;
+	E_OptionalInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[0]
+	// optional int64 optional_int64 = 2;
+	E_OptionalInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[1]
+	// optional uint32 optional_uint32 = 3;
+	E_OptionalUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[2]
+	// optional uint64 optional_uint64 = 4;
+	E_OptionalUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[3]
+	// optional sint32 optional_sint32 = 5;
+	E_OptionalSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[4]
+	// optional sint64 optional_sint64 = 6;
+	E_OptionalSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[5]
+	// optional fixed32 optional_fixed32 = 7;
+	E_OptionalFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[6]
+	// optional fixed64 optional_fixed64 = 8;
+	E_OptionalFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[7]
+	// optional sfixed32 optional_sfixed32 = 9;
+	E_OptionalSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[8]
+	// optional sfixed64 optional_sfixed64 = 10;
+	E_OptionalSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[9]
+	// optional float optional_float = 11;
+	E_OptionalFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[10]
+	// optional double optional_double = 12;
+	E_OptionalDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[11]
+	// optional bool optional_bool = 13;
+	E_OptionalBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[12]
+	// optional string optional_string = 14;
+	E_OptionalString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[13]
+	// optional bytes optional_bytes = 15;
+	E_OptionalBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[14]
+	// optional hybrid.goproto.proto.testeditions.OptionalGroup optionalgroup = 16;
+	E_Optionalgroup = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[15]
+	// optional hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage optional_nested_message = 18;
+	E_OptionalNestedMessage = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[16]
+	// optional hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum optional_nested_enum = 21;
+	E_OptionalNestedEnum = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[17]
+	// repeated int32 repeated_int32 = 31;
+	E_RepeatedInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[18]
+	// repeated int64 repeated_int64 = 32;
+	E_RepeatedInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[19]
+	// repeated uint32 repeated_uint32 = 33;
+	E_RepeatedUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[20]
+	// repeated uint64 repeated_uint64 = 34;
+	E_RepeatedUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[21]
+	// repeated sint32 repeated_sint32 = 35;
+	E_RepeatedSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[22]
+	// repeated sint64 repeated_sint64 = 36;
+	E_RepeatedSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[23]
+	// repeated fixed32 repeated_fixed32 = 37;
+	E_RepeatedFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[24]
+	// repeated fixed64 repeated_fixed64 = 38;
+	E_RepeatedFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[25]
+	// repeated sfixed32 repeated_sfixed32 = 39;
+	E_RepeatedSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[26]
+	// repeated sfixed64 repeated_sfixed64 = 40;
+	E_RepeatedSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[27]
+	// repeated float repeated_float = 41;
+	E_RepeatedFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[28]
+	// repeated double repeated_double = 42;
+	E_RepeatedDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[29]
+	// repeated bool repeated_bool = 43;
+	E_RepeatedBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[30]
+	// repeated string repeated_string = 44;
+	E_RepeatedString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[31]
+	// repeated bytes repeated_bytes = 45;
+	E_RepeatedBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[32]
+	// repeated hybrid.goproto.proto.testeditions.RepeatedGroup repeatedgroup = 46;
+	E_Repeatedgroup = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[33]
+	// repeated hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage repeated_nested_message = 48;
+	E_RepeatedNestedMessage = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[34]
+	// repeated hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum repeated_nested_enum = 51;
+	E_RepeatedNestedEnum = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[35]
+	// optional int32 default_int32 = 81;
+	E_DefaultInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[36]
+	// optional int64 default_int64 = 82;
+	E_DefaultInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[37]
+	// optional uint32 default_uint32 = 83;
+	E_DefaultUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[38]
+	// optional uint64 default_uint64 = 84;
+	E_DefaultUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[39]
+	// optional sint32 default_sint32 = 85;
+	E_DefaultSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[40]
+	// optional sint64 default_sint64 = 86;
+	E_DefaultSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[41]
+	// optional fixed32 default_fixed32 = 87;
+	E_DefaultFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[42]
+	// optional fixed64 default_fixed64 = 88;
+	E_DefaultFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[43]
+	// optional sfixed32 default_sfixed32 = 89;
+	E_DefaultSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[44]
+	// optional sfixed64 default_sfixed64 = 80;
+	E_DefaultSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[45]
+	// optional float default_float = 91;
+	E_DefaultFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[46]
+	// optional double default_double = 92;
+	E_DefaultDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[47]
+	// optional bool default_bool = 93;
+	E_DefaultBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[48]
+	// optional string default_string = 94;
+	E_DefaultString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[49]
+	// optional bytes default_bytes = 95;
+	E_DefaultBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[50]
+	// optional hybrid.goproto.proto.testeditions.TestRequired single = 1000;
+	E_Single = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[51]
+	// repeated hybrid.goproto.proto.testeditions.TestRequired multi = 1001;
+	E_Multi = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[52]
+)
+
+// Extension fields to TestFeatureResolution.
+var (
+	// repeated int32 global_expanded_extension = 2;
+	E_GlobalExpandedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[53]
+	// repeated int32 global_packed_extension_overriden = 3;
+	E_GlobalPackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[54]
+	// repeated int32 message_expanded_extension = 4;
+	E_RepeatedFieldEncoding_MessageExpandedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[55]
+	// repeated int32 message_packed_extension_overriden = 5;
+	E_RepeatedFieldEncoding_MessagePackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[56]
+)
+
+var File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x21, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x46, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0x94, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x75, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72,
+	0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x2a, 0x08, 0x08,
+	0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc6, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f,
+	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d,
+	0x62, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8,
+	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61,
+	0x12, 0x7b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x21, 0x0a,
+	0x15, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f,
+	0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x08, 0x08, 0x02, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
+	0x22, 0x9e, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x32, 0x76, 0x0a, 0x1a, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x32, 0x8c, 0x01, 0x0a, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
+	0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01,
+	0x52, 0x1f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x6e, 0x3a, 0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5b,
+	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5f, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x11, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x11,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a,
+	0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
+	0x74, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5d, 0x0a, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x59, 0x0a, 0x0d, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x3a, 0x93, 0x01, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67,
+	0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x30, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0xb0, 0x01, 0x0a, 0x17, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0xa2, 0x01, 0x0a, 0x14,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+	0x3a, 0x5b, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5b, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x11, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5b,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5d, 0x0a, 0x0f, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x34,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x59, 0x0a, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2c,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x3a, 0x5b, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03,
+	0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x3a, 0x93, 0x01, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x30, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0xb0, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x42, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0xa2, 0x01, 0x0a, 0x14, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32,
+	0x3a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x5d, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31,
+	0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d,
+	0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52,
+	0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a,
+	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5f,
+	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34,
+	0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
+	0x60, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03, 0x2d,
+	0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x3a, 0x5f, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a,
+	0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x3a, 0x61, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x57, 0x20, 0x01, 0x28,
+	0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x58,
+	0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x63, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x64, 0x0a,
+	0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x50, 0x20, 0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d,
+	0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02,
+	0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x62, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x01,
+	0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x5d, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d,
+	0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x62, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x60, 0x0a, 0x0d, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52,
+	0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x7e, 0x0a,
+	0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe8, 0x07,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x3a, 0x7c, 0x0a,
+	0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x3a, 0x74, 0x0a, 0x19, 0x67,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x17, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+	0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x3a, 0x8a, 0x01, 0x0a, 0x21, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x1e,
+	0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x42, 0x5d,
+	0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x92, 0x03, 0x09, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x18, 0x02, 0x20, 0x03, 0x62, 0x08, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes = []any{
+	(*TestAllExtensions)(nil),               // 0: hybrid.goproto.proto.testeditions.TestAllExtensions
+	(*OptionalGroup)(nil),                   // 1: hybrid.goproto.proto.testeditions.OptionalGroup
+	(*RepeatedGroup)(nil),                   // 2: hybrid.goproto.proto.testeditions.RepeatedGroup
+	(*TestFeatureResolution)(nil),           // 3: hybrid.goproto.proto.testeditions.TestFeatureResolution
+	(*RepeatedFieldEncoding)(nil),           // 4: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding
+	(*TestAllExtensions_NestedMessage)(nil), // 5: hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	(TestAllTypes_NestedEnum)(0),            // 6: hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	(*TestRequired)(nil),                    // 7: hybrid.goproto.proto.testeditions.TestRequired
+}
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs = []int32{
+	5,  // 0: hybrid.goproto.proto.testeditions.OptionalGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	5,  // 1: hybrid.goproto.proto.testeditions.RepeatedGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	0,  // 2: hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage.corecursive:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 3: hybrid.goproto.proto.testeditions.optional_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 4: hybrid.goproto.proto.testeditions.optional_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 5: hybrid.goproto.proto.testeditions.optional_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 6: hybrid.goproto.proto.testeditions.optional_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 7: hybrid.goproto.proto.testeditions.optional_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 8: hybrid.goproto.proto.testeditions.optional_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 9: hybrid.goproto.proto.testeditions.optional_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 10: hybrid.goproto.proto.testeditions.optional_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 11: hybrid.goproto.proto.testeditions.optional_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 12: hybrid.goproto.proto.testeditions.optional_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 13: hybrid.goproto.proto.testeditions.optional_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 14: hybrid.goproto.proto.testeditions.optional_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 15: hybrid.goproto.proto.testeditions.optional_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 16: hybrid.goproto.proto.testeditions.optional_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 17: hybrid.goproto.proto.testeditions.optional_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 18: hybrid.goproto.proto.testeditions.optionalgroup:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 19: hybrid.goproto.proto.testeditions.optional_nested_message:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 20: hybrid.goproto.proto.testeditions.optional_nested_enum:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 21: hybrid.goproto.proto.testeditions.repeated_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 22: hybrid.goproto.proto.testeditions.repeated_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 23: hybrid.goproto.proto.testeditions.repeated_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 24: hybrid.goproto.proto.testeditions.repeated_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 25: hybrid.goproto.proto.testeditions.repeated_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 26: hybrid.goproto.proto.testeditions.repeated_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 27: hybrid.goproto.proto.testeditions.repeated_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 28: hybrid.goproto.proto.testeditions.repeated_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 29: hybrid.goproto.proto.testeditions.repeated_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 30: hybrid.goproto.proto.testeditions.repeated_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 31: hybrid.goproto.proto.testeditions.repeated_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 32: hybrid.goproto.proto.testeditions.repeated_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 33: hybrid.goproto.proto.testeditions.repeated_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 34: hybrid.goproto.proto.testeditions.repeated_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 35: hybrid.goproto.proto.testeditions.repeated_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 36: hybrid.goproto.proto.testeditions.repeatedgroup:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 37: hybrid.goproto.proto.testeditions.repeated_nested_message:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 38: hybrid.goproto.proto.testeditions.repeated_nested_enum:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 39: hybrid.goproto.proto.testeditions.default_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 40: hybrid.goproto.proto.testeditions.default_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 41: hybrid.goproto.proto.testeditions.default_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 42: hybrid.goproto.proto.testeditions.default_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 43: hybrid.goproto.proto.testeditions.default_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 44: hybrid.goproto.proto.testeditions.default_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 45: hybrid.goproto.proto.testeditions.default_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 46: hybrid.goproto.proto.testeditions.default_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 47: hybrid.goproto.proto.testeditions.default_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 48: hybrid.goproto.proto.testeditions.default_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 49: hybrid.goproto.proto.testeditions.default_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 50: hybrid.goproto.proto.testeditions.default_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 51: hybrid.goproto.proto.testeditions.default_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 52: hybrid.goproto.proto.testeditions.default_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 53: hybrid.goproto.proto.testeditions.default_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 54: hybrid.goproto.proto.testeditions.single:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	0,  // 55: hybrid.goproto.proto.testeditions.multi:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
+	3,  // 56: hybrid.goproto.proto.testeditions.global_expanded_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 57: hybrid.goproto.proto.testeditions.global_packed_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 58: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 59: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	1,  // 60: hybrid.goproto.proto.testeditions.optionalgroup:type_name -> hybrid.goproto.proto.testeditions.OptionalGroup
+	5,  // 61: hybrid.goproto.proto.testeditions.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	6,  // 62: hybrid.goproto.proto.testeditions.optional_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	2,  // 63: hybrid.goproto.proto.testeditions.repeatedgroup:type_name -> hybrid.goproto.proto.testeditions.RepeatedGroup
+	5,  // 64: hybrid.goproto.proto.testeditions.repeated_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	6,  // 65: hybrid.goproto.proto.testeditions.repeated_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	7,  // 66: hybrid.goproto.proto.testeditions.single:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	7,  // 67: hybrid.goproto.proto.testeditions.multi:type_name -> hybrid.goproto.proto.testeditions.TestRequired
+	68, // [68:68] is the sub-list for method output_type
+	68, // [68:68] is the sub-list for method input_type
+	60, // [60:68] is the sub-list for extension type_name
+	3,  // [3:60] is the sub-list for extension extendee
+	0,  // [0:3] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   6,
+			NumExtensions: 57,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto
new file mode 100644
index 0000000..637398c
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto
@@ -0,0 +1,129 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.testeditions;
+
+import "internal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+option features.repeated_field_encoding = EXPANDED;
+option features.utf8_validation = NONE;
+
+message TestAllExtensions {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllExtensions corecursive = 2;
+  }
+
+  extensions 1 to max;
+}
+
+extend TestAllExtensions {
+  int32 optional_int32 = 1;
+  int64 optional_int64 = 2;
+  uint32 optional_uint32 = 3;
+  uint64 optional_uint64 = 4;
+  sint32 optional_sint32 = 5;
+  sint64 optional_sint64 = 6;
+  fixed32 optional_fixed32 = 7;
+  fixed64 optional_fixed64 = 8;
+  sfixed32 optional_sfixed32 = 9;
+  sfixed64 optional_sfixed64 = 10;
+  float optional_float = 11;
+  double optional_double = 12;
+  bool optional_bool = 13;
+  string optional_string = 14;
+  bytes optional_bytes = 15;
+  OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
+
+  TestAllExtensions.NestedMessage optional_nested_message = 18;
+  TestAllTypes.NestedEnum optional_nested_enum = 21;
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+  repeated RepeatedGroup repeatedgroup = 46
+      [features.message_encoding = DELIMITED];
+
+  repeated TestAllExtensions.NestedMessage repeated_nested_message = 48;
+  repeated TestAllTypes.NestedEnum repeated_nested_enum = 51;
+  int32 default_int32 = 81 [default = 81];
+
+  int64 default_int64 = 82 [default = 82];
+
+  uint32 default_uint32 = 83 [default = 83];
+
+  uint64 default_uint64 = 84 [default = 84];
+
+  sint32 default_sint32 = 85 [default = -85];
+
+  sint64 default_sint64 = 86 [default = 86];
+
+  fixed32 default_fixed32 = 87 [default = 87];
+
+  fixed64 default_fixed64 = 88 [default = 88];
+
+  sfixed32 default_sfixed32 = 89 [default = 89];
+
+  sfixed64 default_sfixed64 = 80 [default = -90];
+
+  float default_float = 91 [default = 91.5];
+
+  double default_double = 92 [default = 9.2e4];
+
+  bool default_bool = 93 [default = true];
+
+  string default_string = 94 [default = "hello"];
+
+  bytes default_bytes = 95 [default = "world"];
+}
+
+message OptionalGroup {
+  int32 a = 17;
+  int32 same_field_number = 16;
+  TestAllExtensions.NestedMessage optional_nested_message = 1000;
+}
+
+message RepeatedGroup {
+  int32 a = 47;
+  TestAllExtensions.NestedMessage optional_nested_message = 1001;
+}
+
+extend TestAllExtensions {
+  TestRequired single = 1000;
+  repeated TestRequired multi = 1001;
+}
+
+message TestFeatureResolution {
+  extensions 2 to max;
+}
+
+extend TestFeatureResolution {
+  repeated int32 global_expanded_extension = 2;
+  repeated int32 global_packed_extension_overriden = 3
+      [features.repeated_field_encoding = PACKED];
+}
+
+message RepeatedFieldEncoding {
+  extend TestFeatureResolution {
+    repeated int32 message_expanded_extension = 4;
+    repeated int32 message_packed_extension_overriden = 5
+        [features.repeated_field_encoding = PACKED];
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.pb.go
new file mode 100644
index 0000000..1f23a72
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.pb.go
@@ -0,0 +1,217 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto
+
+package testeditions_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type OtherRepeatedFieldEncoding struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OtherRepeatedFieldEncoding) Reset() {
+	*x = OtherRepeatedFieldEncoding{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OtherRepeatedFieldEncoding) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OtherRepeatedFieldEncoding) ProtoMessage() {}
+
+func (x *OtherRepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type OtherRepeatedFieldEncoding_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 OtherRepeatedFieldEncoding_builder) Build() *OtherRepeatedFieldEncoding {
+	m0 := &OtherRepeatedFieldEncoding{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         6,
+		Name:          "hybrid.goproto.proto.testeditions.other_file_global_expanded_extension_overriden",
+		Tag:           "varint,6,rep,name=other_file_global_expanded_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         7,
+		Name:          "hybrid.goproto.proto.testeditions.other_file_global_packed_extension",
+		Tag:           "varint,7,rep,packed,name=other_file_global_packed_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         8,
+		Name:          "hybrid.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_expanded_extension_overriden",
+		Tag:           "varint,8,rep,name=other_file_message_expanded_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         9,
+		Name:          "hybrid.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_packed_extension",
+		Tag:           "varint,9,rep,packed,name=other_file_message_packed_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto",
+	},
+}
+
+// Extension fields to TestFeatureResolution.
+var (
+	// repeated int32 other_file_global_expanded_extension_overriden = 6;
+	E_OtherFileGlobalExpandedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes[0]
+	// repeated int32 other_file_global_packed_extension = 7;
+	E_OtherFileGlobalPackedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes[1]
+	// repeated int32 other_file_message_expanded_extension_overriden = 8;
+	E_OtherRepeatedFieldEncoding_OtherFileMessageExpandedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes[2]
+	// repeated int32 other_file_message_packed_extension = 9;
+	E_OtherRepeatedFieldEncoding_OtherFileMessagePackedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes[3]
+)
+
+var File_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x51, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x21, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x02, 0x0a, 0x1a,
+	0x4f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x32, 0xa4, 0x01, 0x0a, 0x2f, 0x6f,
+	0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65,
+	0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x02, 0x52, 0x2a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x6e, 0x32, 0x86, 0x01, 0x0a, 0x23, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1f, 0x6f, 0x74, 0x68, 0x65, 0x72,
+	0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0xa2, 0x01, 0x0a, 0x2e, 0x6f,
+	0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+	0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73,
+	0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x18, 0x02, 0x52, 0x29, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x47,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x3a,
+	0x84, 0x01, 0x0a, 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46,
+	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c,
+	0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x5b, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x07, 0xd2, 0x3e, 0x02, 0x10,
+	0x02, 0x18, 0x01, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_goTypes = []any{
+	(*OtherRepeatedFieldEncoding)(nil), // 0: hybrid.goproto.proto.testeditions.OtherRepeatedFieldEncoding
+	(*TestFeatureResolution)(nil),      // 1: hybrid.goproto.proto.testeditions.TestFeatureResolution
+}
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_depIdxs = []int32{
+	1, // 0: hybrid.goproto.proto.testeditions.other_file_global_expanded_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	1, // 1: hybrid.goproto.proto.testeditions.other_file_global_packed_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	1, // 2: hybrid.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_expanded_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	1, // 3: hybrid.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_packed_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
+	4, // [4:4] is the sub-list for method output_type
+	4, // [4:4] is the sub-list for method input_type
+	4, // [4:4] is the sub-list for extension type_name
+	0, // [0:4] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 4,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension2_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto b/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto
new file mode 100644
index 0000000..c2fd7df
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_extension2.hybrid.proto
@@ -0,0 +1,28 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.testeditions;
+
+import "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+option features.repeated_field_encoding = PACKED;
+
+extend TestFeatureResolution {
+  repeated int32 other_file_global_expanded_extension_overriden = 6
+      [features.repeated_field_encoding = EXPANDED];
+  repeated int32 other_file_global_packed_extension = 7;
+}
+
+message OtherRepeatedFieldEncoding {
+  extend TestFeatureResolution {
+    repeated int32 other_file_message_expanded_extension_overriden = 8
+        [features.repeated_field_encoding = EXPANDED];
+    repeated int32 other_file_message_packed_extension = 9;
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.pb.go
new file mode 100644
index 0000000..cc6e620
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.pb.go
@@ -0,0 +1,162 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.proto
+
+package testeditions_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ImportMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ImportMessage_builder) Build() *ImportMessage {
+	m0 := &ImportMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var File_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x4d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x21, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x1d, 0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a,
+	0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x59, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: hybrid.goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil), // 1: hybrid.goproto.proto.testeditions.ImportMessage
+}
+var file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_hybrid_test_import_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.proto b/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.proto
new file mode 100644
index 0000000..6b92287
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_import.hybrid.proto
@@ -0,0 +1,17 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package hybrid.goproto.proto.testeditions;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+
+message ImportMessage {}
+
+enum ImportEnum {
+  IMPORT_ZERO = 0;
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go
new file mode 100644
index 0000000..5021e4d
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go
@@ -0,0 +1,8731 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto
+
+package testeditions_opaque
+
+import (
+	enums_opaque "google.golang.org/protobuf/internal/testprotos/enums/enums_opaque"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type ForeignEnum int32
+
+const (
+	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
+	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
+	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
+	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
+)
+
+// Enum value maps for ForeignEnum.
+var (
+	ForeignEnum_name = map[int32]string{
+		0: "FOREIGN_ZERO",
+		4: "FOREIGN_FOO",
+		5: "FOREIGN_BAR",
+		6: "FOREIGN_BAZ",
+	}
+	ForeignEnum_value = map[string]int32{
+		"FOREIGN_ZERO": 0,
+		"FOREIGN_FOO":  4,
+		"FOREIGN_BAR":  5,
+		"FOREIGN_BAZ":  6,
+	}
+)
+
+func (x ForeignEnum) Enum() *ForeignEnum {
+	p := new(ForeignEnum)
+	*p = x
+	return p
+}
+
+func (x ForeignEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (ForeignEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes[0]
+}
+
+func (x ForeignEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes_NestedEnum int32
+
+const (
+	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
+	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
+	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
+	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
+)
+
+// Enum value maps for TestAllTypes_NestedEnum.
+var (
+	TestAllTypes_NestedEnum_name = map[int32]string{
+		0:  "FOO",
+		1:  "BAR",
+		2:  "BAZ",
+		-1: "NEG",
+	}
+	TestAllTypes_NestedEnum_value = map[string]int32{
+		"FOO": 0,
+		"BAR": 1,
+		"BAZ": 2,
+		"NEG": -1,
+	}
+)
+
+func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
+	p := new(TestAllTypes_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x TestAllTypes_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes[1].Descriptor()
+}
+
+func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes[1]
+}
+
+func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes struct {
+	state                                protoimpl.MessageState                 `protogen:"opaque.v1"`
+	xxx_hidden_SingularInt32             int32                                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
+	xxx_hidden_SingularInt64             int64                                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
+	xxx_hidden_SingularUint32            uint32                                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
+	xxx_hidden_SingularUint64            uint64                                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64" json:"singular_uint64,omitempty"`
+	xxx_hidden_SingularSint32            int32                                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32" json:"singular_sint32,omitempty"`
+	xxx_hidden_SingularSint64            int64                                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64" json:"singular_sint64,omitempty"`
+	xxx_hidden_SingularFixed32           uint32                                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32" json:"singular_fixed32,omitempty"`
+	xxx_hidden_SingularFixed64           uint64                                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64" json:"singular_fixed64,omitempty"`
+	xxx_hidden_SingularSfixed32          int32                                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32" json:"singular_sfixed32,omitempty"`
+	xxx_hidden_SingularSfixed64          int64                                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64" json:"singular_sfixed64,omitempty"`
+	xxx_hidden_SingularFloat             float32                                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat" json:"singular_float,omitempty"`
+	xxx_hidden_SingularDouble            float64                                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble" json:"singular_double,omitempty"`
+	xxx_hidden_SingularBool              bool                                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool" json:"singular_bool,omitempty"`
+	xxx_hidden_SingularString            string                                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString" json:"singular_string,omitempty"`
+	xxx_hidden_SingularBytes             []byte                                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes" json:"singular_bytes,omitempty"`
+	xxx_hidden_SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	xxx_hidden_SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	xxx_hidden_SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=opaque.goproto.proto.testeditions.ImportEnum" json:"singular_import_enum,omitempty"`
+	xxx_hidden_OptionalInt32             int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	xxx_hidden_OptionalInt64             int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	xxx_hidden_OptionalUint32            uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	xxx_hidden_OptionalUint64            uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	xxx_hidden_OptionalSint32            int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	xxx_hidden_OptionalSint64            int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	xxx_hidden_OptionalFixed32           uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	xxx_hidden_OptionalFixed64           uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	xxx_hidden_OptionalSfixed32          int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	xxx_hidden_OptionalSfixed64          int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	xxx_hidden_OptionalFloat             float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	xxx_hidden_OptionalDouble            float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	xxx_hidden_OptionalBool              bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	xxx_hidden_OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	xxx_hidden_OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	xxx_hidden_Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	xxx_hidden_NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited" json:"not_group_like_delimited,omitempty"`
+	xxx_hidden_OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	xxx_hidden_OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
+	xxx_hidden_OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage" json:"optional_import_message,omitempty"`
+	xxx_hidden_OptionalNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
+	xxx_hidden_OptionalForeignEnum       ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
+	xxx_hidden_OptionalImportEnum        ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=opaque.goproto.proto.testeditions.ImportEnum" json:"optional_import_enum,omitempty"`
+	xxx_hidden_OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage" json:"optional_lazy_nested_message,omitempty"`
+	xxx_hidden_RepeatedInt32             []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	xxx_hidden_RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	xxx_hidden_RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	xxx_hidden_RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	xxx_hidden_RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	xxx_hidden_RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	xxx_hidden_RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	xxx_hidden_RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	xxx_hidden_RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	xxx_hidden_RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	xxx_hidden_RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	xxx_hidden_RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	xxx_hidden_RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	xxx_hidden_RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	xxx_hidden_RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	xxx_hidden_Repeatedgroup             *[]*TestAllTypes_RepeatedGroup         `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	xxx_hidden_RepeatedNestedMessage     *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
+	xxx_hidden_RepeatedForeignMessage    *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
+	xxx_hidden_RepeatedImportmessage     *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage" json:"repeated_importmessage,omitempty"`
+	xxx_hidden_RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	xxx_hidden_RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	xxx_hidden_RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=opaque.goproto.proto.testeditions.ImportEnum" json:"repeated_importenum,omitempty"`
+	xxx_hidden_MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapInt64Int64             map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint32Uint32           map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint64Uint64           map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapSint32Sint32           map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	xxx_hidden_MapSint64Sint64           map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	xxx_hidden_MapFixed32Fixed32         map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_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"`
+	xxx_hidden_MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringNestedEnum       map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_DefaultInt32              int32                                  `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81" json:"default_int32,omitempty"`
+	xxx_hidden_DefaultInt64              int64                                  `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82" json:"default_int64,omitempty"`
+	xxx_hidden_DefaultUint32             uint32                                 `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83" json:"default_uint32,omitempty"`
+	xxx_hidden_DefaultUint64             uint64                                 `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84" json:"default_uint64,omitempty"`
+	xxx_hidden_DefaultSint32             int32                                  `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85" json:"default_sint32,omitempty"`
+	xxx_hidden_DefaultSint64             int64                                  `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86" json:"default_sint64,omitempty"`
+	xxx_hidden_DefaultFixed32            uint32                                 `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87" json:"default_fixed32,omitempty"`
+	xxx_hidden_DefaultFixed64            uint64                                 `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88" json:"default_fixed64,omitempty"`
+	xxx_hidden_DefaultSfixed32           int32                                  `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89" json:"default_sfixed32,omitempty"`
+	xxx_hidden_DefaultSfixed64           int64                                  `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90" json:"default_sfixed64,omitempty"`
+	xxx_hidden_DefaultFloat              float32                                `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5" json:"default_float,omitempty"`
+	xxx_hidden_DefaultDouble             float64                                `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000" json:"default_double,omitempty"`
+	xxx_hidden_DefaultBool               bool                                   `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
+	xxx_hidden_DefaultString             *string                                `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
+	xxx_hidden_DefaultBytes              []byte                                 `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
+	xxx_hidden_DefaultNestedEnum         TestAllTypes_NestedEnum                `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
+	xxx_hidden_DefaultForeignEnum        ForeignEnum                            `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
+	xxx_hidden_OneofField                isTestAllTypes_OneofField              `protobuf_oneof:"oneof_field"`
+	xxx_hidden_OneofOptional             isTestAllTypes_OneofOptional           `protobuf_oneof:"oneof_optional"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [4]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+// Default values for TestAllTypes fields.
+const (
+	Default_TestAllTypes_DefaultInt32       = int32(81)
+	Default_TestAllTypes_DefaultInt64       = int64(82)
+	Default_TestAllTypes_DefaultUint32      = uint32(83)
+	Default_TestAllTypes_DefaultUint64      = uint64(84)
+	Default_TestAllTypes_DefaultSint32      = int32(-85)
+	Default_TestAllTypes_DefaultSint64      = int64(86)
+	Default_TestAllTypes_DefaultFixed32     = uint32(87)
+	Default_TestAllTypes_DefaultFixed64     = uint64(88)
+	Default_TestAllTypes_DefaultSfixed32    = int32(89)
+	Default_TestAllTypes_DefaultSfixed64    = int64(-90)
+	Default_TestAllTypes_DefaultFloat       = float32(91.5)
+	Default_TestAllTypes_DefaultDouble      = float64(92000)
+	Default_TestAllTypes_DefaultBool        = bool(true)
+	Default_TestAllTypes_DefaultString      = string("hello")
+	Default_TestAllTypes_DefaultNestedEnum  = TestAllTypes_BAR
+	Default_TestAllTypes_DefaultForeignEnum = ForeignEnum_FOREIGN_BAR
+)
+
+// Default values for TestAllTypes fields.
+var (
+	Default_TestAllTypes_DefaultBytes = []byte("world")
+)
+
+func (x *TestAllTypes) Reset() {
+	*x = TestAllTypes{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes) ProtoMessage() {}
+
+func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes) GetSingularInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_SingularDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularBool() bool {
+	if x != nil {
+		return x.xxx_hidden_SingularBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetSingularString() string {
+	if x != nil {
+		return x.xxx_hidden_SingularString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetSingularBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_SingularBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalBool() bool {
+	if x != nil {
+		return x.xxx_hidden_OptionalBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOptionalString() string {
+	if x != nil {
+		if x.xxx_hidden_OptionalString != nil {
+			return *x.xxx_hidden_OptionalString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOptionalBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_OptionalBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalgroup() *TestAllTypes_OptionalGroup {
+	if x != nil {
+		return x.xxx_hidden_Optionalgroup
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetNotGroupLikeDelimited() *TestAllTypes_OptionalGroup {
+	if x != nil {
+		return x.xxx_hidden_NotGroupLikeDelimited
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 38) {
+			return x.xxx_hidden_OptionalNestedEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 39) {
+			return x.xxx_hidden_OptionalForeignEnum
+		}
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 40) {
+			return x.xxx_hidden_OptionalImportEnum
+		}
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalLazyNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 41) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_OptionalLazyNestedMessage) {
+				protoimpl.X.UnmarshalField(x, 24)
+			}
+			var rv *TestAllTypes_NestedMessage
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_OptionalLazyNestedMessage), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFloat() []float32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFloat
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedDouble() []float64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedDouble
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBool() []bool {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedString() []string {
+	if x != nil {
+		return x.xxx_hidden_RepeatedString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedgroup() []*TestAllTypes_RepeatedGroup {
+	if x != nil {
+		if x.xxx_hidden_Repeatedgroup != nil {
+			return *x.xxx_hidden_Repeatedgroup
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedNestedMessage != nil {
+			return *x.xxx_hidden_RepeatedNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedForeignMessage != nil {
+			return *x.xxx_hidden_RepeatedForeignMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedImportmessage != nil {
+			return *x.xxx_hidden_RepeatedImportmessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedForeignEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedImportenum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Int32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt64Int64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapUint32Uint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapUint64Uint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSint32Sint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSint64Sint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed32Fixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed64Fixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed32Sfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed64Sfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Float
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Double
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
+	if x != nil {
+		return x.xxx_hidden_MapBoolBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringString() map[string]string {
+	if x != nil {
+		return x.xxx_hidden_MapStringString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
+	if x != nil {
+		return x.xxx_hidden_MapStringBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetDefaultInt32() int32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 81) {
+			return x.xxx_hidden_DefaultInt32
+		}
+	}
+	return Default_TestAllTypes_DefaultInt32
+}
+
+func (x *TestAllTypes) GetDefaultInt64() int64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 82) {
+			return x.xxx_hidden_DefaultInt64
+		}
+	}
+	return Default_TestAllTypes_DefaultInt64
+}
+
+func (x *TestAllTypes) GetDefaultUint32() uint32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 83) {
+			return x.xxx_hidden_DefaultUint32
+		}
+	}
+	return Default_TestAllTypes_DefaultUint32
+}
+
+func (x *TestAllTypes) GetDefaultUint64() uint64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 84) {
+			return x.xxx_hidden_DefaultUint64
+		}
+	}
+	return Default_TestAllTypes_DefaultUint64
+}
+
+func (x *TestAllTypes) GetDefaultSint32() int32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 85) {
+			return x.xxx_hidden_DefaultSint32
+		}
+	}
+	return Default_TestAllTypes_DefaultSint32
+}
+
+func (x *TestAllTypes) GetDefaultSint64() int64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 86) {
+			return x.xxx_hidden_DefaultSint64
+		}
+	}
+	return Default_TestAllTypes_DefaultSint64
+}
+
+func (x *TestAllTypes) GetDefaultFixed32() uint32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 87) {
+			return x.xxx_hidden_DefaultFixed32
+		}
+	}
+	return Default_TestAllTypes_DefaultFixed32
+}
+
+func (x *TestAllTypes) GetDefaultFixed64() uint64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 88) {
+			return x.xxx_hidden_DefaultFixed64
+		}
+	}
+	return Default_TestAllTypes_DefaultFixed64
+}
+
+func (x *TestAllTypes) GetDefaultSfixed32() int32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 89) {
+			return x.xxx_hidden_DefaultSfixed32
+		}
+	}
+	return Default_TestAllTypes_DefaultSfixed32
+}
+
+func (x *TestAllTypes) GetDefaultSfixed64() int64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 90) {
+			return x.xxx_hidden_DefaultSfixed64
+		}
+	}
+	return Default_TestAllTypes_DefaultSfixed64
+}
+
+func (x *TestAllTypes) GetDefaultFloat() float32 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 91) {
+			return x.xxx_hidden_DefaultFloat
+		}
+	}
+	return Default_TestAllTypes_DefaultFloat
+}
+
+func (x *TestAllTypes) GetDefaultDouble() float64 {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 92) {
+			return x.xxx_hidden_DefaultDouble
+		}
+	}
+	return Default_TestAllTypes_DefaultDouble
+}
+
+func (x *TestAllTypes) GetDefaultBool() bool {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 93) {
+			return x.xxx_hidden_DefaultBool
+		}
+	}
+	return Default_TestAllTypes_DefaultBool
+}
+
+func (x *TestAllTypes) GetDefaultString() string {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 94) {
+			if x.xxx_hidden_DefaultString != nil {
+				return *x.xxx_hidden_DefaultString
+			}
+			return Default_TestAllTypes_DefaultString
+		}
+	}
+	return Default_TestAllTypes_DefaultString
+}
+
+func (x *TestAllTypes) GetDefaultBytes() []byte {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[2]), 95) {
+			return x.xxx_hidden_DefaultBytes
+		}
+	}
+	return append([]byte(nil), Default_TestAllTypes_DefaultBytes...)
+}
+
+func (x *TestAllTypes) GetDefaultNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[3]), 96) {
+			return x.xxx_hidden_DefaultNestedEnum
+		}
+	}
+	return Default_TestAllTypes_DefaultNestedEnum
+}
+
+func (x *TestAllTypes) GetDefaultForeignEnum() ForeignEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[3]), 97) {
+			return x.xxx_hidden_DefaultForeignEnum
+		}
+	}
+	return Default_TestAllTypes_DefaultForeignEnum
+}
+
+func (x *TestAllTypes) GetOneofUint32() uint32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofString() string {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+			return x.OneofString
+		}
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOneofBytes() []byte {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofBool() bool {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOneofUint64() uint64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofFloat() float32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofDouble() float64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_Oneofgroup); ok {
+			return x.Oneofgroup
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofOptional.(*testAllTypes_OneofOptionalUint32); ok {
+			return x.OneofOptionalUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) SetSingularInt32(v int32) {
+	x.xxx_hidden_SingularInt32 = v
+}
+
+func (x *TestAllTypes) SetSingularInt64(v int64) {
+	x.xxx_hidden_SingularInt64 = v
+}
+
+func (x *TestAllTypes) SetSingularUint32(v uint32) {
+	x.xxx_hidden_SingularUint32 = v
+}
+
+func (x *TestAllTypes) SetSingularUint64(v uint64) {
+	x.xxx_hidden_SingularUint64 = v
+}
+
+func (x *TestAllTypes) SetSingularSint32(v int32) {
+	x.xxx_hidden_SingularSint32 = v
+}
+
+func (x *TestAllTypes) SetSingularSint64(v int64) {
+	x.xxx_hidden_SingularSint64 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed32(v uint32) {
+	x.xxx_hidden_SingularFixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed64(v uint64) {
+	x.xxx_hidden_SingularFixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed32(v int32) {
+	x.xxx_hidden_SingularSfixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed64(v int64) {
+	x.xxx_hidden_SingularSfixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularFloat(v float32) {
+	x.xxx_hidden_SingularFloat = v
+}
+
+func (x *TestAllTypes) SetSingularDouble(v float64) {
+	x.xxx_hidden_SingularDouble = v
+}
+
+func (x *TestAllTypes) SetSingularBool(v bool) {
+	x.xxx_hidden_SingularBool = v
+}
+
+func (x *TestAllTypes) SetSingularString(v string) {
+	x.xxx_hidden_SingularString = v
+}
+
+func (x *TestAllTypes) SetSingularBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_SingularBytes = v
+}
+
+func (x *TestAllTypes) SetSingularNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_SingularNestedEnum = v
+}
+
+func (x *TestAllTypes) SetSingularForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_SingularForeignEnum = v
+}
+
+func (x *TestAllTypes) SetSingularImportEnum(v ImportEnum) {
+	x.xxx_hidden_SingularImportEnum = v
+}
+
+func (x *TestAllTypes) SetOptionalInt32(v int32) {
+	x.xxx_hidden_OptionalInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 18, 100)
+}
+
+func (x *TestAllTypes) SetOptionalInt64(v int64) {
+	x.xxx_hidden_OptionalInt64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 19, 100)
+}
+
+func (x *TestAllTypes) SetOptionalUint32(v uint32) {
+	x.xxx_hidden_OptionalUint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 20, 100)
+}
+
+func (x *TestAllTypes) SetOptionalUint64(v uint64) {
+	x.xxx_hidden_OptionalUint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 21, 100)
+}
+
+func (x *TestAllTypes) SetOptionalSint32(v int32) {
+	x.xxx_hidden_OptionalSint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 22, 100)
+}
+
+func (x *TestAllTypes) SetOptionalSint64(v int64) {
+	x.xxx_hidden_OptionalSint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 23, 100)
+}
+
+func (x *TestAllTypes) SetOptionalFixed32(v uint32) {
+	x.xxx_hidden_OptionalFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 24, 100)
+}
+
+func (x *TestAllTypes) SetOptionalFixed64(v uint64) {
+	x.xxx_hidden_OptionalFixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 25, 100)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed32(v int32) {
+	x.xxx_hidden_OptionalSfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 26, 100)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed64(v int64) {
+	x.xxx_hidden_OptionalSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 27, 100)
+}
+
+func (x *TestAllTypes) SetOptionalFloat(v float32) {
+	x.xxx_hidden_OptionalFloat = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 28, 100)
+}
+
+func (x *TestAllTypes) SetOptionalDouble(v float64) {
+	x.xxx_hidden_OptionalDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 29, 100)
+}
+
+func (x *TestAllTypes) SetOptionalBool(v bool) {
+	x.xxx_hidden_OptionalBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 30, 100)
+}
+
+func (x *TestAllTypes) SetOptionalString(v string) {
+	x.xxx_hidden_OptionalString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 31, 100)
+}
+
+func (x *TestAllTypes) SetOptionalBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OptionalBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 32, 100)
+}
+
+func (x *TestAllTypes) SetOptionalgroup(v *TestAllTypes_OptionalGroup) {
+	x.xxx_hidden_Optionalgroup = v
+}
+
+func (x *TestAllTypes) SetNotGroupLikeDelimited(v *TestAllTypes_OptionalGroup) {
+	x.xxx_hidden_NotGroupLikeDelimited = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalForeignMessage(v *ForeignMessage) {
+	x.xxx_hidden_OptionalForeignMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalImportMessage(v *ImportMessage) {
+	x.xxx_hidden_OptionalImportMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OptionalNestedEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 38, 100)
+}
+
+func (x *TestAllTypes) SetOptionalForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_OptionalForeignEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 39, 100)
+}
+
+func (x *TestAllTypes) SetOptionalImportEnum(v ImportEnum) {
+	x.xxx_hidden_OptionalImportEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 40, 100)
+}
+
+func (x *TestAllTypes) SetOptionalLazyNestedMessage(v *TestAllTypes_NestedMessage) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_OptionalLazyNestedMessage, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 41)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[1]), 41, 100)
+	}
+}
+
+func (x *TestAllTypes) SetRepeatedInt32(v []int32) {
+	x.xxx_hidden_RepeatedInt32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt64(v []int64) {
+	x.xxx_hidden_RepeatedInt64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint32(v []uint32) {
+	x.xxx_hidden_RepeatedUint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint64(v []uint64) {
+	x.xxx_hidden_RepeatedUint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint32(v []int32) {
+	x.xxx_hidden_RepeatedSint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint64(v []int64) {
+	x.xxx_hidden_RepeatedSint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed32(v []uint32) {
+	x.xxx_hidden_RepeatedFixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed64(v []uint64) {
+	x.xxx_hidden_RepeatedFixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed32(v []int32) {
+	x.xxx_hidden_RepeatedSfixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed64(v []int64) {
+	x.xxx_hidden_RepeatedSfixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFloat(v []float32) {
+	x.xxx_hidden_RepeatedFloat = v
+}
+
+func (x *TestAllTypes) SetRepeatedDouble(v []float64) {
+	x.xxx_hidden_RepeatedDouble = v
+}
+
+func (x *TestAllTypes) SetRepeatedBool(v []bool) {
+	x.xxx_hidden_RepeatedBool = v
+}
+
+func (x *TestAllTypes) SetRepeatedString(v []string) {
+	x.xxx_hidden_RepeatedString = v
+}
+
+func (x *TestAllTypes) SetRepeatedBytes(v [][]byte) {
+	x.xxx_hidden_RepeatedBytes = v
+}
+
+func (x *TestAllTypes) SetRepeatedgroup(v []*TestAllTypes_RepeatedGroup) {
+	x.xxx_hidden_Repeatedgroup = &v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedMessage(v []*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_RepeatedNestedMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignMessage(v []*ForeignMessage) {
+	x.xxx_hidden_RepeatedForeignMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedImportmessage(v []*ImportMessage) {
+	x.xxx_hidden_RepeatedImportmessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedEnum(v []TestAllTypes_NestedEnum) {
+	x.xxx_hidden_RepeatedNestedEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignEnum(v []ForeignEnum) {
+	x.xxx_hidden_RepeatedForeignEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportenum(v []ImportEnum) {
+	x.xxx_hidden_RepeatedImportenum = v
+}
+
+func (x *TestAllTypes) SetMapInt32Int32(v map[int32]int32) {
+	x.xxx_hidden_MapInt32Int32 = v
+}
+
+func (x *TestAllTypes) SetMapInt64Int64(v map[int64]int64) {
+	x.xxx_hidden_MapInt64Int64 = v
+}
+
+func (x *TestAllTypes) SetMapUint32Uint32(v map[uint32]uint32) {
+	x.xxx_hidden_MapUint32Uint32 = v
+}
+
+func (x *TestAllTypes) SetMapUint64Uint64(v map[uint64]uint64) {
+	x.xxx_hidden_MapUint64Uint64 = v
+}
+
+func (x *TestAllTypes) SetMapSint32Sint32(v map[int32]int32) {
+	x.xxx_hidden_MapSint32Sint32 = v
+}
+
+func (x *TestAllTypes) SetMapSint64Sint64(v map[int64]int64) {
+	x.xxx_hidden_MapSint64Sint64 = v
+}
+
+func (x *TestAllTypes) SetMapFixed32Fixed32(v map[uint32]uint32) {
+	x.xxx_hidden_MapFixed32Fixed32 = v
+}
+
+func (x *TestAllTypes) SetMapFixed64Fixed64(v map[uint64]uint64) {
+	x.xxx_hidden_MapFixed64Fixed64 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed32Sfixed32(v map[int32]int32) {
+	x.xxx_hidden_MapSfixed32Sfixed32 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed64Sfixed64(v map[int64]int64) {
+	x.xxx_hidden_MapSfixed64Sfixed64 = v
+}
+
+func (x *TestAllTypes) SetMapInt32Float(v map[int32]float32) {
+	x.xxx_hidden_MapInt32Float = v
+}
+
+func (x *TestAllTypes) SetMapInt32Double(v map[int32]float64) {
+	x.xxx_hidden_MapInt32Double = v
+}
+
+func (x *TestAllTypes) SetMapBoolBool(v map[bool]bool) {
+	x.xxx_hidden_MapBoolBool = v
+}
+
+func (x *TestAllTypes) SetMapStringString(v map[string]string) {
+	x.xxx_hidden_MapStringString = v
+}
+
+func (x *TestAllTypes) SetMapStringBytes(v map[string][]byte) {
+	x.xxx_hidden_MapStringBytes = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedMessage(v map[string]*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_MapStringNestedMessage = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedEnum(v map[string]TestAllTypes_NestedEnum) {
+	x.xxx_hidden_MapStringNestedEnum = v
+}
+
+func (x *TestAllTypes) SetDefaultInt32(v int32) {
+	x.xxx_hidden_DefaultInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 81, 100)
+}
+
+func (x *TestAllTypes) SetDefaultInt64(v int64) {
+	x.xxx_hidden_DefaultInt64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 82, 100)
+}
+
+func (x *TestAllTypes) SetDefaultUint32(v uint32) {
+	x.xxx_hidden_DefaultUint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 83, 100)
+}
+
+func (x *TestAllTypes) SetDefaultUint64(v uint64) {
+	x.xxx_hidden_DefaultUint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 84, 100)
+}
+
+func (x *TestAllTypes) SetDefaultSint32(v int32) {
+	x.xxx_hidden_DefaultSint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 85, 100)
+}
+
+func (x *TestAllTypes) SetDefaultSint64(v int64) {
+	x.xxx_hidden_DefaultSint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 86, 100)
+}
+
+func (x *TestAllTypes) SetDefaultFixed32(v uint32) {
+	x.xxx_hidden_DefaultFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 87, 100)
+}
+
+func (x *TestAllTypes) SetDefaultFixed64(v uint64) {
+	x.xxx_hidden_DefaultFixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 88, 100)
+}
+
+func (x *TestAllTypes) SetDefaultSfixed32(v int32) {
+	x.xxx_hidden_DefaultSfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 89, 100)
+}
+
+func (x *TestAllTypes) SetDefaultSfixed64(v int64) {
+	x.xxx_hidden_DefaultSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 90, 100)
+}
+
+func (x *TestAllTypes) SetDefaultFloat(v float32) {
+	x.xxx_hidden_DefaultFloat = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 91, 100)
+}
+
+func (x *TestAllTypes) SetDefaultDouble(v float64) {
+	x.xxx_hidden_DefaultDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 92, 100)
+}
+
+func (x *TestAllTypes) SetDefaultBool(v bool) {
+	x.xxx_hidden_DefaultBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 93, 100)
+}
+
+func (x *TestAllTypes) SetDefaultString(v string) {
+	x.xxx_hidden_DefaultString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 94, 100)
+}
+
+func (x *TestAllTypes) SetDefaultBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_DefaultBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[2]), 95, 100)
+}
+
+func (x *TestAllTypes) SetDefaultNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_DefaultNestedEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[3]), 96, 100)
+}
+
+func (x *TestAllTypes) SetDefaultForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_DefaultForeignEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[3]), 97, 100)
+}
+
+func (x *TestAllTypes) SetOneofUint32(v uint32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{v}
+}
+
+func (x *TestAllTypes) SetOneofNestedMessage(v *TestAllTypes_NestedMessage) {
+	if v == nil {
+		x.xxx_hidden_OneofField = nil
+		return
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{v}
+}
+
+func (x *TestAllTypes) SetOneofString(v string) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofString{v}
+}
+
+func (x *TestAllTypes) SetOneofBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{v}
+}
+
+func (x *TestAllTypes) SetOneofBool(v bool) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBool{v}
+}
+
+func (x *TestAllTypes) SetOneofUint64(v uint64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{v}
+}
+
+func (x *TestAllTypes) SetOneofFloat(v float32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{v}
+}
+
+func (x *TestAllTypes) SetOneofDouble(v float64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{v}
+}
+
+func (x *TestAllTypes) SetOneofEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{v}
+}
+
+func (x *TestAllTypes) SetOneofgroup(v *TestAllTypes_OneofGroup) {
+	if v == nil {
+		x.xxx_hidden_OneofField = nil
+		return
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_Oneofgroup{v}
+}
+
+func (x *TestAllTypes) SetOneofOptionalUint32(v uint32) {
+	x.xxx_hidden_OneofOptional = &testAllTypes_OneofOptionalUint32{v}
+}
+
+func (x *TestAllTypes) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 18)
+}
+
+func (x *TestAllTypes) HasOptionalInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 19)
+}
+
+func (x *TestAllTypes) HasOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 20)
+}
+
+func (x *TestAllTypes) HasOptionalUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 21)
+}
+
+func (x *TestAllTypes) HasOptionalSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 22)
+}
+
+func (x *TestAllTypes) HasOptionalSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 23)
+}
+
+func (x *TestAllTypes) HasOptionalFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 24)
+}
+
+func (x *TestAllTypes) HasOptionalFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 25)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 26)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 27)
+}
+
+func (x *TestAllTypes) HasOptionalFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 28)
+}
+
+func (x *TestAllTypes) HasOptionalDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 29)
+}
+
+func (x *TestAllTypes) HasOptionalBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 30)
+}
+
+func (x *TestAllTypes) HasOptionalString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 31)
+}
+
+func (x *TestAllTypes) HasOptionalBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 32)
+}
+
+func (x *TestAllTypes) HasOptionalgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Optionalgroup != nil
+}
+
+func (x *TestAllTypes) HasNotGroupLikeDelimited() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_NotGroupLikeDelimited != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 38)
+}
+
+func (x *TestAllTypes) HasOptionalForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 39)
+}
+
+func (x *TestAllTypes) HasOptionalImportEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 40)
+}
+
+func (x *TestAllTypes) HasOptionalLazyNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 41)
+}
+
+func (x *TestAllTypes) HasDefaultInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 81)
+}
+
+func (x *TestAllTypes) HasDefaultInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 82)
+}
+
+func (x *TestAllTypes) HasDefaultUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 83)
+}
+
+func (x *TestAllTypes) HasDefaultUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 84)
+}
+
+func (x *TestAllTypes) HasDefaultSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 85)
+}
+
+func (x *TestAllTypes) HasDefaultSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 86)
+}
+
+func (x *TestAllTypes) HasDefaultFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 87)
+}
+
+func (x *TestAllTypes) HasDefaultFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 88)
+}
+
+func (x *TestAllTypes) HasDefaultSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 89)
+}
+
+func (x *TestAllTypes) HasDefaultSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 90)
+}
+
+func (x *TestAllTypes) HasDefaultFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 91)
+}
+
+func (x *TestAllTypes) HasDefaultDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 92)
+}
+
+func (x *TestAllTypes) HasDefaultBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 93)
+}
+
+func (x *TestAllTypes) HasDefaultString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 94)
+}
+
+func (x *TestAllTypes) HasDefaultBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[2]), 95)
+}
+
+func (x *TestAllTypes) HasDefaultNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[3]), 96)
+}
+
+func (x *TestAllTypes) HasDefaultForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[3]), 97)
+}
+
+func (x *TestAllTypes) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OneofField != nil
+}
+
+func (x *TestAllTypes) HasOneofUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofString() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBytes() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBool() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofUint64() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofFloat() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofDouble() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofEnum() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofgroup() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_Oneofgroup)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofOptional() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OneofOptional != nil
+}
+
+func (x *TestAllTypes) HasOneofOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofOptional.(*testAllTypes_OneofOptionalUint32)
+	return ok
+}
+
+func (x *TestAllTypes) ClearOptionalInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 18)
+	x.xxx_hidden_OptionalInt32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 19)
+	x.xxx_hidden_OptionalInt64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 20)
+	x.xxx_hidden_OptionalUint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 21)
+	x.xxx_hidden_OptionalUint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 22)
+	x.xxx_hidden_OptionalSint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 23)
+	x.xxx_hidden_OptionalSint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 24)
+	x.xxx_hidden_OptionalFixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 25)
+	x.xxx_hidden_OptionalFixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 26)
+	x.xxx_hidden_OptionalSfixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 27)
+	x.xxx_hidden_OptionalSfixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 28)
+	x.xxx_hidden_OptionalFloat = 0
+}
+
+func (x *TestAllTypes) ClearOptionalDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 29)
+	x.xxx_hidden_OptionalDouble = 0
+}
+
+func (x *TestAllTypes) ClearOptionalBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 30)
+	x.xxx_hidden_OptionalBool = false
+}
+
+func (x *TestAllTypes) ClearOptionalString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 31)
+	x.xxx_hidden_OptionalString = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 32)
+	x.xxx_hidden_OptionalBytes = nil
+}
+
+func (x *TestAllTypes) ClearOptionalgroup() {
+	x.xxx_hidden_Optionalgroup = nil
+}
+
+func (x *TestAllTypes) ClearNotGroupLikeDelimited() {
+	x.xxx_hidden_NotGroupLikeDelimited = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignMessage() {
+	x.xxx_hidden_OptionalForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportMessage() {
+	x.xxx_hidden_OptionalImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 38)
+	x.xxx_hidden_OptionalNestedEnum = TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) ClearOptionalForeignEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 39)
+	x.xxx_hidden_OptionalForeignEnum = ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) ClearOptionalImportEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 40)
+	x.xxx_hidden_OptionalImportEnum = ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) ClearOptionalLazyNestedMessage() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 41)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_OptionalLazyNestedMessage, (*TestAllTypes_NestedMessage)(nil))
+}
+
+func (x *TestAllTypes) ClearDefaultInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 81)
+}
+
+func (x *TestAllTypes) ClearDefaultInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 82)
+}
+
+func (x *TestAllTypes) ClearDefaultUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 83)
+}
+
+func (x *TestAllTypes) ClearDefaultUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 84)
+}
+
+func (x *TestAllTypes) ClearDefaultSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 85)
+}
+
+func (x *TestAllTypes) ClearDefaultSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 86)
+}
+
+func (x *TestAllTypes) ClearDefaultFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 87)
+}
+
+func (x *TestAllTypes) ClearDefaultFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 88)
+}
+
+func (x *TestAllTypes) ClearDefaultSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 89)
+}
+
+func (x *TestAllTypes) ClearDefaultSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 90)
+}
+
+func (x *TestAllTypes) ClearDefaultFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 91)
+}
+
+func (x *TestAllTypes) ClearDefaultDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 92)
+}
+
+func (x *TestAllTypes) ClearDefaultBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 93)
+}
+
+func (x *TestAllTypes) ClearDefaultString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 94)
+}
+
+func (x *TestAllTypes) ClearDefaultBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[2]), 95)
+}
+
+func (x *TestAllTypes) ClearDefaultNestedEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[3]), 96)
+}
+
+func (x *TestAllTypes) ClearDefaultForeignEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[3]), 97)
+}
+
+func (x *TestAllTypes) ClearOneofField() {
+	x.xxx_hidden_OneofField = nil
+}
+
+func (x *TestAllTypes) ClearOneofUint32() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofNestedMessage() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofString() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBytes() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBool() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofUint64() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofFloat() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofDouble() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofEnum() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofgroup() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_Oneofgroup); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofOptional() {
+	x.xxx_hidden_OneofOptional = nil
+}
+
+func (x *TestAllTypes) ClearOneofOptionalUint32() {
+	if _, ok := x.xxx_hidden_OneofOptional.(*testAllTypes_OneofOptionalUint32); ok {
+		x.xxx_hidden_OneofOptional = nil
+	}
+}
+
+const TestAllTypes_OneofField_not_set_case case_TestAllTypes_OneofField = 0
+const TestAllTypes_OneofUint32_case case_TestAllTypes_OneofField = 111
+const TestAllTypes_OneofNestedMessage_case case_TestAllTypes_OneofField = 112
+const TestAllTypes_OneofString_case case_TestAllTypes_OneofField = 113
+const TestAllTypes_OneofBytes_case case_TestAllTypes_OneofField = 114
+const TestAllTypes_OneofBool_case case_TestAllTypes_OneofField = 115
+const TestAllTypes_OneofUint64_case case_TestAllTypes_OneofField = 116
+const TestAllTypes_OneofFloat_case case_TestAllTypes_OneofField = 117
+const TestAllTypes_OneofDouble_case case_TestAllTypes_OneofField = 118
+const TestAllTypes_OneofEnum_case case_TestAllTypes_OneofField = 119
+const TestAllTypes_Oneofgroup_case case_TestAllTypes_OneofField = 121
+
+func (x *TestAllTypes) WhichOneofField() case_TestAllTypes_OneofField {
+	if x == nil {
+		return TestAllTypes_OneofField_not_set_case
+	}
+	switch x.xxx_hidden_OneofField.(type) {
+	case *testAllTypes_OneofUint32:
+		return TestAllTypes_OneofUint32_case
+	case *testAllTypes_OneofNestedMessage:
+		return TestAllTypes_OneofNestedMessage_case
+	case *testAllTypes_OneofString:
+		return TestAllTypes_OneofString_case
+	case *testAllTypes_OneofBytes:
+		return TestAllTypes_OneofBytes_case
+	case *testAllTypes_OneofBool:
+		return TestAllTypes_OneofBool_case
+	case *testAllTypes_OneofUint64:
+		return TestAllTypes_OneofUint64_case
+	case *testAllTypes_OneofFloat:
+		return TestAllTypes_OneofFloat_case
+	case *testAllTypes_OneofDouble:
+		return TestAllTypes_OneofDouble_case
+	case *testAllTypes_OneofEnum:
+		return TestAllTypes_OneofEnum_case
+	case *testAllTypes_Oneofgroup:
+		return TestAllTypes_Oneofgroup_case
+	default:
+		return TestAllTypes_OneofField_not_set_case
+	}
+}
+
+const TestAllTypes_OneofOptional_not_set_case case_TestAllTypes_OneofOptional = 0
+const TestAllTypes_OneofOptionalUint32_case case_TestAllTypes_OneofOptional = 120
+
+func (x *TestAllTypes) WhichOneofOptional() case_TestAllTypes_OneofOptional {
+	if x == nil {
+		return TestAllTypes_OneofOptional_not_set_case
+	}
+	switch x.xxx_hidden_OneofOptional.(type) {
+	case *testAllTypes_OneofOptionalUint32:
+		return TestAllTypes_OneofOptionalUint32_case
+	default:
+		return TestAllTypes_OneofOptional_not_set_case
+	}
+}
+
+type TestAllTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SingularInt32    int32
+	SingularInt64    int64
+	SingularUint32   uint32
+	SingularUint64   uint64
+	SingularSint32   int32
+	SingularSint64   int64
+	SingularFixed32  uint32
+	SingularFixed64  uint64
+	SingularSfixed32 int32
+	SingularSfixed64 int64
+	SingularFloat    float32
+	SingularDouble   float64
+	SingularBool     bool
+	SingularString   string
+	SingularBytes    []byte
+	// message-typed fields elided, as they cannot specify implicit presence.
+	SingularNestedEnum        TestAllTypes_NestedEnum
+	SingularForeignEnum       ForeignEnum
+	SingularImportEnum        ImportEnum
+	OptionalInt32             *int32
+	OptionalInt64             *int64
+	OptionalUint32            *uint32
+	OptionalUint64            *uint64
+	OptionalSint32            *int32
+	OptionalSint64            *int64
+	OptionalFixed32           *uint32
+	OptionalFixed64           *uint64
+	OptionalSfixed32          *int32
+	OptionalSfixed64          *int64
+	OptionalFloat             *float32
+	OptionalDouble            *float64
+	OptionalBool              *bool
+	OptionalString            *string
+	OptionalBytes             []byte
+	Optionalgroup             *TestAllTypes_OptionalGroup
+	NotGroupLikeDelimited     *TestAllTypes_OptionalGroup
+	OptionalNestedMessage     *TestAllTypes_NestedMessage
+	OptionalForeignMessage    *ForeignMessage
+	OptionalImportMessage     *ImportMessage
+	OptionalNestedEnum        *TestAllTypes_NestedEnum
+	OptionalForeignEnum       *ForeignEnum
+	OptionalImportEnum        *ImportEnum
+	OptionalLazyNestedMessage *TestAllTypes_NestedMessage
+	RepeatedInt32             []int32
+	RepeatedInt64             []int64
+	RepeatedUint32            []uint32
+	RepeatedUint64            []uint64
+	RepeatedSint32            []int32
+	RepeatedSint64            []int64
+	RepeatedFixed32           []uint32
+	RepeatedFixed64           []uint64
+	RepeatedSfixed32          []int32
+	RepeatedSfixed64          []int64
+	RepeatedFloat             []float32
+	RepeatedDouble            []float64
+	RepeatedBool              []bool
+	RepeatedString            []string
+	RepeatedBytes             [][]byte
+	Repeatedgroup             []*TestAllTypes_RepeatedGroup
+	RepeatedNestedMessage     []*TestAllTypes_NestedMessage
+	RepeatedForeignMessage    []*ForeignMessage
+	RepeatedImportmessage     []*ImportMessage
+	RepeatedNestedEnum        []TestAllTypes_NestedEnum
+	RepeatedForeignEnum       []ForeignEnum
+	RepeatedImportenum        []ImportEnum
+	MapInt32Int32             map[int32]int32
+	MapInt64Int64             map[int64]int64
+	MapUint32Uint32           map[uint32]uint32
+	MapUint64Uint64           map[uint64]uint64
+	MapSint32Sint32           map[int32]int32
+	MapSint64Sint64           map[int64]int64
+	MapFixed32Fixed32         map[uint32]uint32
+	MapFixed64Fixed64         map[uint64]uint64
+	MapSfixed32Sfixed32       map[int32]int32
+	MapSfixed64Sfixed64       map[int64]int64
+	MapInt32Float             map[int32]float32
+	MapInt32Double            map[int32]float64
+	MapBoolBool               map[bool]bool
+	MapStringString           map[string]string
+	MapStringBytes            map[string][]byte
+	MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage
+	MapStringNestedEnum       map[string]TestAllTypes_NestedEnum
+	// Singular with defaults
+	DefaultInt32       *int32
+	DefaultInt64       *int64
+	DefaultUint32      *uint32
+	DefaultUint64      *uint64
+	DefaultSint32      *int32
+	DefaultSint64      *int64
+	DefaultFixed32     *uint32
+	DefaultFixed64     *uint64
+	DefaultSfixed32    *int32
+	DefaultSfixed64    *int64
+	DefaultFloat       *float32
+	DefaultDouble      *float64
+	DefaultBool        *bool
+	DefaultString      *string
+	DefaultBytes       []byte
+	DefaultNestedEnum  *TestAllTypes_NestedEnum
+	DefaultForeignEnum *ForeignEnum
+	// Fields of oneof xxx_hidden_OneofField:
+	OneofUint32        *uint32
+	OneofNestedMessage *TestAllTypes_NestedMessage
+	OneofString        *string
+	OneofBytes         []byte
+	OneofBool          *bool
+	OneofUint64        *uint64
+	OneofFloat         *float32
+	OneofDouble        *float64
+	OneofEnum          *TestAllTypes_NestedEnum
+	Oneofgroup         *TestAllTypes_OneofGroup
+	// -- end of xxx_hidden_OneofField
+	// A oneof with exactly one field.
+
+	// Fields of oneof xxx_hidden_OneofOptional:
+	OneofOptionalUint32 *uint32
+	// -- end of xxx_hidden_OneofOptional
+}
+
+func (b0 TestAllTypes_builder) Build() *TestAllTypes {
+	m0 := &TestAllTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_SingularInt32 = b.SingularInt32
+	x.xxx_hidden_SingularInt64 = b.SingularInt64
+	x.xxx_hidden_SingularUint32 = b.SingularUint32
+	x.xxx_hidden_SingularUint64 = b.SingularUint64
+	x.xxx_hidden_SingularSint32 = b.SingularSint32
+	x.xxx_hidden_SingularSint64 = b.SingularSint64
+	x.xxx_hidden_SingularFixed32 = b.SingularFixed32
+	x.xxx_hidden_SingularFixed64 = b.SingularFixed64
+	x.xxx_hidden_SingularSfixed32 = b.SingularSfixed32
+	x.xxx_hidden_SingularSfixed64 = b.SingularSfixed64
+	x.xxx_hidden_SingularFloat = b.SingularFloat
+	x.xxx_hidden_SingularDouble = b.SingularDouble
+	x.xxx_hidden_SingularBool = b.SingularBool
+	x.xxx_hidden_SingularString = b.SingularString
+	x.xxx_hidden_SingularBytes = b.SingularBytes
+	x.xxx_hidden_SingularNestedEnum = b.SingularNestedEnum
+	x.xxx_hidden_SingularForeignEnum = b.SingularForeignEnum
+	x.xxx_hidden_SingularImportEnum = b.SingularImportEnum
+	if b.OptionalInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 18, 100)
+		x.xxx_hidden_OptionalInt32 = *b.OptionalInt32
+	}
+	if b.OptionalInt64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 19, 100)
+		x.xxx_hidden_OptionalInt64 = *b.OptionalInt64
+	}
+	if b.OptionalUint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 20, 100)
+		x.xxx_hidden_OptionalUint32 = *b.OptionalUint32
+	}
+	if b.OptionalUint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 21, 100)
+		x.xxx_hidden_OptionalUint64 = *b.OptionalUint64
+	}
+	if b.OptionalSint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 22, 100)
+		x.xxx_hidden_OptionalSint32 = *b.OptionalSint32
+	}
+	if b.OptionalSint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 23, 100)
+		x.xxx_hidden_OptionalSint64 = *b.OptionalSint64
+	}
+	if b.OptionalFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 24, 100)
+		x.xxx_hidden_OptionalFixed32 = *b.OptionalFixed32
+	}
+	if b.OptionalFixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 25, 100)
+		x.xxx_hidden_OptionalFixed64 = *b.OptionalFixed64
+	}
+	if b.OptionalSfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 26, 100)
+		x.xxx_hidden_OptionalSfixed32 = *b.OptionalSfixed32
+	}
+	if b.OptionalSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 27, 100)
+		x.xxx_hidden_OptionalSfixed64 = *b.OptionalSfixed64
+	}
+	if b.OptionalFloat != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 28, 100)
+		x.xxx_hidden_OptionalFloat = *b.OptionalFloat
+	}
+	if b.OptionalDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 29, 100)
+		x.xxx_hidden_OptionalDouble = *b.OptionalDouble
+	}
+	if b.OptionalBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 30, 100)
+		x.xxx_hidden_OptionalBool = *b.OptionalBool
+	}
+	if b.OptionalString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 31, 100)
+		x.xxx_hidden_OptionalString = b.OptionalString
+	}
+	if b.OptionalBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 32, 100)
+		x.xxx_hidden_OptionalBytes = b.OptionalBytes
+	}
+	x.xxx_hidden_Optionalgroup = b.Optionalgroup
+	x.xxx_hidden_NotGroupLikeDelimited = b.NotGroupLikeDelimited
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	x.xxx_hidden_OptionalForeignMessage = b.OptionalForeignMessage
+	x.xxx_hidden_OptionalImportMessage = b.OptionalImportMessage
+	if b.OptionalNestedEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 38, 100)
+		x.xxx_hidden_OptionalNestedEnum = *b.OptionalNestedEnum
+	}
+	if b.OptionalForeignEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 39, 100)
+		x.xxx_hidden_OptionalForeignEnum = *b.OptionalForeignEnum
+	}
+	if b.OptionalImportEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 40, 100)
+		x.xxx_hidden_OptionalImportEnum = *b.OptionalImportEnum
+	}
+	if b.OptionalLazyNestedMessage != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 41, 100)
+		x.xxx_hidden_OptionalLazyNestedMessage = b.OptionalLazyNestedMessage
+	}
+	x.xxx_hidden_RepeatedInt32 = b.RepeatedInt32
+	x.xxx_hidden_RepeatedInt64 = b.RepeatedInt64
+	x.xxx_hidden_RepeatedUint32 = b.RepeatedUint32
+	x.xxx_hidden_RepeatedUint64 = b.RepeatedUint64
+	x.xxx_hidden_RepeatedSint32 = b.RepeatedSint32
+	x.xxx_hidden_RepeatedSint64 = b.RepeatedSint64
+	x.xxx_hidden_RepeatedFixed32 = b.RepeatedFixed32
+	x.xxx_hidden_RepeatedFixed64 = b.RepeatedFixed64
+	x.xxx_hidden_RepeatedSfixed32 = b.RepeatedSfixed32
+	x.xxx_hidden_RepeatedSfixed64 = b.RepeatedSfixed64
+	x.xxx_hidden_RepeatedFloat = b.RepeatedFloat
+	x.xxx_hidden_RepeatedDouble = b.RepeatedDouble
+	x.xxx_hidden_RepeatedBool = b.RepeatedBool
+	x.xxx_hidden_RepeatedString = b.RepeatedString
+	x.xxx_hidden_RepeatedBytes = b.RepeatedBytes
+	x.xxx_hidden_Repeatedgroup = &b.Repeatedgroup
+	x.xxx_hidden_RepeatedNestedMessage = &b.RepeatedNestedMessage
+	x.xxx_hidden_RepeatedForeignMessage = &b.RepeatedForeignMessage
+	x.xxx_hidden_RepeatedImportmessage = &b.RepeatedImportmessage
+	x.xxx_hidden_RepeatedNestedEnum = b.RepeatedNestedEnum
+	x.xxx_hidden_RepeatedForeignEnum = b.RepeatedForeignEnum
+	x.xxx_hidden_RepeatedImportenum = b.RepeatedImportenum
+	x.xxx_hidden_MapInt32Int32 = b.MapInt32Int32
+	x.xxx_hidden_MapInt64Int64 = b.MapInt64Int64
+	x.xxx_hidden_MapUint32Uint32 = b.MapUint32Uint32
+	x.xxx_hidden_MapUint64Uint64 = b.MapUint64Uint64
+	x.xxx_hidden_MapSint32Sint32 = b.MapSint32Sint32
+	x.xxx_hidden_MapSint64Sint64 = b.MapSint64Sint64
+	x.xxx_hidden_MapFixed32Fixed32 = b.MapFixed32Fixed32
+	x.xxx_hidden_MapFixed64Fixed64 = b.MapFixed64Fixed64
+	x.xxx_hidden_MapSfixed32Sfixed32 = b.MapSfixed32Sfixed32
+	x.xxx_hidden_MapSfixed64Sfixed64 = b.MapSfixed64Sfixed64
+	x.xxx_hidden_MapInt32Float = b.MapInt32Float
+	x.xxx_hidden_MapInt32Double = b.MapInt32Double
+	x.xxx_hidden_MapBoolBool = b.MapBoolBool
+	x.xxx_hidden_MapStringString = b.MapStringString
+	x.xxx_hidden_MapStringBytes = b.MapStringBytes
+	x.xxx_hidden_MapStringNestedMessage = b.MapStringNestedMessage
+	x.xxx_hidden_MapStringNestedEnum = b.MapStringNestedEnum
+	if b.DefaultInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 81, 100)
+		x.xxx_hidden_DefaultInt32 = *b.DefaultInt32
+	}
+	if b.DefaultInt64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 82, 100)
+		x.xxx_hidden_DefaultInt64 = *b.DefaultInt64
+	}
+	if b.DefaultUint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 83, 100)
+		x.xxx_hidden_DefaultUint32 = *b.DefaultUint32
+	}
+	if b.DefaultUint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 84, 100)
+		x.xxx_hidden_DefaultUint64 = *b.DefaultUint64
+	}
+	if b.DefaultSint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 85, 100)
+		x.xxx_hidden_DefaultSint32 = *b.DefaultSint32
+	}
+	if b.DefaultSint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 86, 100)
+		x.xxx_hidden_DefaultSint64 = *b.DefaultSint64
+	}
+	if b.DefaultFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 87, 100)
+		x.xxx_hidden_DefaultFixed32 = *b.DefaultFixed32
+	}
+	if b.DefaultFixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 88, 100)
+		x.xxx_hidden_DefaultFixed64 = *b.DefaultFixed64
+	}
+	if b.DefaultSfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 89, 100)
+		x.xxx_hidden_DefaultSfixed32 = *b.DefaultSfixed32
+	}
+	if b.DefaultSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 90, 100)
+		x.xxx_hidden_DefaultSfixed64 = *b.DefaultSfixed64
+	}
+	if b.DefaultFloat != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 91, 100)
+		x.xxx_hidden_DefaultFloat = *b.DefaultFloat
+	}
+	if b.DefaultDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 92, 100)
+		x.xxx_hidden_DefaultDouble = *b.DefaultDouble
+	}
+	if b.DefaultBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 93, 100)
+		x.xxx_hidden_DefaultBool = *b.DefaultBool
+	}
+	if b.DefaultString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 94, 100)
+		x.xxx_hidden_DefaultString = b.DefaultString
+	}
+	if b.DefaultBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[2]), 95, 100)
+		x.xxx_hidden_DefaultBytes = b.DefaultBytes
+	}
+	if b.DefaultNestedEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[3]), 96, 100)
+		x.xxx_hidden_DefaultNestedEnum = *b.DefaultNestedEnum
+	}
+	if b.DefaultForeignEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[3]), 97, 100)
+		x.xxx_hidden_DefaultForeignEnum = *b.DefaultForeignEnum
+	}
+	if b.OneofUint32 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{*b.OneofUint32}
+	}
+	if b.OneofNestedMessage != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{b.OneofNestedMessage}
+	}
+	if b.OneofString != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofString{*b.OneofString}
+	}
+	if b.OneofBytes != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{b.OneofBytes}
+	}
+	if b.OneofBool != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBool{*b.OneofBool}
+	}
+	if b.OneofUint64 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{*b.OneofUint64}
+	}
+	if b.OneofFloat != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{*b.OneofFloat}
+	}
+	if b.OneofDouble != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{*b.OneofDouble}
+	}
+	if b.OneofEnum != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{*b.OneofEnum}
+	}
+	if b.Oneofgroup != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_Oneofgroup{b.Oneofgroup}
+	}
+	if b.OneofOptionalUint32 != nil {
+		x.xxx_hidden_OneofOptional = &testAllTypes_OneofOptionalUint32{*b.OneofOptionalUint32}
+	}
+	return m0
+}
+
+type case_TestAllTypes_OneofField protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofField) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type case_TestAllTypes_OneofOptional protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofOptional) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestAllTypes_OneofField interface {
+	isTestAllTypes_OneofField()
+}
+
+type testAllTypes_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+
+type testAllTypes_OneofNestedMessage struct {
+	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
+}
+
+type testAllTypes_OneofString struct {
+	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"`
+}
+
+type testAllTypes_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+
+type testAllTypes_OneofBool struct {
+	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+
+type testAllTypes_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+
+type testAllTypes_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+
+type testAllTypes_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+
+type testAllTypes_OneofEnum struct {
+	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum,oneof"`
+}
+
+type testAllTypes_Oneofgroup struct {
+	Oneofgroup *TestAllTypes_OneofGroup `protobuf:"group,121,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+
+func (*testAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofString) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBool) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_Oneofgroup) isTestAllTypes_OneofField() {}
+
+type isTestAllTypes_OneofOptional interface {
+	isTestAllTypes_OneofOptional()
+}
+
+type testAllTypes_OneofOptionalUint32 struct {
+	OneofOptionalUint32 uint32 `protobuf:"varint,120,opt,name=oneof_optional_uint32,json=oneofOptionalUint32,oneof"`
+}
+
+func (*testAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}
+
+type TestManyMessageFieldsMessage struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_F1   *TestAllTypes          `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	xxx_hidden_F2   *TestAllTypes          `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
+	xxx_hidden_F3   *TestAllTypes          `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	xxx_hidden_F4   *TestAllTypes          `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	xxx_hidden_F5   *TestAllTypes          `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
+	xxx_hidden_F6   *TestAllTypes          `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
+	xxx_hidden_F7   *TestAllTypes          `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
+	xxx_hidden_F8   *TestAllTypes          `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
+	xxx_hidden_F9   *TestAllTypes          `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
+	xxx_hidden_F10  *TestAllTypes          `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
+	xxx_hidden_F11  *TestAllTypes          `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
+	xxx_hidden_F12  *TestAllTypes          `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
+	xxx_hidden_F13  *TestAllTypes          `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
+	xxx_hidden_F14  *TestAllTypes          `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
+	xxx_hidden_F15  *TestAllTypes          `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
+	xxx_hidden_F16  *TestAllTypes          `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
+	xxx_hidden_F17  *TestAllTypes          `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
+	xxx_hidden_F18  *TestAllTypes          `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
+	xxx_hidden_F19  *TestAllTypes          `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
+	xxx_hidden_F20  *TestAllTypes          `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
+	xxx_hidden_F21  *TestAllTypes          `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
+	xxx_hidden_F22  *TestAllTypes          `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
+	xxx_hidden_F23  *TestAllTypes          `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
+	xxx_hidden_F24  *TestAllTypes          `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
+	xxx_hidden_F25  *TestAllTypes          `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
+	xxx_hidden_F26  *TestAllTypes          `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
+	xxx_hidden_F27  *TestAllTypes          `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
+	xxx_hidden_F28  *TestAllTypes          `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
+	xxx_hidden_F29  *TestAllTypes          `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
+	xxx_hidden_F30  *TestAllTypes          `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
+	xxx_hidden_F31  *TestAllTypes          `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
+	xxx_hidden_F32  *TestAllTypes          `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
+	xxx_hidden_F33  *TestAllTypes          `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
+	xxx_hidden_F34  *TestAllTypes          `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
+	xxx_hidden_F35  *TestAllTypes          `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
+	xxx_hidden_F36  *TestAllTypes          `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
+	xxx_hidden_F37  *TestAllTypes          `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
+	xxx_hidden_F38  *TestAllTypes          `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
+	xxx_hidden_F39  *TestAllTypes          `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
+	xxx_hidden_F40  *TestAllTypes          `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
+	xxx_hidden_F41  *TestAllTypes          `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
+	xxx_hidden_F42  *TestAllTypes          `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
+	xxx_hidden_F43  *TestAllTypes          `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
+	xxx_hidden_F44  *TestAllTypes          `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
+	xxx_hidden_F45  *TestAllTypes          `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
+	xxx_hidden_F46  *TestAllTypes          `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
+	xxx_hidden_F47  *TestAllTypes          `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
+	xxx_hidden_F48  *TestAllTypes          `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
+	xxx_hidden_F49  *TestAllTypes          `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
+	xxx_hidden_F50  *TestAllTypes          `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
+	xxx_hidden_F51  *TestAllTypes          `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
+	xxx_hidden_F52  *TestAllTypes          `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
+	xxx_hidden_F53  *TestAllTypes          `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
+	xxx_hidden_F54  *TestAllTypes          `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
+	xxx_hidden_F55  *TestAllTypes          `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
+	xxx_hidden_F56  *TestAllTypes          `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
+	xxx_hidden_F57  *TestAllTypes          `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
+	xxx_hidden_F58  *TestAllTypes          `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
+	xxx_hidden_F59  *TestAllTypes          `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
+	xxx_hidden_F60  *TestAllTypes          `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
+	xxx_hidden_F61  *TestAllTypes          `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
+	xxx_hidden_F62  *TestAllTypes          `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
+	xxx_hidden_F63  *TestAllTypes          `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
+	xxx_hidden_F64  *TestAllTypes          `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
+	xxx_hidden_F65  *TestAllTypes          `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
+	xxx_hidden_F66  *TestAllTypes          `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
+	xxx_hidden_F67  *TestAllTypes          `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
+	xxx_hidden_F68  *TestAllTypes          `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
+	xxx_hidden_F69  *TestAllTypes          `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
+	xxx_hidden_F70  *TestAllTypes          `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
+	xxx_hidden_F71  *TestAllTypes          `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
+	xxx_hidden_F72  *TestAllTypes          `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
+	xxx_hidden_F73  *TestAllTypes          `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
+	xxx_hidden_F74  *TestAllTypes          `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
+	xxx_hidden_F75  *TestAllTypes          `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
+	xxx_hidden_F76  *TestAllTypes          `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
+	xxx_hidden_F77  *TestAllTypes          `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
+	xxx_hidden_F78  *TestAllTypes          `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
+	xxx_hidden_F79  *TestAllTypes          `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
+	xxx_hidden_F80  *TestAllTypes          `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
+	xxx_hidden_F81  *TestAllTypes          `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
+	xxx_hidden_F82  *TestAllTypes          `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
+	xxx_hidden_F83  *TestAllTypes          `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
+	xxx_hidden_F84  *TestAllTypes          `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
+	xxx_hidden_F85  *TestAllTypes          `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
+	xxx_hidden_F86  *TestAllTypes          `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
+	xxx_hidden_F87  *TestAllTypes          `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
+	xxx_hidden_F88  *TestAllTypes          `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
+	xxx_hidden_F89  *TestAllTypes          `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
+	xxx_hidden_F90  *TestAllTypes          `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
+	xxx_hidden_F91  *TestAllTypes          `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
+	xxx_hidden_F92  *TestAllTypes          `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
+	xxx_hidden_F93  *TestAllTypes          `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
+	xxx_hidden_F94  *TestAllTypes          `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
+	xxx_hidden_F95  *TestAllTypes          `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
+	xxx_hidden_F96  *TestAllTypes          `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
+	xxx_hidden_F97  *TestAllTypes          `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
+	xxx_hidden_F98  *TestAllTypes          `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
+	xxx_hidden_F99  *TestAllTypes          `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
+	xxx_hidden_F100 *TestAllTypes          `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestManyMessageFieldsMessage) Reset() {
+	*x = TestManyMessageFieldsMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestManyMessageFieldsMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestManyMessageFieldsMessage) ProtoMessage() {}
+
+func (x *TestManyMessageFieldsMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestManyMessageFieldsMessage) GetF1() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F1
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF2() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F2
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF3() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F3
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF4() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F4
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF5() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F5
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF6() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F6
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF7() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F7
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF8() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F8
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF9() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F9
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF10() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F10
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF11() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F11
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF12() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F12
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF13() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F13
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF14() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F14
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF15() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F15
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF16() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F16
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF17() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F17
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF18() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F18
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF19() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F19
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF20() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F20
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF21() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F21
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF22() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F22
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF23() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F23
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF24() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F24
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF25() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F25
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF26() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F26
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF27() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F27
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF28() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F28
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF29() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F29
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF30() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F30
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF31() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F31
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF32() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F32
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF33() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F33
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF34() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F34
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF35() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F35
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF36() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F36
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF37() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F37
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF38() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F38
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF39() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F39
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF40() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F40
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF41() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F41
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF42() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F42
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF43() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F43
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF44() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F44
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF45() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F45
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF46() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F46
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF47() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F47
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF48() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F48
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF49() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F49
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF50() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F50
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF51() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F51
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF52() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F52
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF53() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F53
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF54() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F54
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF55() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F55
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF56() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F56
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF57() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F57
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF58() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F58
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF59() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F59
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF60() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F60
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF61() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F61
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF62() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F62
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF63() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F63
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF64() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F64
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF65() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F65
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF66() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F66
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF67() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F67
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF68() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F68
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF69() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F69
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF70() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F70
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF71() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F71
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF72() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F72
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF73() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F73
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF74() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F74
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF75() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F75
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF76() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F76
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF77() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F77
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF78() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F78
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF79() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F79
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF80() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F80
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF81() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F81
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF82() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F82
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF83() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F83
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF84() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F84
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF85() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F85
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF86() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F86
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF87() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F87
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF88() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F88
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF89() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F89
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF90() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F90
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF91() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F91
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF92() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F92
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF93() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F93
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF94() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F94
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF95() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F95
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF96() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F96
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF97() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F97
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF98() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F98
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF99() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F99
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) GetF100() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_F100
+	}
+	return nil
+}
+
+func (x *TestManyMessageFieldsMessage) SetF1(v *TestAllTypes) {
+	x.xxx_hidden_F1 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF2(v *TestAllTypes) {
+	x.xxx_hidden_F2 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF3(v *TestAllTypes) {
+	x.xxx_hidden_F3 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF4(v *TestAllTypes) {
+	x.xxx_hidden_F4 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF5(v *TestAllTypes) {
+	x.xxx_hidden_F5 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF6(v *TestAllTypes) {
+	x.xxx_hidden_F6 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF7(v *TestAllTypes) {
+	x.xxx_hidden_F7 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF8(v *TestAllTypes) {
+	x.xxx_hidden_F8 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF9(v *TestAllTypes) {
+	x.xxx_hidden_F9 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF10(v *TestAllTypes) {
+	x.xxx_hidden_F10 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF11(v *TestAllTypes) {
+	x.xxx_hidden_F11 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF12(v *TestAllTypes) {
+	x.xxx_hidden_F12 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF13(v *TestAllTypes) {
+	x.xxx_hidden_F13 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF14(v *TestAllTypes) {
+	x.xxx_hidden_F14 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF15(v *TestAllTypes) {
+	x.xxx_hidden_F15 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF16(v *TestAllTypes) {
+	x.xxx_hidden_F16 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF17(v *TestAllTypes) {
+	x.xxx_hidden_F17 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF18(v *TestAllTypes) {
+	x.xxx_hidden_F18 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF19(v *TestAllTypes) {
+	x.xxx_hidden_F19 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF20(v *TestAllTypes) {
+	x.xxx_hidden_F20 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF21(v *TestAllTypes) {
+	x.xxx_hidden_F21 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF22(v *TestAllTypes) {
+	x.xxx_hidden_F22 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF23(v *TestAllTypes) {
+	x.xxx_hidden_F23 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF24(v *TestAllTypes) {
+	x.xxx_hidden_F24 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF25(v *TestAllTypes) {
+	x.xxx_hidden_F25 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF26(v *TestAllTypes) {
+	x.xxx_hidden_F26 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF27(v *TestAllTypes) {
+	x.xxx_hidden_F27 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF28(v *TestAllTypes) {
+	x.xxx_hidden_F28 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF29(v *TestAllTypes) {
+	x.xxx_hidden_F29 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF30(v *TestAllTypes) {
+	x.xxx_hidden_F30 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF31(v *TestAllTypes) {
+	x.xxx_hidden_F31 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF32(v *TestAllTypes) {
+	x.xxx_hidden_F32 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF33(v *TestAllTypes) {
+	x.xxx_hidden_F33 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF34(v *TestAllTypes) {
+	x.xxx_hidden_F34 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF35(v *TestAllTypes) {
+	x.xxx_hidden_F35 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF36(v *TestAllTypes) {
+	x.xxx_hidden_F36 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF37(v *TestAllTypes) {
+	x.xxx_hidden_F37 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF38(v *TestAllTypes) {
+	x.xxx_hidden_F38 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF39(v *TestAllTypes) {
+	x.xxx_hidden_F39 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF40(v *TestAllTypes) {
+	x.xxx_hidden_F40 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF41(v *TestAllTypes) {
+	x.xxx_hidden_F41 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF42(v *TestAllTypes) {
+	x.xxx_hidden_F42 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF43(v *TestAllTypes) {
+	x.xxx_hidden_F43 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF44(v *TestAllTypes) {
+	x.xxx_hidden_F44 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF45(v *TestAllTypes) {
+	x.xxx_hidden_F45 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF46(v *TestAllTypes) {
+	x.xxx_hidden_F46 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF47(v *TestAllTypes) {
+	x.xxx_hidden_F47 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF48(v *TestAllTypes) {
+	x.xxx_hidden_F48 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF49(v *TestAllTypes) {
+	x.xxx_hidden_F49 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF50(v *TestAllTypes) {
+	x.xxx_hidden_F50 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF51(v *TestAllTypes) {
+	x.xxx_hidden_F51 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF52(v *TestAllTypes) {
+	x.xxx_hidden_F52 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF53(v *TestAllTypes) {
+	x.xxx_hidden_F53 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF54(v *TestAllTypes) {
+	x.xxx_hidden_F54 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF55(v *TestAllTypes) {
+	x.xxx_hidden_F55 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF56(v *TestAllTypes) {
+	x.xxx_hidden_F56 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF57(v *TestAllTypes) {
+	x.xxx_hidden_F57 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF58(v *TestAllTypes) {
+	x.xxx_hidden_F58 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF59(v *TestAllTypes) {
+	x.xxx_hidden_F59 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF60(v *TestAllTypes) {
+	x.xxx_hidden_F60 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF61(v *TestAllTypes) {
+	x.xxx_hidden_F61 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF62(v *TestAllTypes) {
+	x.xxx_hidden_F62 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF63(v *TestAllTypes) {
+	x.xxx_hidden_F63 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF64(v *TestAllTypes) {
+	x.xxx_hidden_F64 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF65(v *TestAllTypes) {
+	x.xxx_hidden_F65 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF66(v *TestAllTypes) {
+	x.xxx_hidden_F66 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF67(v *TestAllTypes) {
+	x.xxx_hidden_F67 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF68(v *TestAllTypes) {
+	x.xxx_hidden_F68 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF69(v *TestAllTypes) {
+	x.xxx_hidden_F69 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF70(v *TestAllTypes) {
+	x.xxx_hidden_F70 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF71(v *TestAllTypes) {
+	x.xxx_hidden_F71 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF72(v *TestAllTypes) {
+	x.xxx_hidden_F72 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF73(v *TestAllTypes) {
+	x.xxx_hidden_F73 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF74(v *TestAllTypes) {
+	x.xxx_hidden_F74 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF75(v *TestAllTypes) {
+	x.xxx_hidden_F75 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF76(v *TestAllTypes) {
+	x.xxx_hidden_F76 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF77(v *TestAllTypes) {
+	x.xxx_hidden_F77 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF78(v *TestAllTypes) {
+	x.xxx_hidden_F78 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF79(v *TestAllTypes) {
+	x.xxx_hidden_F79 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF80(v *TestAllTypes) {
+	x.xxx_hidden_F80 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF81(v *TestAllTypes) {
+	x.xxx_hidden_F81 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF82(v *TestAllTypes) {
+	x.xxx_hidden_F82 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF83(v *TestAllTypes) {
+	x.xxx_hidden_F83 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF84(v *TestAllTypes) {
+	x.xxx_hidden_F84 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF85(v *TestAllTypes) {
+	x.xxx_hidden_F85 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF86(v *TestAllTypes) {
+	x.xxx_hidden_F86 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF87(v *TestAllTypes) {
+	x.xxx_hidden_F87 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF88(v *TestAllTypes) {
+	x.xxx_hidden_F88 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF89(v *TestAllTypes) {
+	x.xxx_hidden_F89 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF90(v *TestAllTypes) {
+	x.xxx_hidden_F90 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF91(v *TestAllTypes) {
+	x.xxx_hidden_F91 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF92(v *TestAllTypes) {
+	x.xxx_hidden_F92 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF93(v *TestAllTypes) {
+	x.xxx_hidden_F93 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF94(v *TestAllTypes) {
+	x.xxx_hidden_F94 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF95(v *TestAllTypes) {
+	x.xxx_hidden_F95 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF96(v *TestAllTypes) {
+	x.xxx_hidden_F96 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF97(v *TestAllTypes) {
+	x.xxx_hidden_F97 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF98(v *TestAllTypes) {
+	x.xxx_hidden_F98 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF99(v *TestAllTypes) {
+	x.xxx_hidden_F99 = v
+}
+
+func (x *TestManyMessageFieldsMessage) SetF100(v *TestAllTypes) {
+	x.xxx_hidden_F100 = v
+}
+
+func (x *TestManyMessageFieldsMessage) HasF1() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F1 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF2() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F2 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF3() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F3 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF4() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F4 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF5() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F5 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF6() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F6 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF7() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F7 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF8() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F8 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF9() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F9 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF10() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F10 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF11() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F11 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF12() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F12 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF13() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F13 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF14() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F14 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF15() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F15 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF16() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F16 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF17() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F17 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF18() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F18 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF19() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F19 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF20() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F20 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF21() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F21 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF22() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F22 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF23() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F23 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF24() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F24 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF25() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F25 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF26() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F26 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF27() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F27 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF28() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F28 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF29() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F29 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF30() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F30 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF31() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F31 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF32() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F32 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF33() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F33 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF34() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F34 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF35() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F35 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF36() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F36 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF37() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F37 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF38() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F38 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF39() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F39 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF40() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F40 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF41() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F41 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF42() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F42 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF43() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F43 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF44() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F44 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF45() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F45 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF46() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F46 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF47() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F47 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF48() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F48 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF49() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F49 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF50() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F50 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF51() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F51 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF52() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F52 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF53() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F53 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF54() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F54 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF55() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F55 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF56() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F56 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF57() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F57 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF58() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F58 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF59() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F59 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF60() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F60 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF61() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F61 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF62() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F62 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF63() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F63 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF64() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F64 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF65() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F65 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF66() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F66 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF67() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F67 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF68() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F68 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF69() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F69 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF70() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F70 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF71() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F71 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF72() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F72 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF73() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F73 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF74() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F74 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF75() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F75 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF76() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F76 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF77() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F77 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF78() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F78 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF79() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F79 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF80() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F80 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF81() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F81 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF82() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F82 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF83() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F83 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF84() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F84 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF85() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F85 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF86() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F86 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF87() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F87 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF88() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F88 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF89() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F89 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF90() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F90 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF91() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F91 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF92() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F92 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF93() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F93 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF94() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F94 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF95() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F95 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF96() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F96 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF97() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F97 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF98() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F98 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF99() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F99 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) HasF100() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_F100 != nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF1() {
+	x.xxx_hidden_F1 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF2() {
+	x.xxx_hidden_F2 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF3() {
+	x.xxx_hidden_F3 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF4() {
+	x.xxx_hidden_F4 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF5() {
+	x.xxx_hidden_F5 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF6() {
+	x.xxx_hidden_F6 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF7() {
+	x.xxx_hidden_F7 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF8() {
+	x.xxx_hidden_F8 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF9() {
+	x.xxx_hidden_F9 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF10() {
+	x.xxx_hidden_F10 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF11() {
+	x.xxx_hidden_F11 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF12() {
+	x.xxx_hidden_F12 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF13() {
+	x.xxx_hidden_F13 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF14() {
+	x.xxx_hidden_F14 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF15() {
+	x.xxx_hidden_F15 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF16() {
+	x.xxx_hidden_F16 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF17() {
+	x.xxx_hidden_F17 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF18() {
+	x.xxx_hidden_F18 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF19() {
+	x.xxx_hidden_F19 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF20() {
+	x.xxx_hidden_F20 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF21() {
+	x.xxx_hidden_F21 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF22() {
+	x.xxx_hidden_F22 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF23() {
+	x.xxx_hidden_F23 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF24() {
+	x.xxx_hidden_F24 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF25() {
+	x.xxx_hidden_F25 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF26() {
+	x.xxx_hidden_F26 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF27() {
+	x.xxx_hidden_F27 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF28() {
+	x.xxx_hidden_F28 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF29() {
+	x.xxx_hidden_F29 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF30() {
+	x.xxx_hidden_F30 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF31() {
+	x.xxx_hidden_F31 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF32() {
+	x.xxx_hidden_F32 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF33() {
+	x.xxx_hidden_F33 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF34() {
+	x.xxx_hidden_F34 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF35() {
+	x.xxx_hidden_F35 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF36() {
+	x.xxx_hidden_F36 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF37() {
+	x.xxx_hidden_F37 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF38() {
+	x.xxx_hidden_F38 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF39() {
+	x.xxx_hidden_F39 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF40() {
+	x.xxx_hidden_F40 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF41() {
+	x.xxx_hidden_F41 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF42() {
+	x.xxx_hidden_F42 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF43() {
+	x.xxx_hidden_F43 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF44() {
+	x.xxx_hidden_F44 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF45() {
+	x.xxx_hidden_F45 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF46() {
+	x.xxx_hidden_F46 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF47() {
+	x.xxx_hidden_F47 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF48() {
+	x.xxx_hidden_F48 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF49() {
+	x.xxx_hidden_F49 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF50() {
+	x.xxx_hidden_F50 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF51() {
+	x.xxx_hidden_F51 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF52() {
+	x.xxx_hidden_F52 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF53() {
+	x.xxx_hidden_F53 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF54() {
+	x.xxx_hidden_F54 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF55() {
+	x.xxx_hidden_F55 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF56() {
+	x.xxx_hidden_F56 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF57() {
+	x.xxx_hidden_F57 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF58() {
+	x.xxx_hidden_F58 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF59() {
+	x.xxx_hidden_F59 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF60() {
+	x.xxx_hidden_F60 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF61() {
+	x.xxx_hidden_F61 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF62() {
+	x.xxx_hidden_F62 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF63() {
+	x.xxx_hidden_F63 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF64() {
+	x.xxx_hidden_F64 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF65() {
+	x.xxx_hidden_F65 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF66() {
+	x.xxx_hidden_F66 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF67() {
+	x.xxx_hidden_F67 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF68() {
+	x.xxx_hidden_F68 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF69() {
+	x.xxx_hidden_F69 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF70() {
+	x.xxx_hidden_F70 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF71() {
+	x.xxx_hidden_F71 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF72() {
+	x.xxx_hidden_F72 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF73() {
+	x.xxx_hidden_F73 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF74() {
+	x.xxx_hidden_F74 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF75() {
+	x.xxx_hidden_F75 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF76() {
+	x.xxx_hidden_F76 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF77() {
+	x.xxx_hidden_F77 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF78() {
+	x.xxx_hidden_F78 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF79() {
+	x.xxx_hidden_F79 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF80() {
+	x.xxx_hidden_F80 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF81() {
+	x.xxx_hidden_F81 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF82() {
+	x.xxx_hidden_F82 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF83() {
+	x.xxx_hidden_F83 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF84() {
+	x.xxx_hidden_F84 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF85() {
+	x.xxx_hidden_F85 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF86() {
+	x.xxx_hidden_F86 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF87() {
+	x.xxx_hidden_F87 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF88() {
+	x.xxx_hidden_F88 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF89() {
+	x.xxx_hidden_F89 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF90() {
+	x.xxx_hidden_F90 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF91() {
+	x.xxx_hidden_F91 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF92() {
+	x.xxx_hidden_F92 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF93() {
+	x.xxx_hidden_F93 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF94() {
+	x.xxx_hidden_F94 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF95() {
+	x.xxx_hidden_F95 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF96() {
+	x.xxx_hidden_F96 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF97() {
+	x.xxx_hidden_F97 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF98() {
+	x.xxx_hidden_F98 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF99() {
+	x.xxx_hidden_F99 = nil
+}
+
+func (x *TestManyMessageFieldsMessage) ClearF100() {
+	x.xxx_hidden_F100 = nil
+}
+
+type TestManyMessageFieldsMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	F1   *TestAllTypes
+	F2   *TestAllTypes
+	F3   *TestAllTypes
+	F4   *TestAllTypes
+	F5   *TestAllTypes
+	F6   *TestAllTypes
+	F7   *TestAllTypes
+	F8   *TestAllTypes
+	F9   *TestAllTypes
+	F10  *TestAllTypes
+	F11  *TestAllTypes
+	F12  *TestAllTypes
+	F13  *TestAllTypes
+	F14  *TestAllTypes
+	F15  *TestAllTypes
+	F16  *TestAllTypes
+	F17  *TestAllTypes
+	F18  *TestAllTypes
+	F19  *TestAllTypes
+	F20  *TestAllTypes
+	F21  *TestAllTypes
+	F22  *TestAllTypes
+	F23  *TestAllTypes
+	F24  *TestAllTypes
+	F25  *TestAllTypes
+	F26  *TestAllTypes
+	F27  *TestAllTypes
+	F28  *TestAllTypes
+	F29  *TestAllTypes
+	F30  *TestAllTypes
+	F31  *TestAllTypes
+	F32  *TestAllTypes
+	F33  *TestAllTypes
+	F34  *TestAllTypes
+	F35  *TestAllTypes
+	F36  *TestAllTypes
+	F37  *TestAllTypes
+	F38  *TestAllTypes
+	F39  *TestAllTypes
+	F40  *TestAllTypes
+	F41  *TestAllTypes
+	F42  *TestAllTypes
+	F43  *TestAllTypes
+	F44  *TestAllTypes
+	F45  *TestAllTypes
+	F46  *TestAllTypes
+	F47  *TestAllTypes
+	F48  *TestAllTypes
+	F49  *TestAllTypes
+	F50  *TestAllTypes
+	F51  *TestAllTypes
+	F52  *TestAllTypes
+	F53  *TestAllTypes
+	F54  *TestAllTypes
+	F55  *TestAllTypes
+	F56  *TestAllTypes
+	F57  *TestAllTypes
+	F58  *TestAllTypes
+	F59  *TestAllTypes
+	F60  *TestAllTypes
+	F61  *TestAllTypes
+	F62  *TestAllTypes
+	F63  *TestAllTypes
+	F64  *TestAllTypes
+	F65  *TestAllTypes
+	F66  *TestAllTypes
+	F67  *TestAllTypes
+	F68  *TestAllTypes
+	F69  *TestAllTypes
+	F70  *TestAllTypes
+	F71  *TestAllTypes
+	F72  *TestAllTypes
+	F73  *TestAllTypes
+	F74  *TestAllTypes
+	F75  *TestAllTypes
+	F76  *TestAllTypes
+	F77  *TestAllTypes
+	F78  *TestAllTypes
+	F79  *TestAllTypes
+	F80  *TestAllTypes
+	F81  *TestAllTypes
+	F82  *TestAllTypes
+	F83  *TestAllTypes
+	F84  *TestAllTypes
+	F85  *TestAllTypes
+	F86  *TestAllTypes
+	F87  *TestAllTypes
+	F88  *TestAllTypes
+	F89  *TestAllTypes
+	F90  *TestAllTypes
+	F91  *TestAllTypes
+	F92  *TestAllTypes
+	F93  *TestAllTypes
+	F94  *TestAllTypes
+	F95  *TestAllTypes
+	F96  *TestAllTypes
+	F97  *TestAllTypes
+	F98  *TestAllTypes
+	F99  *TestAllTypes
+	F100 *TestAllTypes
+}
+
+func (b0 TestManyMessageFieldsMessage_builder) Build() *TestManyMessageFieldsMessage {
+	m0 := &TestManyMessageFieldsMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_F1 = b.F1
+	x.xxx_hidden_F2 = b.F2
+	x.xxx_hidden_F3 = b.F3
+	x.xxx_hidden_F4 = b.F4
+	x.xxx_hidden_F5 = b.F5
+	x.xxx_hidden_F6 = b.F6
+	x.xxx_hidden_F7 = b.F7
+	x.xxx_hidden_F8 = b.F8
+	x.xxx_hidden_F9 = b.F9
+	x.xxx_hidden_F10 = b.F10
+	x.xxx_hidden_F11 = b.F11
+	x.xxx_hidden_F12 = b.F12
+	x.xxx_hidden_F13 = b.F13
+	x.xxx_hidden_F14 = b.F14
+	x.xxx_hidden_F15 = b.F15
+	x.xxx_hidden_F16 = b.F16
+	x.xxx_hidden_F17 = b.F17
+	x.xxx_hidden_F18 = b.F18
+	x.xxx_hidden_F19 = b.F19
+	x.xxx_hidden_F20 = b.F20
+	x.xxx_hidden_F21 = b.F21
+	x.xxx_hidden_F22 = b.F22
+	x.xxx_hidden_F23 = b.F23
+	x.xxx_hidden_F24 = b.F24
+	x.xxx_hidden_F25 = b.F25
+	x.xxx_hidden_F26 = b.F26
+	x.xxx_hidden_F27 = b.F27
+	x.xxx_hidden_F28 = b.F28
+	x.xxx_hidden_F29 = b.F29
+	x.xxx_hidden_F30 = b.F30
+	x.xxx_hidden_F31 = b.F31
+	x.xxx_hidden_F32 = b.F32
+	x.xxx_hidden_F33 = b.F33
+	x.xxx_hidden_F34 = b.F34
+	x.xxx_hidden_F35 = b.F35
+	x.xxx_hidden_F36 = b.F36
+	x.xxx_hidden_F37 = b.F37
+	x.xxx_hidden_F38 = b.F38
+	x.xxx_hidden_F39 = b.F39
+	x.xxx_hidden_F40 = b.F40
+	x.xxx_hidden_F41 = b.F41
+	x.xxx_hidden_F42 = b.F42
+	x.xxx_hidden_F43 = b.F43
+	x.xxx_hidden_F44 = b.F44
+	x.xxx_hidden_F45 = b.F45
+	x.xxx_hidden_F46 = b.F46
+	x.xxx_hidden_F47 = b.F47
+	x.xxx_hidden_F48 = b.F48
+	x.xxx_hidden_F49 = b.F49
+	x.xxx_hidden_F50 = b.F50
+	x.xxx_hidden_F51 = b.F51
+	x.xxx_hidden_F52 = b.F52
+	x.xxx_hidden_F53 = b.F53
+	x.xxx_hidden_F54 = b.F54
+	x.xxx_hidden_F55 = b.F55
+	x.xxx_hidden_F56 = b.F56
+	x.xxx_hidden_F57 = b.F57
+	x.xxx_hidden_F58 = b.F58
+	x.xxx_hidden_F59 = b.F59
+	x.xxx_hidden_F60 = b.F60
+	x.xxx_hidden_F61 = b.F61
+	x.xxx_hidden_F62 = b.F62
+	x.xxx_hidden_F63 = b.F63
+	x.xxx_hidden_F64 = b.F64
+	x.xxx_hidden_F65 = b.F65
+	x.xxx_hidden_F66 = b.F66
+	x.xxx_hidden_F67 = b.F67
+	x.xxx_hidden_F68 = b.F68
+	x.xxx_hidden_F69 = b.F69
+	x.xxx_hidden_F70 = b.F70
+	x.xxx_hidden_F71 = b.F71
+	x.xxx_hidden_F72 = b.F72
+	x.xxx_hidden_F73 = b.F73
+	x.xxx_hidden_F74 = b.F74
+	x.xxx_hidden_F75 = b.F75
+	x.xxx_hidden_F76 = b.F76
+	x.xxx_hidden_F77 = b.F77
+	x.xxx_hidden_F78 = b.F78
+	x.xxx_hidden_F79 = b.F79
+	x.xxx_hidden_F80 = b.F80
+	x.xxx_hidden_F81 = b.F81
+	x.xxx_hidden_F82 = b.F82
+	x.xxx_hidden_F83 = b.F83
+	x.xxx_hidden_F84 = b.F84
+	x.xxx_hidden_F85 = b.F85
+	x.xxx_hidden_F86 = b.F86
+	x.xxx_hidden_F87 = b.F87
+	x.xxx_hidden_F88 = b.F88
+	x.xxx_hidden_F89 = b.F89
+	x.xxx_hidden_F90 = b.F90
+	x.xxx_hidden_F91 = b.F91
+	x.xxx_hidden_F92 = b.F92
+	x.xxx_hidden_F93 = b.F93
+	x.xxx_hidden_F94 = b.F94
+	x.xxx_hidden_F95 = b.F95
+	x.xxx_hidden_F96 = b.F96
+	x.xxx_hidden_F97 = b.F97
+	x.xxx_hidden_F98 = b.F98
+	x.xxx_hidden_F99 = b.F99
+	x.xxx_hidden_F100 = b.F100
+	return m0
+}
+
+type ForeignMessage struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_C           int32                  `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
+	xxx_hidden_D           int32                  `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *ForeignMessage) Reset() {
+	*x = ForeignMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ForeignMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForeignMessage) ProtoMessage() {}
+
+func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ForeignMessage) GetC() int32 {
+	if x != nil {
+		return x.xxx_hidden_C
+	}
+	return 0
+}
+
+func (x *ForeignMessage) GetD() int32 {
+	if x != nil {
+		return x.xxx_hidden_D
+	}
+	return 0
+}
+
+func (x *ForeignMessage) SetC(v int32) {
+	x.xxx_hidden_C = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *ForeignMessage) SetD(v int32) {
+	x.xxx_hidden_D = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *ForeignMessage) HasC() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *ForeignMessage) HasD() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *ForeignMessage) ClearC() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_C = 0
+}
+
+func (x *ForeignMessage) ClearD() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_D = 0
+}
+
+type ForeignMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	C *int32
+	D *int32
+}
+
+func (b0 ForeignMessage_builder) Build() *ForeignMessage {
+	m0 := &ForeignMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.C != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_C = *b.C
+	}
+	if b.D != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_D = *b.D
+	}
+	return m0
+}
+
+type TestRequired struct {
+	state                    protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_RequiredField int32                  `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
+	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
+	XXX_presence             [1]uint32
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *TestRequired) Reset() {
+	*x = TestRequired{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequired) ProtoMessage() {}
+
+func (x *TestRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequired) GetRequiredField() int32 {
+	if x != nil {
+		return x.xxx_hidden_RequiredField
+	}
+	return 0
+}
+
+func (x *TestRequired) SetRequiredField(v int32) {
+	x.xxx_hidden_RequiredField = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *TestRequired) HasRequiredField() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestRequired) ClearRequiredField() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_RequiredField = 0
+}
+
+type TestRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RequiredField *int32
+}
+
+func (b0 TestRequired_builder) Build() *TestRequired {
+	m0 := &TestRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.RequiredField != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_RequiredField = *b.RequiredField
+	}
+	return m0
+}
+
+type TestRequiredForeign struct {
+	state                      protoimpl.MessageState           `protogen:"opaque.v1"`
+	xxx_hidden_OptionalMessage *TestRequired                    `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
+	xxx_hidden_RepeatedMessage *[]*TestRequired                 `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
+	xxx_hidden_MapMessage      map[int32]*TestRequired          `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_OneofField      isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields              protoimpl.UnknownFields
+	sizeCache                  protoimpl.SizeCache
+}
+
+func (x *TestRequiredForeign) Reset() {
+	*x = TestRequiredForeign{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredForeign) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredForeign) ProtoMessage() {}
+
+func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredForeign) GetOptionalMessage() *TestRequired {
+	if x != nil {
+		return x.xxx_hidden_OptionalMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetRepeatedMessage() []*TestRequired {
+	if x != nil {
+		if x.xxx_hidden_RepeatedMessage != nil {
+			return *x.xxx_hidden_RepeatedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetMapMessage() map[int32]*TestRequired {
+	if x != nil {
+		return x.xxx_hidden_MapMessage
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testRequiredForeign_OneofMessage); ok {
+			return x.OneofMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestRequiredForeign) SetOptionalMessage(v *TestRequired) {
+	x.xxx_hidden_OptionalMessage = v
+}
+
+func (x *TestRequiredForeign) SetRepeatedMessage(v []*TestRequired) {
+	x.xxx_hidden_RepeatedMessage = &v
+}
+
+func (x *TestRequiredForeign) SetMapMessage(v map[int32]*TestRequired) {
+	x.xxx_hidden_MapMessage = v
+}
+
+func (x *TestRequiredForeign) SetOneofMessage(v *TestRequired) {
+	if v == nil {
+		x.xxx_hidden_OneofField = nil
+		return
+	}
+	x.xxx_hidden_OneofField = &testRequiredForeign_OneofMessage{v}
+}
+
+func (x *TestRequiredForeign) HasOptionalMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalMessage != nil
+}
+
+func (x *TestRequiredForeign) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OneofField != nil
+}
+
+func (x *TestRequiredForeign) HasOneofMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testRequiredForeign_OneofMessage)
+	return ok
+}
+
+func (x *TestRequiredForeign) ClearOptionalMessage() {
+	x.xxx_hidden_OptionalMessage = nil
+}
+
+func (x *TestRequiredForeign) ClearOneofField() {
+	x.xxx_hidden_OneofField = nil
+}
+
+func (x *TestRequiredForeign) ClearOneofMessage() {
+	if _, ok := x.xxx_hidden_OneofField.(*testRequiredForeign_OneofMessage); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+const TestRequiredForeign_OneofField_not_set_case case_TestRequiredForeign_OneofField = 0
+const TestRequiredForeign_OneofMessage_case case_TestRequiredForeign_OneofField = 4
+
+func (x *TestRequiredForeign) WhichOneofField() case_TestRequiredForeign_OneofField {
+	if x == nil {
+		return TestRequiredForeign_OneofField_not_set_case
+	}
+	switch x.xxx_hidden_OneofField.(type) {
+	case *testRequiredForeign_OneofMessage:
+		return TestRequiredForeign_OneofMessage_case
+	default:
+		return TestRequiredForeign_OneofField_not_set_case
+	}
+}
+
+type TestRequiredForeign_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptionalMessage *TestRequired
+	RepeatedMessage []*TestRequired
+	MapMessage      map[int32]*TestRequired
+	// Fields of oneof xxx_hidden_OneofField:
+	OneofMessage *TestRequired
+	// -- end of xxx_hidden_OneofField
+}
+
+func (b0 TestRequiredForeign_builder) Build() *TestRequiredForeign {
+	m0 := &TestRequiredForeign{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_OptionalMessage = b.OptionalMessage
+	x.xxx_hidden_RepeatedMessage = &b.RepeatedMessage
+	x.xxx_hidden_MapMessage = b.MapMessage
+	if b.OneofMessage != nil {
+		x.xxx_hidden_OneofField = &testRequiredForeign_OneofMessage{b.OneofMessage}
+	}
+	return m0
+}
+
+type case_TestRequiredForeign_OneofField protoreflect.FieldNumber
+
+func (x case_TestRequiredForeign_OneofField) String() string {
+	md := file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[4].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestRequiredForeign_OneofField interface {
+	isTestRequiredForeign_OneofField()
+}
+
+type testRequiredForeign_OneofMessage struct {
+	OneofMessage *TestRequired `protobuf:"bytes,4,opt,name=oneof_message,json=oneofMessage,oneof"`
+}
+
+func (*testRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
+
+type TestRequiredGroupFields struct {
+	state                    protoimpl.MessageState                    `protogen:"opaque.v1"`
+	xxx_hidden_Optionalgroup *TestRequiredGroupFields_OptionalGroup    `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	xxx_hidden_Repeatedgroup *[]*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields) Reset() {
+	*x = TestRequiredGroupFields{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields) GetOptionalgroup() *TestRequiredGroupFields_OptionalGroup {
+	if x != nil {
+		return x.xxx_hidden_Optionalgroup
+	}
+	return nil
+}
+
+func (x *TestRequiredGroupFields) GetRepeatedgroup() []*TestRequiredGroupFields_RepeatedGroup {
+	if x != nil {
+		if x.xxx_hidden_Repeatedgroup != nil {
+			return *x.xxx_hidden_Repeatedgroup
+		}
+	}
+	return nil
+}
+
+func (x *TestRequiredGroupFields) SetOptionalgroup(v *TestRequiredGroupFields_OptionalGroup) {
+	x.xxx_hidden_Optionalgroup = v
+}
+
+func (x *TestRequiredGroupFields) SetRepeatedgroup(v []*TestRequiredGroupFields_RepeatedGroup) {
+	x.xxx_hidden_Repeatedgroup = &v
+}
+
+func (x *TestRequiredGroupFields) HasOptionalgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Optionalgroup != nil
+}
+
+func (x *TestRequiredGroupFields) ClearOptionalgroup() {
+	x.xxx_hidden_Optionalgroup = nil
+}
+
+type TestRequiredGroupFields_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Optionalgroup *TestRequiredGroupFields_OptionalGroup
+	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup
+}
+
+func (b0 TestRequiredGroupFields_builder) Build() *TestRequiredGroupFields {
+	m0 := &TestRequiredGroupFields{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Optionalgroup = b.Optionalgroup
+	x.xxx_hidden_Repeatedgroup = &b.Repeatedgroup
+	return m0
+}
+
+type TestRequiredLazy struct {
+	state                          protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage" json:"optional_lazy_message,omitempty"`
+	// Deprecated: Do not use. This will be deleted in the near future.
+	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestRequiredLazy) Reset() {
+	*x = TestRequiredLazy{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredLazy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredLazy) ProtoMessage() {}
+
+func (x *TestRequiredLazy) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredLazy) GetOptionalLazyMessage() *TestRequired {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 0) {
+			if protoimpl.X.AtomicCheckPointerIsNil(&x.xxx_hidden_OptionalLazyMessage) {
+				protoimpl.X.UnmarshalField(x, 1)
+			}
+			var rv *TestRequired
+			protoimpl.X.AtomicLoadPointer(protoimpl.Pointer(&x.xxx_hidden_OptionalLazyMessage), protoimpl.Pointer(&rv))
+			return rv
+		}
+	}
+	return nil
+}
+
+func (x *TestRequiredLazy) SetOptionalLazyMessage(v *TestRequired) {
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_OptionalLazyMessage, v)
+	if v == nil {
+		protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	} else {
+		protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+	}
+}
+
+func (x *TestRequiredLazy) HasOptionalLazyMessage() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestRequiredLazy) ClearOptionalLazyMessage() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	protoimpl.X.AtomicSetPointer(&x.xxx_hidden_OptionalLazyMessage, (*TestRequired)(nil))
+}
+
+type TestRequiredLazy_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptionalLazyMessage *TestRequired
+}
+
+func (b0 TestRequiredLazy_builder) Build() *TestRequiredLazy {
+	m0 := &TestRequiredLazy{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptionalLazyMessage != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_OptionalLazyMessage = b.OptionalLazyMessage
+	}
+	return m0
+}
+
+type TestPackedTypes struct {
+	state                     protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
+	xxx_hidden_PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
+	xxx_hidden_PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
+	xxx_hidden_PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
+	xxx_hidden_PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
+	xxx_hidden_PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
+	xxx_hidden_PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
+	xxx_hidden_PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
+	xxx_hidden_PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
+	xxx_hidden_PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
+	xxx_hidden_PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
+	xxx_hidden_PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
+	xxx_hidden_PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
+	xxx_hidden_PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
+}
+
+func (x *TestPackedTypes) Reset() {
+	*x = TestPackedTypes{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestPackedTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestPackedTypes) ProtoMessage() {}
+
+func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestPackedTypes) GetPackedInt32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_PackedInt32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedInt64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_PackedInt64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedUint32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_PackedUint32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedUint64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_PackedUint64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSint32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_PackedSint32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSint64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_PackedSint64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFixed32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_PackedFixed32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFixed64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_PackedFixed64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSfixed32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_PackedSfixed32
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedSfixed64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_PackedSfixed64
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedFloat() []float32 {
+	if x != nil {
+		return x.xxx_hidden_PackedFloat
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedDouble() []float64 {
+	if x != nil {
+		return x.xxx_hidden_PackedDouble
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedBool() []bool {
+	if x != nil {
+		return x.xxx_hidden_PackedBool
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) GetPackedEnum() []ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_PackedEnum
+	}
+	return nil
+}
+
+func (x *TestPackedTypes) SetPackedInt32(v []int32) {
+	x.xxx_hidden_PackedInt32 = v
+}
+
+func (x *TestPackedTypes) SetPackedInt64(v []int64) {
+	x.xxx_hidden_PackedInt64 = v
+}
+
+func (x *TestPackedTypes) SetPackedUint32(v []uint32) {
+	x.xxx_hidden_PackedUint32 = v
+}
+
+func (x *TestPackedTypes) SetPackedUint64(v []uint64) {
+	x.xxx_hidden_PackedUint64 = v
+}
+
+func (x *TestPackedTypes) SetPackedSint32(v []int32) {
+	x.xxx_hidden_PackedSint32 = v
+}
+
+func (x *TestPackedTypes) SetPackedSint64(v []int64) {
+	x.xxx_hidden_PackedSint64 = v
+}
+
+func (x *TestPackedTypes) SetPackedFixed32(v []uint32) {
+	x.xxx_hidden_PackedFixed32 = v
+}
+
+func (x *TestPackedTypes) SetPackedFixed64(v []uint64) {
+	x.xxx_hidden_PackedFixed64 = v
+}
+
+func (x *TestPackedTypes) SetPackedSfixed32(v []int32) {
+	x.xxx_hidden_PackedSfixed32 = v
+}
+
+func (x *TestPackedTypes) SetPackedSfixed64(v []int64) {
+	x.xxx_hidden_PackedSfixed64 = v
+}
+
+func (x *TestPackedTypes) SetPackedFloat(v []float32) {
+	x.xxx_hidden_PackedFloat = v
+}
+
+func (x *TestPackedTypes) SetPackedDouble(v []float64) {
+	x.xxx_hidden_PackedDouble = v
+}
+
+func (x *TestPackedTypes) SetPackedBool(v []bool) {
+	x.xxx_hidden_PackedBool = v
+}
+
+func (x *TestPackedTypes) SetPackedEnum(v []ForeignEnum) {
+	x.xxx_hidden_PackedEnum = v
+}
+
+type TestPackedTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	PackedInt32    []int32
+	PackedInt64    []int64
+	PackedUint32   []uint32
+	PackedUint64   []uint64
+	PackedSint32   []int32
+	PackedSint64   []int64
+	PackedFixed32  []uint32
+	PackedFixed64  []uint64
+	PackedSfixed32 []int32
+	PackedSfixed64 []int64
+	PackedFloat    []float32
+	PackedDouble   []float64
+	PackedBool     []bool
+	PackedEnum     []ForeignEnum
+}
+
+func (b0 TestPackedTypes_builder) Build() *TestPackedTypes {
+	m0 := &TestPackedTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_PackedInt32 = b.PackedInt32
+	x.xxx_hidden_PackedInt64 = b.PackedInt64
+	x.xxx_hidden_PackedUint32 = b.PackedUint32
+	x.xxx_hidden_PackedUint64 = b.PackedUint64
+	x.xxx_hidden_PackedSint32 = b.PackedSint32
+	x.xxx_hidden_PackedSint64 = b.PackedSint64
+	x.xxx_hidden_PackedFixed32 = b.PackedFixed32
+	x.xxx_hidden_PackedFixed64 = b.PackedFixed64
+	x.xxx_hidden_PackedSfixed32 = b.PackedSfixed32
+	x.xxx_hidden_PackedSfixed64 = b.PackedSfixed64
+	x.xxx_hidden_PackedFloat = b.PackedFloat
+	x.xxx_hidden_PackedDouble = b.PackedDouble
+	x.xxx_hidden_PackedBool = b.PackedBool
+	x.xxx_hidden_PackedEnum = b.PackedEnum
+	return m0
+}
+
+type TestPackedExtensions struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestPackedExtensions) Reset() {
+	*x = TestPackedExtensions{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestPackedExtensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestPackedExtensions) ProtoMessage() {}
+
+func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestPackedExtensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestPackedExtensions_builder) Build() *TestPackedExtensions {
+	m0 := &TestPackedExtensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type RemoteDefault struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Default     enums_opaque.Enum      `protobuf:"varint,1,opt,name=default,enum=opaque.goproto.proto.enums.Enum" json:"default,omitempty"`
+	xxx_hidden_Zero        enums_opaque.Enum      `protobuf:"varint,2,opt,name=zero,enum=opaque.goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
+	xxx_hidden_One         enums_opaque.Enum      `protobuf:"varint,3,opt,name=one,enum=opaque.goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
+	xxx_hidden_Elevent     enums_opaque.Enum      `protobuf:"varint,4,opt,name=elevent,enum=opaque.goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
+	xxx_hidden_Seventeen   enums_opaque.Enum      `protobuf:"varint,5,opt,name=seventeen,enum=opaque.goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
+	xxx_hidden_Thirtyseven enums_opaque.Enum      `protobuf:"varint,6,opt,name=thirtyseven,enum=opaque.goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
+	xxx_hidden_Sixtyseven  enums_opaque.Enum      `protobuf:"varint,7,opt,name=sixtyseven,enum=opaque.goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
+	xxx_hidden_Negative    enums_opaque.Enum      `protobuf:"varint,8,opt,name=negative,enum=opaque.goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+// Default values for RemoteDefault fields.
+const (
+	Default_RemoteDefault_Zero        = enums_opaque.Enum(0)  // enums_opaque.Enum_ZERO
+	Default_RemoteDefault_One         = enums_opaque.Enum(1)  // enums_opaque.Enum_ONE
+	Default_RemoteDefault_Elevent     = enums_opaque.Enum(11) // enums_opaque.Enum_ELEVENT
+	Default_RemoteDefault_Seventeen   = enums_opaque.Enum(17) // enums_opaque.Enum_SEVENTEEN
+	Default_RemoteDefault_Thirtyseven = enums_opaque.Enum(37) // enums_opaque.Enum_THIRTYSEVEN
+	Default_RemoteDefault_Sixtyseven  = enums_opaque.Enum(67) // enums_opaque.Enum_SIXTYSEVEN
+	Default_RemoteDefault_Negative    = enums_opaque.Enum(-1) // enums_opaque.Enum_NEGATIVE
+)
+
+func (x *RemoteDefault) Reset() {
+	*x = RemoteDefault{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RemoteDefault) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RemoteDefault) ProtoMessage() {}
+
+func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *RemoteDefault) GetDefault() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 0) {
+			return x.xxx_hidden_Default
+		}
+	}
+	return enums_opaque.Enum(1337)
+}
+
+func (x *RemoteDefault) GetZero() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 1) {
+			return x.xxx_hidden_Zero
+		}
+	}
+	return Default_RemoteDefault_Zero
+}
+
+func (x *RemoteDefault) GetOne() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 2) {
+			return x.xxx_hidden_One
+		}
+	}
+	return Default_RemoteDefault_One
+}
+
+func (x *RemoteDefault) GetElevent() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 3) {
+			return x.xxx_hidden_Elevent
+		}
+	}
+	return Default_RemoteDefault_Elevent
+}
+
+func (x *RemoteDefault) GetSeventeen() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 4) {
+			return x.xxx_hidden_Seventeen
+		}
+	}
+	return Default_RemoteDefault_Seventeen
+}
+
+func (x *RemoteDefault) GetThirtyseven() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 5) {
+			return x.xxx_hidden_Thirtyseven
+		}
+	}
+	return Default_RemoteDefault_Thirtyseven
+}
+
+func (x *RemoteDefault) GetSixtyseven() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 6) {
+			return x.xxx_hidden_Sixtyseven
+		}
+	}
+	return Default_RemoteDefault_Sixtyseven
+}
+
+func (x *RemoteDefault) GetNegative() enums_opaque.Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 7) {
+			return x.xxx_hidden_Negative
+		}
+	}
+	return Default_RemoteDefault_Negative
+}
+
+func (x *RemoteDefault) SetDefault(v enums_opaque.Enum) {
+	x.xxx_hidden_Default = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 8)
+}
+
+func (x *RemoteDefault) SetZero(v enums_opaque.Enum) {
+	x.xxx_hidden_Zero = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 8)
+}
+
+func (x *RemoteDefault) SetOne(v enums_opaque.Enum) {
+	x.xxx_hidden_One = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 8)
+}
+
+func (x *RemoteDefault) SetElevent(v enums_opaque.Enum) {
+	x.xxx_hidden_Elevent = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 8)
+}
+
+func (x *RemoteDefault) SetSeventeen(v enums_opaque.Enum) {
+	x.xxx_hidden_Seventeen = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 4, 8)
+}
+
+func (x *RemoteDefault) SetThirtyseven(v enums_opaque.Enum) {
+	x.xxx_hidden_Thirtyseven = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 5, 8)
+}
+
+func (x *RemoteDefault) SetSixtyseven(v enums_opaque.Enum) {
+	x.xxx_hidden_Sixtyseven = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 6, 8)
+}
+
+func (x *RemoteDefault) SetNegative(v enums_opaque.Enum) {
+	x.xxx_hidden_Negative = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 7, 8)
+}
+
+func (x *RemoteDefault) HasDefault() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *RemoteDefault) HasZero() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *RemoteDefault) HasOne() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *RemoteDefault) HasElevent() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *RemoteDefault) HasSeventeen() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 4)
+}
+
+func (x *RemoteDefault) HasThirtyseven() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 5)
+}
+
+func (x *RemoteDefault) HasSixtyseven() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 6)
+}
+
+func (x *RemoteDefault) HasNegative() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 7)
+}
+
+func (x *RemoteDefault) ClearDefault() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_Default = enums_opaque.Enum_DEFAULT
+}
+
+func (x *RemoteDefault) ClearZero() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+}
+
+func (x *RemoteDefault) ClearOne() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+}
+
+func (x *RemoteDefault) ClearElevent() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+}
+
+func (x *RemoteDefault) ClearSeventeen() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 4)
+}
+
+func (x *RemoteDefault) ClearThirtyseven() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 5)
+}
+
+func (x *RemoteDefault) ClearSixtyseven() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 6)
+}
+
+func (x *RemoteDefault) ClearNegative() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 7)
+}
+
+type RemoteDefault_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Default     *enums_opaque.Enum
+	Zero        *enums_opaque.Enum
+	One         *enums_opaque.Enum
+	Elevent     *enums_opaque.Enum
+	Seventeen   *enums_opaque.Enum
+	Thirtyseven *enums_opaque.Enum
+	Sixtyseven  *enums_opaque.Enum
+	Negative    *enums_opaque.Enum
+}
+
+func (b0 RemoteDefault_builder) Build() *RemoteDefault {
+	m0 := &RemoteDefault{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.Default != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 8)
+		x.xxx_hidden_Default = *b.Default
+	}
+	if b.Zero != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 8)
+		x.xxx_hidden_Zero = *b.Zero
+	}
+	if b.One != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 8)
+		x.xxx_hidden_One = *b.One
+	}
+	if b.Elevent != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 8)
+		x.xxx_hidden_Elevent = *b.Elevent
+	}
+	if b.Seventeen != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 4, 8)
+		x.xxx_hidden_Seventeen = *b.Seventeen
+	}
+	if b.Thirtyseven != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 5, 8)
+		x.xxx_hidden_Thirtyseven = *b.Thirtyseven
+	}
+	if b.Sixtyseven != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 6, 8)
+		x.xxx_hidden_Sixtyseven = *b.Sixtyseven
+	}
+	if b.Negative != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 7, 8)
+		x.xxx_hidden_Negative = *b.Negative
+	}
+	return m0
+}
+
+type TestAllTypes_NestedMessage struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_NestedMessage) Reset() {
+	*x = TestAllTypes_NestedMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_NestedMessage) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllTypes_NestedMessage) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *TestAllTypes_NestedMessage) SetCorecursive(v *TestAllTypes) {
+	x.xxx_hidden_Corecursive = v
+}
+
+func (x *TestAllTypes_NestedMessage) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestAllTypes_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Corecursive != nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *TestAllTypes_NestedMessage) ClearCorecursive() {
+	x.xxx_hidden_Corecursive = nil
+}
+
+type TestAllTypes_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           *int32
+	Corecursive *TestAllTypes
+}
+
+func (b0 TestAllTypes_NestedMessage_builder) Build() *TestAllTypes_NestedMessage {
+	m0 := &TestAllTypes_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_A = *b.A
+	}
+	x.xxx_hidden_Corecursive = b.Corecursive
+	return m0
+}
+
+type TestAllTypes_OptionalGroup struct {
+	state                            protoimpl.MessageState      `protogen:"opaque.v1"`
+	xxx_hidden_A                     int32                       `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	xxx_hidden_SameFieldNumber       int32                       `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
+	XXX_presence                     [1]uint32
+	unknownFields                    protoimpl.UnknownFields
+	sizeCache                        protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_OptionalGroup) Reset() {
+	*x = TestAllTypes_OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_OptionalGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OptionalGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes_OptionalGroup) GetSameFieldNumber() int32 {
+	if x != nil {
+		return x.xxx_hidden_SameFieldNumber
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OptionalGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *TestAllTypes_OptionalGroup) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes_OptionalGroup) SetSameFieldNumber(v int32) {
+	x.xxx_hidden_SameFieldNumber = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *TestAllTypes_OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestAllTypes_OptionalGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes_OptionalGroup) HasSameFieldNumber() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes_OptionalGroup) ClearSameFieldNumber() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_SameFieldNumber = 0
+}
+
+type TestAllTypes_OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllTypes_NestedMessage
+	SameFieldNumber       *int32
+}
+
+func (b0 TestAllTypes_OptionalGroup_builder) Build() *TestAllTypes_OptionalGroup {
+	m0 := &TestAllTypes_OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_A = *b.A
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	if b.SameFieldNumber != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_SameFieldNumber = *b.SameFieldNumber
+	}
+	return m0
+}
+
+type TestAllTypes_RepeatedGroup struct {
+	state                            protoimpl.MessageState      `protogen:"opaque.v1"`
+	xxx_hidden_A                     int32                       `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
+	XXX_presence                     [1]uint32
+	unknownFields                    protoimpl.UnknownFields
+	sizeCache                        protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_RepeatedGroup) Reset() {
+	*x = TestAllTypes_RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_RepeatedGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_RepeatedGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *TestAllTypes_RepeatedGroup) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes_RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestAllTypes_RepeatedGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes_RepeatedGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *TestAllTypes_RepeatedGroup) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+type TestAllTypes_RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllTypes_NestedMessage
+}
+
+func (b0 TestAllTypes_RepeatedGroup_builder) Build() *TestAllTypes_RepeatedGroup {
+	m0 := &TestAllTypes_RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_A = *b.A
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type TestAllTypes_OneofGroup struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_B           int32                  `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_OneofGroup) Reset() {
+	*x = TestAllTypes_OneofGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_OneofGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_OneofGroup) ProtoMessage() {}
+
+func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_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)
+}
+
+func (x *TestAllTypes_OneofGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OneofGroup) GetB() int32 {
+	if x != nil {
+		return x.xxx_hidden_B
+	}
+	return 0
+}
+
+func (x *TestAllTypes_OneofGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *TestAllTypes_OneofGroup) SetB(v int32) {
+	x.xxx_hidden_B = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *TestAllTypes_OneofGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestAllTypes_OneofGroup) HasB() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *TestAllTypes_OneofGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *TestAllTypes_OneofGroup) ClearB() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_B = 0
+}
+
+type TestAllTypes_OneofGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+	B *int32
+}
+
+func (b0 TestAllTypes_OneofGroup_builder) Build() *TestAllTypes_OneofGroup {
+	m0 := &TestAllTypes_OneofGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_A = *b.A
+	}
+	if b.B != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_B = *b.B
+	}
+	return m0
+}
+
+type TestRequiredGroupFields_OptionalGroup struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
+	*x = TestRequiredGroupFields_OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestRequiredGroupFields_OptionalGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+type TestRequiredGroupFields_OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+}
+
+func (b0 TestRequiredGroupFields_OptionalGroup_builder) Build() *TestRequiredGroupFields_OptionalGroup {
+	m0 := &TestRequiredGroupFields_OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_A = *b.A
+	}
+	return m0
+}
+
+type TestRequiredGroupFields_RepeatedGroup struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
+	*x = TestRequiredGroupFields_RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestRequiredGroupFields_RepeatedGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+type TestRequiredGroupFields_RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A *int32
+}
+
+func (b0 TestRequiredGroupFields_RepeatedGroup_builder) Build() *TestRequiredGroupFields_RepeatedGroup {
+	m0 := &TestRequiredGroupFields_RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_A = *b.A
+	}
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         90,
+		Name:          "opaque.goproto.proto.testeditions.packed_int32",
+		Tag:           "varint,90,rep,packed,name=packed_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         91,
+		Name:          "opaque.goproto.proto.testeditions.packed_int64",
+		Tag:           "varint,91,rep,packed,name=packed_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         92,
+		Name:          "opaque.goproto.proto.testeditions.packed_uint32",
+		Tag:           "varint,92,rep,packed,name=packed_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         93,
+		Name:          "opaque.goproto.proto.testeditions.packed_uint64",
+		Tag:           "varint,93,rep,packed,name=packed_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         94,
+		Name:          "opaque.goproto.proto.testeditions.packed_sint32",
+		Tag:           "zigzag32,94,rep,packed,name=packed_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         95,
+		Name:          "opaque.goproto.proto.testeditions.packed_sint64",
+		Tag:           "zigzag64,95,rep,packed,name=packed_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         96,
+		Name:          "opaque.goproto.proto.testeditions.packed_fixed32",
+		Tag:           "fixed32,96,rep,packed,name=packed_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         97,
+		Name:          "opaque.goproto.proto.testeditions.packed_fixed64",
+		Tag:           "fixed64,97,rep,packed,name=packed_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         98,
+		Name:          "opaque.goproto.proto.testeditions.packed_sfixed32",
+		Tag:           "fixed32,98,rep,packed,name=packed_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         99,
+		Name:          "opaque.goproto.proto.testeditions.packed_sfixed64",
+		Tag:           "fixed64,99,rep,packed,name=packed_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]float32)(nil),
+		Field:         100,
+		Name:          "opaque.goproto.proto.testeditions.packed_float",
+		Tag:           "fixed32,100,rep,packed,name=packed_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]float64)(nil),
+		Field:         101,
+		Name:          "opaque.goproto.proto.testeditions.packed_double",
+		Tag:           "fixed64,101,rep,packed,name=packed_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]bool)(nil),
+		Field:         102,
+		Name:          "opaque.goproto.proto.testeditions.packed_bool",
+		Tag:           "varint,102,rep,packed,name=packed_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestPackedExtensions)(nil),
+		ExtensionType: ([]ForeignEnum)(nil),
+		Field:         103,
+		Name:          "opaque.goproto.proto.testeditions.packed_enum",
+		Tag:           "varint,103,rep,packed,name=packed_enum,enum=opaque.goproto.proto.testeditions.ForeignEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto",
+	},
+}
+
+// Extension fields to TestPackedExtensions.
+var (
+	// repeated int32 packed_int32 = 90;
+	E_PackedInt32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[0]
+	// repeated int64 packed_int64 = 91;
+	E_PackedInt64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[1]
+	// repeated uint32 packed_uint32 = 92;
+	E_PackedUint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[2]
+	// repeated uint64 packed_uint64 = 93;
+	E_PackedUint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[3]
+	// repeated sint32 packed_sint32 = 94;
+	E_PackedSint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[4]
+	// repeated sint64 packed_sint64 = 95;
+	E_PackedSint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[5]
+	// repeated fixed32 packed_fixed32 = 96;
+	E_PackedFixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[6]
+	// repeated fixed64 packed_fixed64 = 97;
+	E_PackedFixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[7]
+	// repeated sfixed32 packed_sfixed32 = 98;
+	E_PackedSfixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[8]
+	// repeated sfixed64 packed_sfixed64 = 99;
+	E_PackedSfixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[9]
+	// repeated float packed_float = 100;
+	E_PackedFloat = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[10]
+	// repeated double packed_double = 101;
+	E_PackedDouble = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[11]
+	// repeated bool packed_bool = 102;
+	E_PackedBool = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[12]
+	// repeated opaque.goproto.proto.testeditions.ForeignEnum packed_enum = 103;
+	E_PackedEnum = &file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes[13]
+)
+
+var File_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_rawDesc = []byte{
+	0x0a, 0x46, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+	0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x5f, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
+	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, 0x49, 0x0a, 0x0c, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7c, 0x20, 0x01, 0x28,
+	0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x03, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x11, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x12,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x82, 0x01, 0x20, 0x01,
+	0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x31, 0x0a, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x83,
+	0x01, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0f, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x33, 0x0a,
+	0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02,
+	0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x02,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x01,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75,
+	0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8e, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6a, 0x0a, 0x15, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69,
+	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x67, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x90,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
+	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01,
+	0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52,
+	0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c,
+	0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x7d, 0x0a, 0x18, 0x6e, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+	0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x18, 0x11,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65,
+	0x64, 0x12, 0x75, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x6c, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x62, 0x0a,
+	0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x5f, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d,
+	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6c, 0x61, 0x7a, 0x79, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x02, 0x28, 0x01, 0x52, 0x19, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a, 0x79, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
+	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11,
+	0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x25, 0x20,
+	0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x03, 0x28,
+	0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08,
+	0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27,
+	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6c,
+	0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+	0x2e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x18, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x75, 0x0a, 0x17,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x67, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x30, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x62, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
+	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5e, 0x0a, 0x13, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e,
+	0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x6a, 0x0a, 0x0f, 0x6d,
+	0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e,
+	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x44, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x76, 0x0a, 0x13, 0x6d,
+	0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79,
+	0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x12, 0x76, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x46, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x7c, 0x0a, 0x15, 0x6d,
+	0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x7c, 0x0a, 0x15, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x6a, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x12, 0x6d, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x42, 0x6f,
+	0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x70,
+	0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x6d, 0x0a, 0x10, 0x6d, 0x61,
+	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x19, 0x6d, 0x61,
+	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x7d, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x48, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61,
+	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x52, 0x20, 0x01, 0x28,
+	0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29,
+	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28,
+	0x11, 0x3a, 0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a, 0x02, 0x38,
+	0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x57, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
+	0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59,
+	0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x50, 0x20,
+	0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02,
+	0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32,
+	0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x0e, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x5e, 0x20,
+	0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c,
+	0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x60, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03,
+	0x42, 0x41, 0x52, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x61,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41,
+	0x52, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x71, 0x0a, 0x14, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a,
+	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02,
+	0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23,
+	0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76,
+	0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x63, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x79,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x78,
+	0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x70, 0x0a, 0x0d, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01,
+	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x6f,
+	0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a, 0xc1, 0x01,
+	0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+	0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x76, 0x0a,
+	0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65,
+	0x72, 0x1a, 0x95, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x61, 0x12, 0x76, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a,
+	0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70,
+	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a,
+	0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d,
+	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e,
+	0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
+	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x88, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+	0x1a, 0x82, 0x01, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x28, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x62, 0x22,
+	0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a,
+	0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12,
+	0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xba, 0x34, 0x0a, 0x1c,
+	0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x02,
+	0x66, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x31, 0x12, 0x3f, 0x0a,
+	0x02, 0x66, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x32, 0x12, 0x3f,
+	0x0a, 0x02, 0x66, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x33, 0x12,
+	0x3f, 0x0a, 0x02, 0x66, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66, 0x34,
+	0x12, 0x3f, 0x0a, 0x02, 0x66, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02, 0x66,
+	0x35, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x02,
+	0x66, 0x36, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x02, 0x66, 0x37, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x02, 0x66, 0x38, 0x12, 0x3f, 0x0a, 0x02, 0x66, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x02, 0x66, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x31, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x32, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31,
+	0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x31, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x36, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x31,
+	0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x37, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x31, 0x38,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x31, 0x39, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x31, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x32, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x31, 0x18, 0x15, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x32,
+	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x32, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x32, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x33, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x32, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x32, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x32, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x36, 0x18, 0x1a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x32, 0x37, 0x18,
+	0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x32, 0x38, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32, 0x38, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x32, 0x39, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x32,
+	0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x33, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x31, 0x18, 0x1f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18, 0x20,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33,
+	0x33, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x33, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x33, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x34,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x35, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x33, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x36, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x33, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x37, 0x18, 0x25, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x33, 0x38,
+	0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x38, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x33, 0x39, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x33, 0x39, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x34, 0x30, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x34, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x31, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x34, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x32, 0x18, 0x2a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x33, 0x18,
+	0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x34, 0x34, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x34, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x34, 0x35, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34,
+	0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x36, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x34, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x37, 0x18, 0x2f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34, 0x38, 0x18, 0x30,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x34,
+	0x39, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x34, 0x39, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x35, 0x30, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x30,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x31, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x35, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x32, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x35, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x33, 0x18, 0x35, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x34,
+	0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x34, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x35, 0x35, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x35, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x35, 0x36, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x35, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x37, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x35, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x38, 0x18, 0x3a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x35, 0x39, 0x18,
+	0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x35, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x36, 0x30, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x30, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x36, 0x31, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36,
+	0x31, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x32, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x36, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x33, 0x18, 0x3f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x34, 0x18, 0x40,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36,
+	0x35, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x35, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x36, 0x36, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x36,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x37, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x36, 0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x38, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x36, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x36, 0x39, 0x18, 0x45, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x36, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x30,
+	0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x30, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x37, 0x31, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x31, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x37, 0x32, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x37, 0x32, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x33, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x37, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x34, 0x18, 0x4a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x35, 0x18,
+	0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x37, 0x36, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x36, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x37, 0x37, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x37,
+	0x37, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x38, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x37, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x37, 0x39, 0x18, 0x4f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x37, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x30, 0x18, 0x50,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38,
+	0x31, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x31, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x38, 0x32, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x32,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x33, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x38, 0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x52, 0x03, 0x66, 0x38, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x35, 0x18, 0x55, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x36,
+	0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x36, 0x12, 0x41, 0x0a, 0x03,
+	0x66, 0x38, 0x37, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x38, 0x37, 0x12,
+	0x41, 0x0a, 0x03, 0x66, 0x38, 0x38, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66,
+	0x38, 0x38, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x38, 0x39, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x52, 0x03, 0x66, 0x38, 0x39, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x30, 0x18, 0x5a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x30, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x31, 0x18,
+	0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x31, 0x12, 0x41, 0x0a, 0x03, 0x66,
+	0x39, 0x32, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x32, 0x12, 0x41,
+	0x0a, 0x03, 0x66, 0x39, 0x33, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39,
+	0x33, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x34, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x03, 0x66, 0x39, 0x34, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x35, 0x18, 0x5f, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x35, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x36, 0x18, 0x60,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x36, 0x12, 0x41, 0x0a, 0x03, 0x66, 0x39,
+	0x37, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x37, 0x12, 0x41, 0x0a,
+	0x03, 0x66, 0x39, 0x38, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03, 0x66, 0x39, 0x38,
+	0x12, 0x41, 0x0a, 0x03, 0x66, 0x39, 0x39, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x03,
+	0x66, 0x39, 0x39, 0x12, 0x43, 0x0a, 0x04, 0x66, 0x31, 0x30, 0x30, 0x18, 0x64, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x04, 0x66, 0x31, 0x30, 0x30, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x01, 0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x22, 0x8d, 0x04, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x12, 0x5a, 0x0a, 0x10,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a,
+	0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x6e, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66,
+	0x69, 0x65, 0x6c, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x17, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
+	0x12, 0x75, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x75, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52,
+	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x24,
+	0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
+	0x13, 0x0a, 0x01, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x03, 0x52, 0x01, 0x61, 0x1a, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x13, 0x0a, 0x01, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x01, 0x61, 0x22, 0x7b, 0x0a, 0x10, 0x54, 0x65,
+	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x67,
+	0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x42, 0x02,
+	0x28, 0x01, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x7a, 0x79,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa7, 0x05, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28,
+	0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d, 0x20, 0x03,
+	0x28, 0x04, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x2c, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2c, 0x0a,
+	0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x62,
+	0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a, 0x0f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63,
+	0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28,
+	0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x26, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, 0x0b, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x22, 0x20, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80,
+	0x80, 0x80, 0x02, 0x22, 0xb7, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e,
+	0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x12, 0x3a, 0x0a, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x20, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75,
+	0x6d, 0x3a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f, 0x12, 0x37, 0x0a,
+	0x03, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e,
+	0x45, 0x52, 0x03, 0x6f, 0x6e, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45,
+	0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x73,
+	0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
+	0x3a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76,
+	0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x54,
+	0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0b, 0x74, 0x68, 0x69, 0x72,
+	0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53,
+	0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79,
+	0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,
+	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65,
+	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54,
+	0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2a, 0x52, 0x0a,
+	0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x0c,
+	0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x0f,
+	0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x04, 0x12,
+	0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x05,
+	0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10,
+	0x06, 0x3a, 0x61, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20,
+	0x03, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x63, 0x0a, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03, 0x28,
+	0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x63, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x65, 0x0a, 0x0e, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x37, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x3a, 0x65, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20,
+	0x03, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x67, 0x0a, 0x0f, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x37, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x3a, 0x67, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63,
+	0x20, 0x03, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x0c, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x37, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18,
+	0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x63,
+	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x3a, 0x5f, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28,
+	0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x8f, 0x01, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20,
+	0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45,
+	0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x59, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
+	0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_goTypes = []any{
+	(ForeignEnum)(0),                     // 0: opaque.goproto.proto.testeditions.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),         // 1: opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),                 // 2: opaque.goproto.proto.testeditions.TestAllTypes
+	(*TestManyMessageFieldsMessage)(nil), // 3: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage
+	(*ForeignMessage)(nil),               // 4: opaque.goproto.proto.testeditions.ForeignMessage
+	(*TestRequired)(nil),                 // 5: opaque.goproto.proto.testeditions.TestRequired
+	(*TestRequiredForeign)(nil),          // 6: opaque.goproto.proto.testeditions.TestRequiredForeign
+	(*TestRequiredGroupFields)(nil),      // 7: opaque.goproto.proto.testeditions.TestRequiredGroupFields
+	(*TestRequiredLazy)(nil),             // 8: opaque.goproto.proto.testeditions.TestRequiredLazy
+	(*TestPackedTypes)(nil),              // 9: opaque.goproto.proto.testeditions.TestPackedTypes
+	(*TestPackedExtensions)(nil),         // 10: opaque.goproto.proto.testeditions.TestPackedExtensions
+	(*RemoteDefault)(nil),                // 11: opaque.goproto.proto.testeditions.RemoteDefault
+	(*TestAllTypes_NestedMessage)(nil),   // 12: opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	(*TestAllTypes_OptionalGroup)(nil),   // 13: opaque.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	(*TestAllTypes_RepeatedGroup)(nil),   // 14: opaque.goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	nil,                                  // 15: opaque.goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	nil,                                  // 16: opaque.goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	nil,                                  // 17: opaque.goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	nil,                                  // 18: opaque.goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	nil,                                  // 19: opaque.goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	nil,                                  // 20: opaque.goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	nil,                                  // 21: opaque.goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                  // 22: opaque.goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                  // 23: opaque.goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                  // 24: opaque.goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                  // 25: opaque.goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	nil,                                  // 26: opaque.goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	nil,                                  // 27: opaque.goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	nil,                                  // 28: opaque.goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	nil,                                  // 29: opaque.goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	nil,                                  // 30: opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                  // 31: opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	(*TestAllTypes_OneofGroup)(nil),      // 32: opaque.goproto.proto.testeditions.TestAllTypes.OneofGroup
+	nil,                                  // 33: opaque.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	(*TestRequiredGroupFields_OptionalGroup)(nil), // 34: opaque.goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 35: opaque.goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	(ImportEnum)(0),        // 36: opaque.goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil),  // 37: opaque.goproto.proto.testeditions.ImportMessage
+	(enums_opaque.Enum)(0), // 38: opaque.goproto.proto.enums.Enum
+}
+var file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_depIdxs = []int32{
+	1,   // 0: opaque.goproto.proto.testeditions.TestAllTypes.singular_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 1: opaque.goproto.proto.testeditions.TestAllTypes.singular_foreign_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	36,  // 2: opaque.goproto.proto.testeditions.TestAllTypes.singular_import_enum:type_name -> opaque.goproto.proto.testeditions.ImportEnum
+	13,  // 3: opaque.goproto.proto.testeditions.TestAllTypes.optionalgroup:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	13,  // 4: opaque.goproto.proto.testeditions.TestAllTypes.not_group_like_delimited:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.OptionalGroup
+	12,  // 5: opaque.goproto.proto.testeditions.TestAllTypes.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 6: opaque.goproto.proto.testeditions.TestAllTypes.optional_foreign_message:type_name -> opaque.goproto.proto.testeditions.ForeignMessage
+	37,  // 7: opaque.goproto.proto.testeditions.TestAllTypes.optional_import_message:type_name -> opaque.goproto.proto.testeditions.ImportMessage
+	1,   // 8: opaque.goproto.proto.testeditions.TestAllTypes.optional_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 9: opaque.goproto.proto.testeditions.TestAllTypes.optional_foreign_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	36,  // 10: opaque.goproto.proto.testeditions.TestAllTypes.optional_import_enum:type_name -> opaque.goproto.proto.testeditions.ImportEnum
+	12,  // 11: opaque.goproto.proto.testeditions.TestAllTypes.optional_lazy_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	14,  // 12: opaque.goproto.proto.testeditions.TestAllTypes.repeatedgroup:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.RepeatedGroup
+	12,  // 13: opaque.goproto.proto.testeditions.TestAllTypes.repeated_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	4,   // 14: opaque.goproto.proto.testeditions.TestAllTypes.repeated_foreign_message:type_name -> opaque.goproto.proto.testeditions.ForeignMessage
+	37,  // 15: opaque.goproto.proto.testeditions.TestAllTypes.repeated_importmessage:type_name -> opaque.goproto.proto.testeditions.ImportMessage
+	1,   // 16: opaque.goproto.proto.testeditions.TestAllTypes.repeated_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 17: opaque.goproto.proto.testeditions.TestAllTypes.repeated_foreign_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	36,  // 18: opaque.goproto.proto.testeditions.TestAllTypes.repeated_importenum:type_name -> opaque.goproto.proto.testeditions.ImportEnum
+	15,  // 19: opaque.goproto.proto.testeditions.TestAllTypes.map_int32_int32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
+	16,  // 20: opaque.goproto.proto.testeditions.TestAllTypes.map_int64_int64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
+	17,  // 21: opaque.goproto.proto.testeditions.TestAllTypes.map_uint32_uint32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
+	18,  // 22: opaque.goproto.proto.testeditions.TestAllTypes.map_uint64_uint64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
+	19,  // 23: opaque.goproto.proto.testeditions.TestAllTypes.map_sint32_sint32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
+	20,  // 24: opaque.goproto.proto.testeditions.TestAllTypes.map_sint64_sint64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
+	21,  // 25: opaque.goproto.proto.testeditions.TestAllTypes.map_fixed32_fixed32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
+	22,  // 26: opaque.goproto.proto.testeditions.TestAllTypes.map_fixed64_fixed64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
+	23,  // 27: opaque.goproto.proto.testeditions.TestAllTypes.map_sfixed32_sfixed32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
+	24,  // 28: opaque.goproto.proto.testeditions.TestAllTypes.map_sfixed64_sfixed64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
+	25,  // 29: opaque.goproto.proto.testeditions.TestAllTypes.map_int32_float:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
+	26,  // 30: opaque.goproto.proto.testeditions.TestAllTypes.map_int32_double:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
+	27,  // 31: opaque.goproto.proto.testeditions.TestAllTypes.map_bool_bool:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
+	28,  // 32: opaque.goproto.proto.testeditions.TestAllTypes.map_string_string:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
+	29,  // 33: opaque.goproto.proto.testeditions.TestAllTypes.map_string_bytes:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
+	30,  // 34: opaque.goproto.proto.testeditions.TestAllTypes.map_string_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
+	31,  // 35: opaque.goproto.proto.testeditions.TestAllTypes.map_string_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
+	1,   // 36: opaque.goproto.proto.testeditions.TestAllTypes.default_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	0,   // 37: opaque.goproto.proto.testeditions.TestAllTypes.default_foreign_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	12,  // 38: opaque.goproto.proto.testeditions.TestAllTypes.oneof_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 39: opaque.goproto.proto.testeditions.TestAllTypes.oneof_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	32,  // 40: opaque.goproto.proto.testeditions.TestAllTypes.oneofgroup:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.OneofGroup
+	2,   // 41: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f1:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 42: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f2:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 43: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f3:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 44: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f4:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 45: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f5:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 46: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f6:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 47: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f7:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 48: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f8:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 49: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f9:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 50: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f10:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 51: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f11:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 52: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f12:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 53: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f13:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 54: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f14:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 55: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f15:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 56: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f16:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 57: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f17:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 58: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f18:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 59: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f19:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 60: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f20:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 61: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f21:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 62: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f22:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 63: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f23:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 64: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f24:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 65: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f25:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 66: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f26:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 67: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f27:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 68: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f28:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 69: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f29:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 70: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f30:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 71: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f31:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 72: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f32:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 73: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f33:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 74: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f34:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 75: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f35:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 76: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f36:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 77: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f37:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 78: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f38:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 79: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f39:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 80: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f40:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 81: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f41:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 82: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f42:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 83: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f43:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 84: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f44:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 85: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f45:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 86: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f46:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 87: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f47:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 88: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f48:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 89: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f49:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 90: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f50:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 91: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f51:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 92: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f52:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 93: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f53:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 94: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f54:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 95: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f55:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 96: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f56:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 97: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f57:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 98: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f58:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 99: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f59:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 100: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f60:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 101: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f61:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 102: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f62:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 103: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f63:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 104: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f64:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 105: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f65:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 106: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f66:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 107: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f67:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 108: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f68:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 109: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f69:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 110: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f70:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 111: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f71:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 112: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f72:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 113: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f73:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 114: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f74:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 115: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f75:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 116: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f76:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 117: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f77:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 118: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f78:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 119: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f79:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 120: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f80:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 121: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f81:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 122: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f82:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 123: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f83:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 124: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f84:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 125: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f85:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 126: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f86:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 127: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f87:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 128: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f88:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 129: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f89:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 130: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f90:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 131: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f91:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 132: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f92:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 133: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f93:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 134: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f94:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 135: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f95:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 136: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f96:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 137: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f97:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 138: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f98:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 139: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f99:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	2,   // 140: opaque.goproto.proto.testeditions.TestManyMessageFieldsMessage.f100:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	5,   // 141: opaque.goproto.proto.testeditions.TestRequiredForeign.optional_message:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	5,   // 142: opaque.goproto.proto.testeditions.TestRequiredForeign.repeated_message:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	33,  // 143: opaque.goproto.proto.testeditions.TestRequiredForeign.map_message:type_name -> opaque.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
+	5,   // 144: opaque.goproto.proto.testeditions.TestRequiredForeign.oneof_message:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	34,  // 145: opaque.goproto.proto.testeditions.TestRequiredGroupFields.optionalgroup:type_name -> opaque.goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
+	35,  // 146: opaque.goproto.proto.testeditions.TestRequiredGroupFields.repeatedgroup:type_name -> opaque.goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
+	5,   // 147: opaque.goproto.proto.testeditions.TestRequiredLazy.optional_lazy_message:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	0,   // 148: opaque.goproto.proto.testeditions.TestPackedTypes.packed_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	38,  // 149: opaque.goproto.proto.testeditions.RemoteDefault.default:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 150: opaque.goproto.proto.testeditions.RemoteDefault.zero:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 151: opaque.goproto.proto.testeditions.RemoteDefault.one:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 152: opaque.goproto.proto.testeditions.RemoteDefault.elevent:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 153: opaque.goproto.proto.testeditions.RemoteDefault.seventeen:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 154: opaque.goproto.proto.testeditions.RemoteDefault.thirtyseven:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 155: opaque.goproto.proto.testeditions.RemoteDefault.sixtyseven:type_name -> opaque.goproto.proto.enums.Enum
+	38,  // 156: opaque.goproto.proto.testeditions.RemoteDefault.negative:type_name -> opaque.goproto.proto.enums.Enum
+	2,   // 157: opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage.corecursive:type_name -> opaque.goproto.proto.testeditions.TestAllTypes
+	12,  // 158: opaque.goproto.proto.testeditions.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 159: opaque.goproto.proto.testeditions.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	12,  // 160: opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedMessage
+	1,   // 161: opaque.goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	5,   // 162: opaque.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry.value:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	10,  // 163: opaque.goproto.proto.testeditions.packed_int32:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 164: opaque.goproto.proto.testeditions.packed_int64:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 165: opaque.goproto.proto.testeditions.packed_uint32:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 166: opaque.goproto.proto.testeditions.packed_uint64:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 167: opaque.goproto.proto.testeditions.packed_sint32:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 168: opaque.goproto.proto.testeditions.packed_sint64:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 169: opaque.goproto.proto.testeditions.packed_fixed32:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 170: opaque.goproto.proto.testeditions.packed_fixed64:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 171: opaque.goproto.proto.testeditions.packed_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 172: opaque.goproto.proto.testeditions.packed_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 173: opaque.goproto.proto.testeditions.packed_float:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 174: opaque.goproto.proto.testeditions.packed_double:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 175: opaque.goproto.proto.testeditions.packed_bool:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	10,  // 176: opaque.goproto.proto.testeditions.packed_enum:extendee -> opaque.goproto.proto.testeditions.TestPackedExtensions
+	0,   // 177: opaque.goproto.proto.testeditions.packed_enum:type_name -> opaque.goproto.proto.testeditions.ForeignEnum
+	178, // [178:178] is the sub-list for method output_type
+	178, // [178:178] is the sub-list for method input_type
+	177, // [177:178] is the sub-list for extension type_name
+	163, // [163:177] is the sub-list for extension extendee
+	0,   // [0:163] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_init() }
+func file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_init()
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[0].OneofWrappers = []any{
+		(*testAllTypes_OneofUint32)(nil),
+		(*testAllTypes_OneofNestedMessage)(nil),
+		(*testAllTypes_OneofString)(nil),
+		(*testAllTypes_OneofBytes)(nil),
+		(*testAllTypes_OneofBool)(nil),
+		(*testAllTypes_OneofUint64)(nil),
+		(*testAllTypes_OneofFloat)(nil),
+		(*testAllTypes_OneofDouble)(nil),
+		(*testAllTypes_OneofEnum)(nil),
+		(*testAllTypes_Oneofgroup)(nil),
+		(*testAllTypes_OneofOptionalUint32)(nil),
+	}
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes[4].OneofWrappers = []any{
+		(*testRequiredForeign_OneofMessage)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   34,
+			NumExtensions: 14,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto
new file mode 100644
index 0000000..4b6cd58
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto
@@ -0,0 +1,382 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.testeditions;
+
+import "internal/testprotos/enums/enums_opaque/enums.opaque.proto";
+import "internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message TestAllTypes {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllTypes corecursive = 2;
+  }
+
+  enum NestedEnum {
+    FOO = 0;
+    BAR = 1;
+    BAZ = 2;
+    NEG = -1;  // Intentionally negative.
+  }
+
+  int32 singular_int32 = 124 [features.field_presence = IMPLICIT];
+  int64 singular_int64 = 125 [features.field_presence = IMPLICIT];
+  uint32 singular_uint32 = 126 [features.field_presence = IMPLICIT];
+  uint64 singular_uint64 = 127 [features.field_presence = IMPLICIT];
+  sint32 singular_sint32 = 128 [features.field_presence = IMPLICIT];
+  sint64 singular_sint64 = 129 [features.field_presence = IMPLICIT];
+  fixed32 singular_fixed32 = 130 [features.field_presence = IMPLICIT];
+  fixed64 singular_fixed64 = 131 [features.field_presence = IMPLICIT];
+  sfixed32 singular_sfixed32 = 132 [features.field_presence = IMPLICIT];
+  sfixed64 singular_sfixed64 = 133 [features.field_presence = IMPLICIT];
+  float singular_float = 134 [features.field_presence = IMPLICIT];
+  double singular_double = 135 [features.field_presence = IMPLICIT];
+  bool singular_bool = 136 [features.field_presence = IMPLICIT];
+  string singular_string = 137 [features.field_presence = IMPLICIT];
+  bytes singular_bytes = 138 [features.field_presence = IMPLICIT];
+  // message-typed fields elided, as they cannot specify implicit presence.
+  NestedEnum singular_nested_enum = 142 [features.field_presence = IMPLICIT];
+  ForeignEnum singular_foreign_enum = 143 [features.field_presence = IMPLICIT];
+  ImportEnum singular_import_enum = 144 [features.field_presence = IMPLICIT];
+
+  int32 optional_int32 = 1;
+  int64 optional_int64 = 2;
+  uint32 optional_uint32 = 3;
+  uint64 optional_uint64 = 4;
+  sint32 optional_sint32 = 5;
+  sint64 optional_sint64 = 6;
+  fixed32 optional_fixed32 = 7;
+  fixed64 optional_fixed64 = 8;
+  sfixed32 optional_sfixed32 = 9;
+  sfixed64 optional_sfixed64 = 10;
+  float optional_float = 11;
+  double optional_double = 12;
+  bool optional_bool = 13;
+  string optional_string = 14;
+  bytes optional_bytes = 15;
+  message OptionalGroup {
+    int32 a = 17;
+    NestedMessage optional_nested_message = 1000;
+    int32 same_field_number = 16;
+  }
+  OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
+  OptionalGroup not_group_like_delimited = 17
+      [features.message_encoding = DELIMITED];
+  NestedMessage optional_nested_message = 18;
+  ForeignMessage optional_foreign_message = 19;
+  ImportMessage optional_import_message = 20;
+  NestedEnum optional_nested_enum = 21;
+  ForeignEnum optional_foreign_enum = 22;
+  ImportEnum optional_import_enum = 23;
+  NestedMessage optional_lazy_nested_message = 24 [lazy = true];
+
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+
+  message RepeatedGroup {
+    int32 a = 47;
+    NestedMessage optional_nested_message = 1001;
+  }
+  repeated RepeatedGroup repeatedgroup = 46 [
+    features.message_encoding = DELIMITED,
+    features.repeated_field_encoding = EXPANDED
+  ];
+  repeated NestedMessage repeated_nested_message = 48;
+  repeated ForeignMessage repeated_foreign_message = 49;
+  repeated ImportMessage repeated_importmessage = 50;
+  repeated NestedEnum repeated_nested_enum = 51;
+  repeated ForeignEnum repeated_foreign_enum = 52;
+  repeated ImportEnum repeated_importenum = 53;
+
+  map<int32, int32> map_int32_int32 = 56;
+  map<int64, int64> map_int64_int64 = 57;
+  map<uint32, uint32> map_uint32_uint32 = 58;
+  map<uint64, uint64> map_uint64_uint64 = 59;
+  map<sint32, sint32> map_sint32_sint32 = 60;
+  map<sint64, sint64> map_sint64_sint64 = 61;
+  map<fixed32, fixed32> map_fixed32_fixed32 = 62;
+  map<fixed64, fixed64> map_fixed64_fixed64 = 63;
+  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
+  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
+  map<int32, float> map_int32_float = 66;
+  map<int32, double> map_int32_double = 67;
+  map<bool, bool> map_bool_bool = 68;
+  map<string, string> map_string_string = 69;
+  map<string, bytes> map_string_bytes = 70;
+  map<string, NestedMessage> map_string_nested_message = 71;
+  map<string, NestedEnum> map_string_nested_enum = 73;
+
+  // Singular with defaults
+  int32 default_int32 = 81 [default = 81];
+  int64 default_int64 = 82 [default = 82];
+  uint32 default_uint32 = 83 [default = 83];
+  uint64 default_uint64 = 84 [default = 84];
+  sint32 default_sint32 = 85 [default = -85];
+  sint64 default_sint64 = 86 [default = 86];
+  fixed32 default_fixed32 = 87 [default = 87];
+  fixed64 default_fixed64 = 88 [default = 88];
+  sfixed32 default_sfixed32 = 89 [default = 89];
+  sfixed64 default_sfixed64 = 80 [default = -90];
+  float default_float = 91 [default = 91.5];
+  double default_double = 92 [default = 92e3];
+  bool default_bool = 93 [default = true];
+  string default_string = 94 [default = "hello"];
+  bytes default_bytes = 95 [default = "world"];
+  NestedEnum default_nested_enum = 96 [default = BAR];
+  ForeignEnum default_foreign_enum = 97 [default = FOREIGN_BAR];
+
+  message OneofGroup {
+    int32 a = 1;
+    int32 b = 2;
+  }
+  oneof oneof_field {
+    uint32 oneof_uint32 = 111;
+    NestedMessage oneof_nested_message = 112;
+    string oneof_string = 113;
+    bytes oneof_bytes = 114;
+    bool oneof_bool = 115;
+    uint64 oneof_uint64 = 116;
+    float oneof_float = 117;
+    double oneof_double = 118;
+    NestedEnum oneof_enum = 119;
+    OneofGroup oneofgroup = 121 [features.message_encoding = DELIMITED];
+  }
+
+  // A oneof with exactly one field.
+  oneof oneof_optional {
+    uint32 oneof_optional_uint32 = 120;
+  }
+}
+
+message TestManyMessageFieldsMessage {
+  TestAllTypes f1 = 1;
+  TestAllTypes f2 = 2;
+  TestAllTypes f3 = 3;
+  TestAllTypes f4 = 4;
+  TestAllTypes f5 = 5;
+  TestAllTypes f6 = 6;
+  TestAllTypes f7 = 7;
+  TestAllTypes f8 = 8;
+  TestAllTypes f9 = 9;
+  TestAllTypes f10 = 10;
+  TestAllTypes f11 = 11;
+  TestAllTypes f12 = 12;
+  TestAllTypes f13 = 13;
+  TestAllTypes f14 = 14;
+  TestAllTypes f15 = 15;
+  TestAllTypes f16 = 16;
+  TestAllTypes f17 = 17;
+  TestAllTypes f18 = 18;
+  TestAllTypes f19 = 19;
+  TestAllTypes f20 = 20;
+  TestAllTypes f21 = 21;
+  TestAllTypes f22 = 22;
+  TestAllTypes f23 = 23;
+  TestAllTypes f24 = 24;
+  TestAllTypes f25 = 25;
+  TestAllTypes f26 = 26;
+  TestAllTypes f27 = 27;
+  TestAllTypes f28 = 28;
+  TestAllTypes f29 = 29;
+  TestAllTypes f30 = 30;
+  TestAllTypes f31 = 31;
+  TestAllTypes f32 = 32;
+  TestAllTypes f33 = 33;
+  TestAllTypes f34 = 34;
+  TestAllTypes f35 = 35;
+  TestAllTypes f36 = 36;
+  TestAllTypes f37 = 37;
+  TestAllTypes f38 = 38;
+  TestAllTypes f39 = 39;
+  TestAllTypes f40 = 40;
+  TestAllTypes f41 = 41;
+  TestAllTypes f42 = 42;
+  TestAllTypes f43 = 43;
+  TestAllTypes f44 = 44;
+  TestAllTypes f45 = 45;
+  TestAllTypes f46 = 46;
+  TestAllTypes f47 = 47;
+  TestAllTypes f48 = 48;
+  TestAllTypes f49 = 49;
+  TestAllTypes f50 = 50;
+  TestAllTypes f51 = 51;
+  TestAllTypes f52 = 52;
+  TestAllTypes f53 = 53;
+  TestAllTypes f54 = 54;
+  TestAllTypes f55 = 55;
+  TestAllTypes f56 = 56;
+  TestAllTypes f57 = 57;
+  TestAllTypes f58 = 58;
+  TestAllTypes f59 = 59;
+  TestAllTypes f60 = 60;
+  TestAllTypes f61 = 61;
+  TestAllTypes f62 = 62;
+  TestAllTypes f63 = 63;
+  TestAllTypes f64 = 64;
+  TestAllTypes f65 = 65;
+  TestAllTypes f66 = 66;
+  TestAllTypes f67 = 67;
+  TestAllTypes f68 = 68;
+  TestAllTypes f69 = 69;
+  TestAllTypes f70 = 70;
+  TestAllTypes f71 = 71;
+  TestAllTypes f72 = 72;
+  TestAllTypes f73 = 73;
+  TestAllTypes f74 = 74;
+  TestAllTypes f75 = 75;
+  TestAllTypes f76 = 76;
+  TestAllTypes f77 = 77;
+  TestAllTypes f78 = 78;
+  TestAllTypes f79 = 79;
+  TestAllTypes f80 = 80;
+  TestAllTypes f81 = 81;
+  TestAllTypes f82 = 82;
+  TestAllTypes f83 = 83;
+  TestAllTypes f84 = 84;
+  TestAllTypes f85 = 85;
+  TestAllTypes f86 = 86;
+  TestAllTypes f87 = 87;
+  TestAllTypes f88 = 88;
+  TestAllTypes f89 = 89;
+  TestAllTypes f90 = 90;
+  TestAllTypes f91 = 91;
+  TestAllTypes f92 = 92;
+  TestAllTypes f93 = 93;
+  TestAllTypes f94 = 94;
+  TestAllTypes f95 = 95;
+  TestAllTypes f96 = 96;
+  TestAllTypes f97 = 97;
+  TestAllTypes f98 = 98;
+  TestAllTypes f99 = 99;
+  TestAllTypes f100 = 100;
+}
+
+message ForeignMessage {
+  int32 c = 1;
+  int32 d = 2;
+}
+
+enum ForeignEnum {
+  FOREIGN_ZERO = 0;
+  FOREIGN_FOO = 4;
+  FOREIGN_BAR = 5;
+  FOREIGN_BAZ = 6;
+}
+
+message TestRequired {
+  int32 required_field = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message TestRequiredForeign {
+  TestRequired optional_message = 1;
+  repeated TestRequired repeated_message = 2;
+  map<int32, TestRequired> map_message = 3;
+  oneof oneof_field {
+    TestRequired oneof_message = 4;
+  }
+}
+
+message TestRequiredGroupFields {
+  message OptionalGroup {
+    int32 a = 2 [features.field_presence = LEGACY_REQUIRED];
+  }
+  OptionalGroup optionalgroup = 1 [features.message_encoding = DELIMITED];
+  message RepeatedGroup {
+    int32 a = 4 [features.field_presence = LEGACY_REQUIRED];
+  }
+  repeated RepeatedGroup repeatedgroup = 3
+      [features.message_encoding = DELIMITED];
+}
+
+message TestRequiredLazy {
+  TestRequired optional_lazy_message = 1 [lazy = true];
+}
+
+message TestPackedTypes {
+  repeated int32 packed_int32 = 90 [features.repeated_field_encoding = PACKED];
+  repeated int64 packed_int64 = 91 [features.repeated_field_encoding = PACKED];
+  repeated uint32 packed_uint32 = 92
+      [features.repeated_field_encoding = PACKED];
+  repeated uint64 packed_uint64 = 93
+      [features.repeated_field_encoding = PACKED];
+  repeated sint32 packed_sint32 = 94
+      [features.repeated_field_encoding = PACKED];
+  repeated sint64 packed_sint64 = 95
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed32 packed_fixed32 = 96
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed64 packed_fixed64 = 97
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed32 packed_sfixed32 = 98
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed64 packed_sfixed64 = 99
+      [features.repeated_field_encoding = PACKED];
+  repeated float packed_float = 100 [features.repeated_field_encoding = PACKED];
+  repeated double packed_double = 101
+      [features.repeated_field_encoding = PACKED];
+  repeated bool packed_bool = 102 [features.repeated_field_encoding = PACKED];
+  repeated ForeignEnum packed_enum = 103
+      [features.repeated_field_encoding = PACKED];
+}
+
+message TestPackedExtensions {
+  extensions 1 to max;
+}
+
+extend TestPackedExtensions {
+  repeated int32 packed_int32 = 90 [features.repeated_field_encoding = PACKED];
+  repeated int64 packed_int64 = 91 [features.repeated_field_encoding = PACKED];
+  repeated uint32 packed_uint32 = 92
+      [features.repeated_field_encoding = PACKED];
+  repeated uint64 packed_uint64 = 93
+      [features.repeated_field_encoding = PACKED];
+  repeated sint32 packed_sint32 = 94
+      [features.repeated_field_encoding = PACKED];
+  repeated sint64 packed_sint64 = 95
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed32 packed_fixed32 = 96
+      [features.repeated_field_encoding = PACKED];
+  repeated fixed64 packed_fixed64 = 97
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed32 packed_sfixed32 = 98
+      [features.repeated_field_encoding = PACKED];
+  repeated sfixed64 packed_sfixed64 = 99
+      [features.repeated_field_encoding = PACKED];
+  repeated float packed_float = 100 [features.repeated_field_encoding = PACKED];
+  repeated double packed_double = 101
+      [features.repeated_field_encoding = PACKED];
+  repeated bool packed_bool = 102 [features.repeated_field_encoding = PACKED];
+  repeated ForeignEnum packed_enum = 103
+      [features.repeated_field_encoding = PACKED];
+}
+
+message RemoteDefault {
+  goproto.proto.enums.Enum default = 1;
+  goproto.proto.enums.Enum zero = 2 [default = ZERO];
+  goproto.proto.enums.Enum one = 3 [default = ONE];
+  goproto.proto.enums.Enum elevent = 4 [default = ELEVENT];
+  goproto.proto.enums.Enum seventeen = 5 [default = SEVENTEEN];
+  goproto.proto.enums.Enum thirtyseven = 6 [default = THIRTYSEVEN];
+  goproto.proto.enums.Enum sixtyseven = 7 [default = SIXTYSEVEN];
+  goproto.proto.enums.Enum negative = 8 [default = NEGATIVE];
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go
new file mode 100644
index 0000000..027a744
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go
@@ -0,0 +1,1615 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto
+
+package testeditions_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type TestAllExtensions struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestAllExtensions) Reset() {
+	*x = TestAllExtensions{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllExtensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllExtensions) ProtoMessage() {}
+
+func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestAllExtensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestAllExtensions_builder) Build() *TestAllExtensions {
+	m0 := &TestAllExtensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type OptionalGroup struct {
+	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
+	xxx_hidden_A                     int32                            `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_SameFieldNumber       int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
+	XXX_presence                     [1]uint32
+	unknownFields                    protoimpl.UnknownFields
+	sizeCache                        protoimpl.SizeCache
+}
+
+func (x *OptionalGroup) Reset() {
+	*x = OptionalGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OptionalGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OptionalGroup) ProtoMessage() {}
+
+func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *OptionalGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *OptionalGroup) GetSameFieldNumber() int32 {
+	if x != nil {
+		return x.xxx_hidden_SameFieldNumber
+	}
+	return 0
+}
+
+func (x *OptionalGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *OptionalGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *OptionalGroup) SetSameFieldNumber(v int32) {
+	x.xxx_hidden_SameFieldNumber = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *OptionalGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *OptionalGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *OptionalGroup) HasSameFieldNumber() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *OptionalGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *OptionalGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *OptionalGroup) ClearSameFieldNumber() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_SameFieldNumber = 0
+}
+
+func (x *OptionalGroup) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+type OptionalGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	SameFieldNumber       *int32
+	OptionalNestedMessage *TestAllExtensions_NestedMessage
+}
+
+func (b0 OptionalGroup_builder) Build() *OptionalGroup {
+	m0 := &OptionalGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_A = *b.A
+	}
+	if b.SameFieldNumber != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_SameFieldNumber = *b.SameFieldNumber
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type RepeatedGroup struct {
+	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
+	xxx_hidden_A                     int32                            `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
+	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
+	XXX_presence                     [1]uint32
+	unknownFields                    protoimpl.UnknownFields
+	sizeCache                        protoimpl.SizeCache
+}
+
+func (x *RepeatedGroup) Reset() {
+	*x = RepeatedGroup{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RepeatedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepeatedGroup) ProtoMessage() {}
+
+func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *RepeatedGroup) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *RepeatedGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *RepeatedGroup) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *RepeatedGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *RepeatedGroup) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *RepeatedGroup) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *RepeatedGroup) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *RepeatedGroup) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+type RepeatedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A                     *int32
+	OptionalNestedMessage *TestAllExtensions_NestedMessage
+}
+
+func (b0 RepeatedGroup_builder) Build() *RepeatedGroup {
+	m0 := &RepeatedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_A = *b.A
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	return m0
+}
+
+type TestFeatureResolution struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *TestFeatureResolution) Reset() {
+	*x = TestFeatureResolution{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestFeatureResolution) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestFeatureResolution) ProtoMessage() {}
+
+func (x *TestFeatureResolution) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type TestFeatureResolution_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 TestFeatureResolution_builder) Build() *TestFeatureResolution {
+	m0 := &TestFeatureResolution{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type RepeatedFieldEncoding struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *RepeatedFieldEncoding) Reset() {
+	*x = RepeatedFieldEncoding{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RepeatedFieldEncoding) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepeatedFieldEncoding) ProtoMessage() {}
+
+func (x *RepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type RepeatedFieldEncoding_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 RepeatedFieldEncoding_builder) Build() *RepeatedFieldEncoding {
+	m0 := &RepeatedFieldEncoding{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type TestAllExtensions_NestedMessage struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
+	xxx_hidden_Corecursive *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestAllExtensions_NestedMessage) Reset() {
+	*x = TestAllExtensions_NestedMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllExtensions_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllExtensions_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllExtensions_NestedMessage) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllExtensions_NestedMessage) GetCorecursive() *TestAllExtensions {
+	if x != nil {
+		return x.xxx_hidden_Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllExtensions_NestedMessage) SetA(v int32) {
+	x.xxx_hidden_A = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *TestAllExtensions_NestedMessage) SetCorecursive(v *TestAllExtensions) {
+	x.xxx_hidden_Corecursive = v
+}
+
+func (x *TestAllExtensions_NestedMessage) HasA() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *TestAllExtensions_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Corecursive != nil
+}
+
+func (x *TestAllExtensions_NestedMessage) ClearA() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_A = 0
+}
+
+func (x *TestAllExtensions_NestedMessage) ClearCorecursive() {
+	x.xxx_hidden_Corecursive = nil
+}
+
+type TestAllExtensions_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           *int32
+	Corecursive *TestAllExtensions
+}
+
+func (b0 TestAllExtensions_NestedMessage_builder) Build() *TestAllExtensions_NestedMessage {
+	m0 := &TestAllExtensions_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.A != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_A = *b.A
+	}
+	x.xxx_hidden_Corecursive = b.Corecursive
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         1,
+		Name:          "opaque.goproto.proto.testeditions.optional_int32",
+		Tag:           "varint,1,opt,name=optional_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         2,
+		Name:          "opaque.goproto.proto.testeditions.optional_int64",
+		Tag:           "varint,2,opt,name=optional_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         3,
+		Name:          "opaque.goproto.proto.testeditions.optional_uint32",
+		Tag:           "varint,3,opt,name=optional_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         4,
+		Name:          "opaque.goproto.proto.testeditions.optional_uint64",
+		Tag:           "varint,4,opt,name=optional_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         5,
+		Name:          "opaque.goproto.proto.testeditions.optional_sint32",
+		Tag:           "zigzag32,5,opt,name=optional_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         6,
+		Name:          "opaque.goproto.proto.testeditions.optional_sint64",
+		Tag:           "zigzag64,6,opt,name=optional_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         7,
+		Name:          "opaque.goproto.proto.testeditions.optional_fixed32",
+		Tag:           "fixed32,7,opt,name=optional_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         8,
+		Name:          "opaque.goproto.proto.testeditions.optional_fixed64",
+		Tag:           "fixed64,8,opt,name=optional_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         9,
+		Name:          "opaque.goproto.proto.testeditions.optional_sfixed32",
+		Tag:           "fixed32,9,opt,name=optional_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         10,
+		Name:          "opaque.goproto.proto.testeditions.optional_sfixed64",
+		Tag:           "fixed64,10,opt,name=optional_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float32)(nil),
+		Field:         11,
+		Name:          "opaque.goproto.proto.testeditions.optional_float",
+		Tag:           "fixed32,11,opt,name=optional_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float64)(nil),
+		Field:         12,
+		Name:          "opaque.goproto.proto.testeditions.optional_double",
+		Tag:           "fixed64,12,opt,name=optional_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         13,
+		Name:          "opaque.goproto.proto.testeditions.optional_bool",
+		Tag:           "varint,13,opt,name=optional_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         14,
+		Name:          "opaque.goproto.proto.testeditions.optional_string",
+		Tag:           "bytes,14,opt,name=optional_string",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]byte)(nil),
+		Field:         15,
+		Name:          "opaque.goproto.proto.testeditions.optional_bytes",
+		Tag:           "bytes,15,opt,name=optional_bytes",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*OptionalGroup)(nil),
+		Field:         16,
+		Name:          "opaque.goproto.proto.testeditions.optionalgroup",
+		Tag:           "group,16,opt,name=OptionalGroup",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
+		Field:         18,
+		Name:          "opaque.goproto.proto.testeditions.optional_nested_message",
+		Tag:           "bytes,18,opt,name=optional_nested_message",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
+		Field:         21,
+		Name:          "opaque.goproto.proto.testeditions.optional_nested_enum",
+		Tag:           "varint,21,opt,name=optional_nested_enum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         31,
+		Name:          "opaque.goproto.proto.testeditions.repeated_int32",
+		Tag:           "varint,31,rep,name=repeated_int32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         32,
+		Name:          "opaque.goproto.proto.testeditions.repeated_int64",
+		Tag:           "varint,32,rep,name=repeated_int64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         33,
+		Name:          "opaque.goproto.proto.testeditions.repeated_uint32",
+		Tag:           "varint,33,rep,name=repeated_uint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         34,
+		Name:          "opaque.goproto.proto.testeditions.repeated_uint64",
+		Tag:           "varint,34,rep,name=repeated_uint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         35,
+		Name:          "opaque.goproto.proto.testeditions.repeated_sint32",
+		Tag:           "zigzag32,35,rep,name=repeated_sint32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         36,
+		Name:          "opaque.goproto.proto.testeditions.repeated_sint64",
+		Tag:           "zigzag64,36,rep,name=repeated_sint64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         37,
+		Name:          "opaque.goproto.proto.testeditions.repeated_fixed32",
+		Tag:           "fixed32,37,rep,name=repeated_fixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]uint64)(nil),
+		Field:         38,
+		Name:          "opaque.goproto.proto.testeditions.repeated_fixed64",
+		Tag:           "fixed64,38,rep,name=repeated_fixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         39,
+		Name:          "opaque.goproto.proto.testeditions.repeated_sfixed32",
+		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]int64)(nil),
+		Field:         40,
+		Name:          "opaque.goproto.proto.testeditions.repeated_sfixed64",
+		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]float32)(nil),
+		Field:         41,
+		Name:          "opaque.goproto.proto.testeditions.repeated_float",
+		Tag:           "fixed32,41,rep,name=repeated_float",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]float64)(nil),
+		Field:         42,
+		Name:          "opaque.goproto.proto.testeditions.repeated_double",
+		Tag:           "fixed64,42,rep,name=repeated_double",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]bool)(nil),
+		Field:         43,
+		Name:          "opaque.goproto.proto.testeditions.repeated_bool",
+		Tag:           "varint,43,rep,name=repeated_bool",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]string)(nil),
+		Field:         44,
+		Name:          "opaque.goproto.proto.testeditions.repeated_string",
+		Tag:           "bytes,44,rep,name=repeated_string",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([][]byte)(nil),
+		Field:         45,
+		Name:          "opaque.goproto.proto.testeditions.repeated_bytes",
+		Tag:           "bytes,45,rep,name=repeated_bytes",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*RepeatedGroup)(nil),
+		Field:         46,
+		Name:          "opaque.goproto.proto.testeditions.repeatedgroup",
+		Tag:           "group,46,rep,name=RepeatedGroup",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
+		Field:         48,
+		Name:          "opaque.goproto.proto.testeditions.repeated_nested_message",
+		Tag:           "bytes,48,rep,name=repeated_nested_message",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
+		Field:         51,
+		Name:          "opaque.goproto.proto.testeditions.repeated_nested_enum",
+		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         81,
+		Name:          "opaque.goproto.proto.testeditions.default_int32",
+		Tag:           "varint,81,opt,name=default_int32,def=81",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         82,
+		Name:          "opaque.goproto.proto.testeditions.default_int64",
+		Tag:           "varint,82,opt,name=default_int64,def=82",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         83,
+		Name:          "opaque.goproto.proto.testeditions.default_uint32",
+		Tag:           "varint,83,opt,name=default_uint32,def=83",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         84,
+		Name:          "opaque.goproto.proto.testeditions.default_uint64",
+		Tag:           "varint,84,opt,name=default_uint64,def=84",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         85,
+		Name:          "opaque.goproto.proto.testeditions.default_sint32",
+		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         86,
+		Name:          "opaque.goproto.proto.testeditions.default_sint64",
+		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint32)(nil),
+		Field:         87,
+		Name:          "opaque.goproto.proto.testeditions.default_fixed32",
+		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*uint64)(nil),
+		Field:         88,
+		Name:          "opaque.goproto.proto.testeditions.default_fixed64",
+		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         89,
+		Name:          "opaque.goproto.proto.testeditions.default_sfixed32",
+		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*int64)(nil),
+		Field:         80,
+		Name:          "opaque.goproto.proto.testeditions.default_sfixed64",
+		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float32)(nil),
+		Field:         91,
+		Name:          "opaque.goproto.proto.testeditions.default_float",
+		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*float64)(nil),
+		Field:         92,
+		Name:          "opaque.goproto.proto.testeditions.default_double",
+		Tag:           "fixed64,92,opt,name=default_double,def=92000",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         93,
+		Name:          "opaque.goproto.proto.testeditions.default_bool",
+		Tag:           "varint,93,opt,name=default_bool,def=1",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         94,
+		Name:          "opaque.goproto.proto.testeditions.default_string",
+		Tag:           "bytes,94,opt,name=default_string,def=hello",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]byte)(nil),
+		Field:         95,
+		Name:          "opaque.goproto.proto.testeditions.default_bytes",
+		Tag:           "bytes,95,opt,name=default_bytes,def=world",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: (*TestRequired)(nil),
+		Field:         1000,
+		Name:          "opaque.goproto.proto.testeditions.single",
+		Tag:           "bytes,1000,opt,name=single",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestAllExtensions)(nil),
+		ExtensionType: ([]*TestRequired)(nil),
+		Field:         1001,
+		Name:          "opaque.goproto.proto.testeditions.multi",
+		Tag:           "bytes,1001,rep,name=multi",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         2,
+		Name:          "opaque.goproto.proto.testeditions.global_expanded_extension",
+		Tag:           "varint,2,rep,name=global_expanded_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         3,
+		Name:          "opaque.goproto.proto.testeditions.global_packed_extension_overriden",
+		Tag:           "varint,3,rep,packed,name=global_packed_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         4,
+		Name:          "opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension",
+		Tag:           "varint,4,rep,name=message_expanded_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         5,
+		Name:          "opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden",
+		Tag:           "varint,5,rep,packed,name=message_packed_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
+	},
+}
+
+// Extension fields to TestAllExtensions.
+var (
+	// optional int32 optional_int32 = 1;
+	E_OptionalInt32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[0]
+	// optional int64 optional_int64 = 2;
+	E_OptionalInt64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[1]
+	// optional uint32 optional_uint32 = 3;
+	E_OptionalUint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[2]
+	// optional uint64 optional_uint64 = 4;
+	E_OptionalUint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[3]
+	// optional sint32 optional_sint32 = 5;
+	E_OptionalSint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[4]
+	// optional sint64 optional_sint64 = 6;
+	E_OptionalSint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[5]
+	// optional fixed32 optional_fixed32 = 7;
+	E_OptionalFixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[6]
+	// optional fixed64 optional_fixed64 = 8;
+	E_OptionalFixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[7]
+	// optional sfixed32 optional_sfixed32 = 9;
+	E_OptionalSfixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[8]
+	// optional sfixed64 optional_sfixed64 = 10;
+	E_OptionalSfixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[9]
+	// optional float optional_float = 11;
+	E_OptionalFloat = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[10]
+	// optional double optional_double = 12;
+	E_OptionalDouble = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[11]
+	// optional bool optional_bool = 13;
+	E_OptionalBool = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[12]
+	// optional string optional_string = 14;
+	E_OptionalString = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[13]
+	// optional bytes optional_bytes = 15;
+	E_OptionalBytes = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[14]
+	// optional opaque.goproto.proto.testeditions.OptionalGroup optionalgroup = 16;
+	E_Optionalgroup = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[15]
+	// optional opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage optional_nested_message = 18;
+	E_OptionalNestedMessage = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[16]
+	// optional opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum optional_nested_enum = 21;
+	E_OptionalNestedEnum = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[17]
+	// repeated int32 repeated_int32 = 31;
+	E_RepeatedInt32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[18]
+	// repeated int64 repeated_int64 = 32;
+	E_RepeatedInt64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[19]
+	// repeated uint32 repeated_uint32 = 33;
+	E_RepeatedUint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[20]
+	// repeated uint64 repeated_uint64 = 34;
+	E_RepeatedUint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[21]
+	// repeated sint32 repeated_sint32 = 35;
+	E_RepeatedSint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[22]
+	// repeated sint64 repeated_sint64 = 36;
+	E_RepeatedSint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[23]
+	// repeated fixed32 repeated_fixed32 = 37;
+	E_RepeatedFixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[24]
+	// repeated fixed64 repeated_fixed64 = 38;
+	E_RepeatedFixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[25]
+	// repeated sfixed32 repeated_sfixed32 = 39;
+	E_RepeatedSfixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[26]
+	// repeated sfixed64 repeated_sfixed64 = 40;
+	E_RepeatedSfixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[27]
+	// repeated float repeated_float = 41;
+	E_RepeatedFloat = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[28]
+	// repeated double repeated_double = 42;
+	E_RepeatedDouble = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[29]
+	// repeated bool repeated_bool = 43;
+	E_RepeatedBool = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[30]
+	// repeated string repeated_string = 44;
+	E_RepeatedString = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[31]
+	// repeated bytes repeated_bytes = 45;
+	E_RepeatedBytes = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[32]
+	// repeated opaque.goproto.proto.testeditions.RepeatedGroup repeatedgroup = 46;
+	E_Repeatedgroup = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[33]
+	// repeated opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage repeated_nested_message = 48;
+	E_RepeatedNestedMessage = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[34]
+	// repeated opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum repeated_nested_enum = 51;
+	E_RepeatedNestedEnum = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[35]
+	// optional int32 default_int32 = 81;
+	E_DefaultInt32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[36]
+	// optional int64 default_int64 = 82;
+	E_DefaultInt64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[37]
+	// optional uint32 default_uint32 = 83;
+	E_DefaultUint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[38]
+	// optional uint64 default_uint64 = 84;
+	E_DefaultUint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[39]
+	// optional sint32 default_sint32 = 85;
+	E_DefaultSint32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[40]
+	// optional sint64 default_sint64 = 86;
+	E_DefaultSint64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[41]
+	// optional fixed32 default_fixed32 = 87;
+	E_DefaultFixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[42]
+	// optional fixed64 default_fixed64 = 88;
+	E_DefaultFixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[43]
+	// optional sfixed32 default_sfixed32 = 89;
+	E_DefaultSfixed32 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[44]
+	// optional sfixed64 default_sfixed64 = 80;
+	E_DefaultSfixed64 = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[45]
+	// optional float default_float = 91;
+	E_DefaultFloat = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[46]
+	// optional double default_double = 92;
+	E_DefaultDouble = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[47]
+	// optional bool default_bool = 93;
+	E_DefaultBool = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[48]
+	// optional string default_string = 94;
+	E_DefaultString = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[49]
+	// optional bytes default_bytes = 95;
+	E_DefaultBytes = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[50]
+	// optional opaque.goproto.proto.testeditions.TestRequired single = 1000;
+	E_Single = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[51]
+	// repeated opaque.goproto.proto.testeditions.TestRequired multi = 1001;
+	E_Multi = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[52]
+)
+
+// Extension fields to TestFeatureResolution.
+var (
+	// repeated int32 global_expanded_extension = 2;
+	E_GlobalExpandedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[53]
+	// repeated int32 global_packed_extension_overriden = 3;
+	E_GlobalPackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[54]
+	// repeated int32 message_expanded_extension = 4;
+	E_RepeatedFieldEncoding_MessageExpandedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[55]
+	// repeated int32 message_packed_extension_overriden = 5;
+	E_RepeatedFieldEncoding_MessagePackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[56]
+)
+
+var File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_rawDesc = []byte{
+	0x0a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x21, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x46, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67,
+	0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0x94, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x75, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72,
+	0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x2a, 0x08, 0x08,
+	0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc6, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f,
+	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d,
+	0x62, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8,
+	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61,
+	0x12, 0x7b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x21, 0x0a,
+	0x15, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f,
+	0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x08, 0x08, 0x02, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
+	0x22, 0x9e, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x32, 0x76, 0x0a, 0x1a, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x32, 0x8c, 0x01, 0x0a, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70,
+	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
+	0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01,
+	0x52, 0x1f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x6e, 0x3a, 0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5b,
+	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5f, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x11, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x11,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a,
+	0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
+	0x74, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5d, 0x0a, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x59, 0x0a, 0x0d, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x5d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x5b, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x3a, 0x93, 0x01, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67,
+	0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x30, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0xb0, 0x01, 0x0a, 0x17, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0xa2, 0x01, 0x0a, 0x14,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+	0x3a, 0x5b, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5b, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x11, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5b,
+	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x5d, 0x0a, 0x0f, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x34,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x59, 0x0a, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x5d, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2c,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x3a, 0x5b, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03,
+	0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x3a, 0x93, 0x01, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x30, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0xb0, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x42, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0xa2, 0x01, 0x0a, 0x14, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32,
+	0x3a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x5d, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31,
+	0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5d,
+	0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52,
+	0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5f, 0x0a,
+	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52,
+	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5f,
+	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34,
+	0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
+	0x60, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03, 0x2d,
+	0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x3a, 0x5f, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x3a,
+	0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x3a, 0x61, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x57, 0x20, 0x01, 0x28,
+	0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x61, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x58,
+	0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x63, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x64, 0x0a,
+	0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x50, 0x20, 0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d,
+	0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x3a, 0x5f, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02,
+	0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x62, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x01,
+	0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x5d, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d,
+	0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61,
+	0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x62, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75,
+	0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x60, 0x0a, 0x0d, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52,
+	0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x7e, 0x0a,
+	0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe8, 0x07,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x3a, 0x7c, 0x0a,
+	0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x3a, 0x74, 0x0a, 0x19, 0x67,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x17, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+	0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x3a, 0x8a, 0x01, 0x0a, 0x21, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x18, 0x01, 0x52, 0x1e,
+	0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x42, 0x5d,
+	0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x92, 0x03, 0x09, 0xd2, 0x3e, 0x02, 0x10, 0x03, 0x18, 0x02, 0x20, 0x03, 0x62, 0x08, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes = []any{
+	(*TestAllExtensions)(nil),               // 0: opaque.goproto.proto.testeditions.TestAllExtensions
+	(*OptionalGroup)(nil),                   // 1: opaque.goproto.proto.testeditions.OptionalGroup
+	(*RepeatedGroup)(nil),                   // 2: opaque.goproto.proto.testeditions.RepeatedGroup
+	(*TestFeatureResolution)(nil),           // 3: opaque.goproto.proto.testeditions.TestFeatureResolution
+	(*RepeatedFieldEncoding)(nil),           // 4: opaque.goproto.proto.testeditions.RepeatedFieldEncoding
+	(*TestAllExtensions_NestedMessage)(nil), // 5: opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	(TestAllTypes_NestedEnum)(0),            // 6: opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	(*TestRequired)(nil),                    // 7: opaque.goproto.proto.testeditions.TestRequired
+}
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs = []int32{
+	5,  // 0: opaque.goproto.proto.testeditions.OptionalGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	5,  // 1: opaque.goproto.proto.testeditions.RepeatedGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	0,  // 2: opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage.corecursive:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 3: opaque.goproto.proto.testeditions.optional_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 4: opaque.goproto.proto.testeditions.optional_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 5: opaque.goproto.proto.testeditions.optional_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 6: opaque.goproto.proto.testeditions.optional_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 7: opaque.goproto.proto.testeditions.optional_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 8: opaque.goproto.proto.testeditions.optional_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 9: opaque.goproto.proto.testeditions.optional_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 10: opaque.goproto.proto.testeditions.optional_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 11: opaque.goproto.proto.testeditions.optional_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 12: opaque.goproto.proto.testeditions.optional_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 13: opaque.goproto.proto.testeditions.optional_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 14: opaque.goproto.proto.testeditions.optional_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 15: opaque.goproto.proto.testeditions.optional_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 16: opaque.goproto.proto.testeditions.optional_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 17: opaque.goproto.proto.testeditions.optional_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 18: opaque.goproto.proto.testeditions.optionalgroup:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 19: opaque.goproto.proto.testeditions.optional_nested_message:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 20: opaque.goproto.proto.testeditions.optional_nested_enum:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 21: opaque.goproto.proto.testeditions.repeated_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 22: opaque.goproto.proto.testeditions.repeated_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 23: opaque.goproto.proto.testeditions.repeated_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 24: opaque.goproto.proto.testeditions.repeated_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 25: opaque.goproto.proto.testeditions.repeated_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 26: opaque.goproto.proto.testeditions.repeated_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 27: opaque.goproto.proto.testeditions.repeated_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 28: opaque.goproto.proto.testeditions.repeated_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 29: opaque.goproto.proto.testeditions.repeated_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 30: opaque.goproto.proto.testeditions.repeated_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 31: opaque.goproto.proto.testeditions.repeated_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 32: opaque.goproto.proto.testeditions.repeated_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 33: opaque.goproto.proto.testeditions.repeated_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 34: opaque.goproto.proto.testeditions.repeated_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 35: opaque.goproto.proto.testeditions.repeated_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 36: opaque.goproto.proto.testeditions.repeatedgroup:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 37: opaque.goproto.proto.testeditions.repeated_nested_message:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 38: opaque.goproto.proto.testeditions.repeated_nested_enum:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 39: opaque.goproto.proto.testeditions.default_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 40: opaque.goproto.proto.testeditions.default_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 41: opaque.goproto.proto.testeditions.default_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 42: opaque.goproto.proto.testeditions.default_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 43: opaque.goproto.proto.testeditions.default_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 44: opaque.goproto.proto.testeditions.default_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 45: opaque.goproto.proto.testeditions.default_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 46: opaque.goproto.proto.testeditions.default_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 47: opaque.goproto.proto.testeditions.default_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 48: opaque.goproto.proto.testeditions.default_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 49: opaque.goproto.proto.testeditions.default_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 50: opaque.goproto.proto.testeditions.default_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 51: opaque.goproto.proto.testeditions.default_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 52: opaque.goproto.proto.testeditions.default_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 53: opaque.goproto.proto.testeditions.default_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 54: opaque.goproto.proto.testeditions.single:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	0,  // 55: opaque.goproto.proto.testeditions.multi:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
+	3,  // 56: opaque.goproto.proto.testeditions.global_expanded_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 57: opaque.goproto.proto.testeditions.global_packed_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 58: opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	3,  // 59: opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	1,  // 60: opaque.goproto.proto.testeditions.optionalgroup:type_name -> opaque.goproto.proto.testeditions.OptionalGroup
+	5,  // 61: opaque.goproto.proto.testeditions.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	6,  // 62: opaque.goproto.proto.testeditions.optional_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	2,  // 63: opaque.goproto.proto.testeditions.repeatedgroup:type_name -> opaque.goproto.proto.testeditions.RepeatedGroup
+	5,  // 64: opaque.goproto.proto.testeditions.repeated_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
+	6,  // 65: opaque.goproto.proto.testeditions.repeated_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
+	7,  // 66: opaque.goproto.proto.testeditions.single:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	7,  // 67: opaque.goproto.proto.testeditions.multi:type_name -> opaque.goproto.proto.testeditions.TestRequired
+	68, // [68:68] is the sub-list for method output_type
+	68, // [68:68] is the sub-list for method input_type
+	60, // [60:68] is the sub-list for extension type_name
+	3,  // [3:60] is the sub-list for extension extendee
+	0,  // [0:3] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   6,
+			NumExtensions: 57,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto
new file mode 100644
index 0000000..052ffbf
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto
@@ -0,0 +1,129 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.testeditions;
+
+import "internal/testprotos/testeditions/testeditions_opaque/test.opaque.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+option features.repeated_field_encoding = EXPANDED;
+option features.utf8_validation = NONE;
+
+message TestAllExtensions {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllExtensions corecursive = 2;
+  }
+
+  extensions 1 to max;
+}
+
+extend TestAllExtensions {
+  int32 optional_int32 = 1;
+  int64 optional_int64 = 2;
+  uint32 optional_uint32 = 3;
+  uint64 optional_uint64 = 4;
+  sint32 optional_sint32 = 5;
+  sint64 optional_sint64 = 6;
+  fixed32 optional_fixed32 = 7;
+  fixed64 optional_fixed64 = 8;
+  sfixed32 optional_sfixed32 = 9;
+  sfixed64 optional_sfixed64 = 10;
+  float optional_float = 11;
+  double optional_double = 12;
+  bool optional_bool = 13;
+  string optional_string = 14;
+  bytes optional_bytes = 15;
+  OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
+
+  TestAllExtensions.NestedMessage optional_nested_message = 18;
+  TestAllTypes.NestedEnum optional_nested_enum = 21;
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+  repeated RepeatedGroup repeatedgroup = 46
+      [features.message_encoding = DELIMITED];
+
+  repeated TestAllExtensions.NestedMessage repeated_nested_message = 48;
+  repeated TestAllTypes.NestedEnum repeated_nested_enum = 51;
+  int32 default_int32 = 81 [default = 81];
+
+  int64 default_int64 = 82 [default = 82];
+
+  uint32 default_uint32 = 83 [default = 83];
+
+  uint64 default_uint64 = 84 [default = 84];
+
+  sint32 default_sint32 = 85 [default = -85];
+
+  sint64 default_sint64 = 86 [default = 86];
+
+  fixed32 default_fixed32 = 87 [default = 87];
+
+  fixed64 default_fixed64 = 88 [default = 88];
+
+  sfixed32 default_sfixed32 = 89 [default = 89];
+
+  sfixed64 default_sfixed64 = 80 [default = -90];
+
+  float default_float = 91 [default = 91.5];
+
+  double default_double = 92 [default = 9.2e4];
+
+  bool default_bool = 93 [default = true];
+
+  string default_string = 94 [default = "hello"];
+
+  bytes default_bytes = 95 [default = "world"];
+}
+
+message OptionalGroup {
+  int32 a = 17;
+  int32 same_field_number = 16;
+  TestAllExtensions.NestedMessage optional_nested_message = 1000;
+}
+
+message RepeatedGroup {
+  int32 a = 47;
+  TestAllExtensions.NestedMessage optional_nested_message = 1001;
+}
+
+extend TestAllExtensions {
+  TestRequired single = 1000;
+  repeated TestRequired multi = 1001;
+}
+
+message TestFeatureResolution {
+  extensions 2 to max;
+}
+
+extend TestFeatureResolution {
+  repeated int32 global_expanded_extension = 2;
+  repeated int32 global_packed_extension_overriden = 3
+      [features.repeated_field_encoding = PACKED];
+}
+
+message RepeatedFieldEncoding {
+  extend TestFeatureResolution {
+    repeated int32 message_expanded_extension = 4;
+    repeated int32 message_packed_extension_overriden = 5
+        [features.repeated_field_encoding = PACKED];
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.pb.go
new file mode 100644
index 0000000..481538b
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.pb.go
@@ -0,0 +1,217 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto
+
+package testeditions_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type OtherRepeatedFieldEncoding struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OtherRepeatedFieldEncoding) Reset() {
+	*x = OtherRepeatedFieldEncoding{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OtherRepeatedFieldEncoding) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OtherRepeatedFieldEncoding) ProtoMessage() {}
+
+func (x *OtherRepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type OtherRepeatedFieldEncoding_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 OtherRepeatedFieldEncoding_builder) Build() *OtherRepeatedFieldEncoding {
+	m0 := &OtherRepeatedFieldEncoding{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         6,
+		Name:          "opaque.goproto.proto.testeditions.other_file_global_expanded_extension_overriden",
+		Tag:           "varint,6,rep,name=other_file_global_expanded_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         7,
+		Name:          "opaque.goproto.proto.testeditions.other_file_global_packed_extension",
+		Tag:           "varint,7,rep,packed,name=other_file_global_packed_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         8,
+		Name:          "opaque.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_expanded_extension_overriden",
+		Tag:           "varint,8,rep,name=other_file_message_expanded_extension_overriden",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*TestFeatureResolution)(nil),
+		ExtensionType: ([]int32)(nil),
+		Field:         9,
+		Name:          "opaque.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_packed_extension",
+		Tag:           "varint,9,rep,packed,name=other_file_message_packed_extension",
+		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto",
+	},
+}
+
+// Extension fields to TestFeatureResolution.
+var (
+	// repeated int32 other_file_global_expanded_extension_overriden = 6;
+	E_OtherFileGlobalExpandedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes[0]
+	// repeated int32 other_file_global_packed_extension = 7;
+	E_OtherFileGlobalPackedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes[1]
+	// repeated int32 other_file_message_expanded_extension_overriden = 8;
+	E_OtherRepeatedFieldEncoding_OtherFileMessageExpandedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes[2]
+	// repeated int32 other_file_message_packed_extension = 9;
+	E_OtherRepeatedFieldEncoding_OtherFileMessagePackedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes[3]
+)
+
+var File_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_rawDesc = []byte{
+	0x0a, 0x51, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x21, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x50, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x02, 0x0a, 0x1a,
+	0x4f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x32, 0xa4, 0x01, 0x0a, 0x2f, 0x6f,
+	0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65,
+	0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x18, 0x02, 0x52, 0x2a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x6e, 0x32, 0x86, 0x01, 0x0a, 0x23, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1f, 0x6f, 0x74, 0x68, 0x65, 0x72,
+	0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0xa2, 0x01, 0x0a, 0x2e, 0x6f,
+	0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+	0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x12, 0x38, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73,
+	0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x18, 0x02, 0x52, 0x29, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x47,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x3a,
+	0x84, 0x01, 0x0a, 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67,
+	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46,
+	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x69, 0x6c,
+	0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x5b, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x07, 0xd2, 0x3e, 0x02, 0x10,
+	0x03, 0x18, 0x01, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_goTypes = []any{
+	(*OtherRepeatedFieldEncoding)(nil), // 0: opaque.goproto.proto.testeditions.OtherRepeatedFieldEncoding
+	(*TestFeatureResolution)(nil),      // 1: opaque.goproto.proto.testeditions.TestFeatureResolution
+}
+var file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_depIdxs = []int32{
+	1, // 0: opaque.goproto.proto.testeditions.other_file_global_expanded_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	1, // 1: opaque.goproto.proto.testeditions.other_file_global_packed_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	1, // 2: opaque.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_expanded_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	1, // 3: opaque.goproto.proto.testeditions.OtherRepeatedFieldEncoding.other_file_message_packed_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
+	4, // [4:4] is the sub-list for method output_type
+	4, // [4:4] is the sub-list for method input_type
+	4, // [4:4] is the sub-list for extension type_name
+	0, // [0:4] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto != nil {
+		return
+	}
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 4,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_depIdxs,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_extension2_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto b/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto
new file mode 100644
index 0000000..5ed64ad
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_extension2.opaque.proto
@@ -0,0 +1,28 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.testeditions;
+
+import "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+option features.repeated_field_encoding = PACKED;
+
+extend TestFeatureResolution {
+  repeated int32 other_file_global_expanded_extension_overriden = 6
+      [features.repeated_field_encoding = EXPANDED];
+  repeated int32 other_file_global_packed_extension = 7;
+}
+
+message OtherRepeatedFieldEncoding {
+  extend TestFeatureResolution {
+    repeated int32 other_file_message_expanded_extension_overriden = 8
+        [features.repeated_field_encoding = EXPANDED];
+    repeated int32 other_file_message_packed_extension = 9;
+  }
+}
\ No newline at end of file
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.pb.go
new file mode 100644
index 0000000..318665a
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.pb.go
@@ -0,0 +1,162 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.proto
+
+package testeditions_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	reflect "reflect"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ImportMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ImportMessage_builder) Build() *ImportMessage {
+	m0 := &ImportMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var File_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_rawDesc = []byte{
+	0x0a, 0x4d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x21, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x1d, 0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a,
+	0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x59, 0x5a, 0x4f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x03,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: opaque.goproto.proto.testeditions.ImportEnum
+	(*ImportMessage)(nil), // 1: opaque.goproto.proto.testeditions.ImportMessage
+}
+var file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+	file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_init()
+}
+func file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_init() {
+	if File_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto = out.File
+	file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_rawDesc = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_goTypes = nil
+	file_internal_testprotos_testeditions_testeditions_opaque_test_import_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.proto b/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.proto
new file mode 100644
index 0000000..cf318c6
--- /dev/null
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_import.opaque.proto
@@ -0,0 +1,17 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+edition = "2023";
+
+package opaque.goproto.proto.testeditions;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+
+message ImportMessage {}
+
+enum ImportEnum {
+  IMPORT_ZERO = 0;
+}
\ No newline at end of file
diff --git a/internal/testprotos/textpb2/test.pb.go b/internal/testprotos/textpb2/test.pb.go
index c9d5218..fdf9dba 100644
--- a/internal/testprotos/textpb2/test.pb.go
+++ b/internal/testprotos/textpb2/test.pb.go
@@ -143,25 +143,24 @@
 
 // Scalars contains optional scalar fields.
 type Scalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptBool       *bool                  `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *int64                 `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *uint32                `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *uint64                `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptSint32     *int32                 `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
+	OptSint64     *int64                 `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
+	OptFixed32    *uint32                `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	OptFixed64    *uint64                `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
+	OptSfixed32   *int32                 `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
+	OptSfixed64   *int64                 `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
+	OptFloat      *float32               `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *float64               `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptBytes      []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptString     *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptBool     *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32    *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64    *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32   *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64   *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptSint32   *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
-	OptSint64   *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
-	OptFixed32  *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
-	OptFixed64  *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
-	OptSfixed32 *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
-	OptSfixed64 *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
-	OptFloat    *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble   *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptBytes    []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptString   *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Scalars) Reset() {
@@ -301,14 +300,13 @@
 
 // Message contains enum fields.
 type Enums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptEnum       *Enum                  `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
+	RptEnum       []Enum                 `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
+	OptNestedEnum *Enums_NestedEnum      `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	RptNestedEnum []Enums_NestedEnum     `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptEnum       *Enum              `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
-	RptEnum       []Enum             `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
-	OptNestedEnum *Enums_NestedEnum  `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
-	RptNestedEnum []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Enums) Reset() {
@@ -371,19 +369,18 @@
 
 // Message contains repeated fields.
 type Repeats struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RptBool       []bool                 `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
+	RptInt32      []int32                `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
+	RptInt64      []int64                `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
+	RptUint32     []uint32               `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
+	RptUint64     []uint64               `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
+	RptFloat      []float32              `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
+	RptDouble     []float64              `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
+	RptString     []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	RptBytes      [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RptBool   []bool    `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
-	RptInt32  []int32   `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
-	RptInt64  []int64   `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
-	RptUint32 []uint32  `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
-	RptUint64 []uint64  `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
-	RptFloat  []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
-	RptDouble []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
-	RptString []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
-	RptBytes  [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Repeats) Reset() {
@@ -481,12 +478,11 @@
 
 // Message contains map fields.
 type Maps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Int32ToStr    map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	StrToNested   map[string]*Nested     `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields protoimpl.UnknownFields
-
-	Int32ToStr  map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	StrToNested map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Maps) Reset() {
@@ -535,12 +531,11 @@
 
 // Message type used as submessage.
 type Nested struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested     *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested *Nested `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nested) Reset() {
@@ -589,14 +584,13 @@
 
 // Message contains message and group fields.
 type Nests struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptNested     *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optgroup      *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
+	RptNested     []*Nested              `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	Rptgroup      []*Nests_RptGroup      `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptNested *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optgroup  *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
-	RptNested []*Nested         `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	Rptgroup  []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests) Reset() {
@@ -659,16 +653,15 @@
 
 // Message contains required fields.
 type Requireds struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqBool       *bool                  `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
+	ReqSfixed64   *int64                 `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
+	ReqDouble     *float64               `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
+	ReqString     *string                `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	ReqEnum       *Enum                  `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
+	ReqNested     *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqBool     *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
-	ReqSfixed64 *int64   `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
-	ReqDouble   *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
-	ReqString   *string  `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	ReqEnum     *Enum    `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
-	ReqNested   *Nested  `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Requireds) Reset() {
@@ -745,12 +738,11 @@
 
 // Message contains both required and optional fields.
 type PartialRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	OptString     *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	OptString *string `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *PartialRequired) Reset() {
@@ -798,11 +790,10 @@
 }
 
 type NestedWithRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NestedWithRequired) Reset() {
@@ -843,17 +834,16 @@
 }
 
 type IndirectRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state       protoimpl.MessageState         `protogen:"open.v1"`
 	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
 	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to Union:
+	// Types that are valid to be assigned to Union:
 	//
 	//	*IndirectRequired_OneofNested
-	Union isIndirectRequired_Union `protobuf_oneof:"union"`
+	Union         isIndirectRequired_Union `protobuf_oneof:"union"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *IndirectRequired) Reset() {
@@ -907,16 +897,18 @@
 	return nil
 }
 
-func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
-	if m != nil {
-		return m.Union
+func (x *IndirectRequired) GetUnion() isIndirectRequired_Union {
+	if x != nil {
+		return x.Union
 	}
 	return nil
 }
 
 func (x *IndirectRequired) GetOneofNested() *NestedWithRequired {
-	if x, ok := x.GetUnion().(*IndirectRequired_OneofNested); ok {
-		return x.OneofNested
+	if x != nil {
+		if x, ok := x.Union.(*IndirectRequired_OneofNested); ok {
+			return x.OneofNested
+		}
 	}
 	return nil
 }
@@ -932,14 +924,13 @@
 func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
 
 type Extensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	OptString       *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBool         *bool                  `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32        *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBool   *bool   `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32  *int32  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Extensions) Reset() {
@@ -994,9 +985,9 @@
 }
 
 type ExtensionsContainer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtensionsContainer) Reset() {
@@ -1030,10 +1021,10 @@
 }
 
 type MessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *MessageSet) Reset() {
@@ -1067,11 +1058,10 @@
 }
 
 type MessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MessageSetExtension) Reset() {
@@ -1112,10 +1102,10 @@
 }
 
 type FakeMessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *FakeMessageSet) Reset() {
@@ -1149,11 +1139,10 @@
 }
 
 type FakeMessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FakeMessageSetExtension) Reset() {
@@ -1195,28 +1184,27 @@
 
 // Message contains well-known type fields.
 type KnownTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState  `protogen:"open.v1"`
+	OptBool       *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptFloat      *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptString     *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBytes      *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptDuration   *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
+	OptTimestamp  *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
+	OptStruct     *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
+	OptList       *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
+	OptValue      *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
+	OptNull       *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
+	OptEmpty      *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
+	OptAny        *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
+	OptFieldmask  *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
-	OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
-	OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
-	OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
-	OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
-	OptNull      *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
-	OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
-	OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
-	OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *KnownTypes) Reset() {
@@ -1377,11 +1365,10 @@
 
 // Message contains reserved field name.
 type ReservedFieldNames struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptInt32      *int32                 `protobuf:"varint,1,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptInt32 *int32 `protobuf:"varint,1,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ReservedFieldNames) Reset() {
@@ -1422,13 +1409,12 @@
 }
 
 type Nests_OptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state          protoimpl.MessageState         `protogen:"open.v1"`
 	OptString      *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	OptNested      *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	Optnestedgroup *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *Nests_OptGroup) Reset() {
@@ -1483,11 +1469,10 @@
 }
 
 type Nests_RptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RptString     []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RptString []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests_RptGroup) Reset() {
@@ -1528,11 +1513,10 @@
 }
 
 type Nests_OptGroup_OptNestedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptFixed32    *uint32                `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptFixed32 *uint32 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests_OptGroup_OptNestedGroup) Reset() {
diff --git a/internal/testprotos/textpb3/test.pb.go b/internal/testprotos/textpb3/test.pb.go
index 7f58488..01769d3 100644
--- a/internal/testprotos/textpb3/test.pb.go
+++ b/internal/testprotos/textpb3/test.pb.go
@@ -174,25 +174,24 @@
 
 // Scalars contains scalar field types.
 type Scalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SBool         bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
+	SInt32        int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
+	SInt64        int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
+	SUint32       uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
+	SUint64       uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
+	SSint32       int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
+	SSint64       int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
+	SFixed32      uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
+	SFixed64      uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
+	SSfixed32     int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
+	SSfixed64     int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
+	SFloat        float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
+	SDouble       float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
+	SBytes        []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
+	SString       string                 `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SBool     bool    `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
-	SInt32    int32   `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
-	SInt64    int64   `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
-	SUint32   uint32  `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
-	SUint64   uint64  `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
-	SSint32   int32   `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
-	SSint64   int64   `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
-	SFixed32  uint32  `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
-	SFixed64  uint64  `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
-	SSfixed32 int32   `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
-	SSfixed64 int64   `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
-	SFloat    float32 `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
-	SDouble   float64 `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
-	SBytes    []byte  `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
-	SString   string  `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Scalars) Reset() {
@@ -332,19 +331,18 @@
 
 // Message contains repeated fields.
 type Repeats struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RptBool       []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool,proto3" json:"rpt_bool,omitempty"`
+	RptInt32      []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32,proto3" json:"rpt_int32,omitempty"`
+	RptInt64      []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64,proto3" json:"rpt_int64,omitempty"`
+	RptUint32     []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32,proto3" json:"rpt_uint32,omitempty"`
+	RptUint64     []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64,proto3" json:"rpt_uint64,omitempty"`
+	RptFloat      []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat,proto3" json:"rpt_float,omitempty"`
+	RptDouble     []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble,proto3" json:"rpt_double,omitempty"`
+	RptString     []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString,proto3" json:"rpt_string,omitempty"`
+	RptBytes      [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes,proto3" json:"rpt_bytes,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RptBool   []bool    `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool,proto3" json:"rpt_bool,omitempty"`
-	RptInt32  []int32   `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32,proto3" json:"rpt_int32,omitempty"`
-	RptInt64  []int64   `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64,proto3" json:"rpt_int64,omitempty"`
-	RptUint32 []uint32  `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32,proto3" json:"rpt_uint32,omitempty"`
-	RptUint64 []uint64  `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64,proto3" json:"rpt_uint64,omitempty"`
-	RptFloat  []float32 `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat,proto3" json:"rpt_float,omitempty"`
-	RptDouble []float64 `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble,proto3" json:"rpt_double,omitempty"`
-	RptString []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString,proto3" json:"rpt_string,omitempty"`
-	RptBytes  [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes,proto3" json:"rpt_bytes,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Repeats) Reset() {
@@ -441,27 +439,26 @@
 }
 
 type Proto3Optional struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptBool       *bool                  `protobuf:"varint,1,opt,name=opt_bool,json=optBool,proto3,oneof" json:"opt_bool,omitempty"`
+	OptInt32      *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32,proto3,oneof" json:"opt_int32,omitempty"`
+	OptInt64      *int64                 `protobuf:"varint,3,opt,name=opt_int64,json=optInt64,proto3,oneof" json:"opt_int64,omitempty"`
+	OptUint32     *uint32                `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32,proto3,oneof" json:"opt_uint32,omitempty"`
+	OptUint64     *uint64                `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64,proto3,oneof" json:"opt_uint64,omitempty"`
+	OptSint32     *int32                 `protobuf:"zigzag32,12,opt,name=opt_sint32,json=optSint32,proto3,oneof" json:"opt_sint32,omitempty"`
+	OptSint64     *int64                 `protobuf:"zigzag64,13,opt,name=opt_sint64,json=optSint64,proto3,oneof" json:"opt_sint64,omitempty"`
+	OptFixed32    *uint32                `protobuf:"fixed32,14,opt,name=opt_fixed32,json=optFixed32,proto3,oneof" json:"opt_fixed32,omitempty"`
+	OptFixed64    *uint64                `protobuf:"fixed64,15,opt,name=opt_fixed64,json=optFixed64,proto3,oneof" json:"opt_fixed64,omitempty"`
+	OptSfixed32   *int32                 `protobuf:"fixed32,16,opt,name=opt_sfixed32,json=optSfixed32,proto3,oneof" json:"opt_sfixed32,omitempty"`
+	OptSfixed64   *int64                 `protobuf:"fixed64,17,opt,name=opt_sfixed64,json=optSfixed64,proto3,oneof" json:"opt_sfixed64,omitempty"`
+	OptFloat      *float32               `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat,proto3,oneof" json:"opt_float,omitempty"`
+	OptDouble     *float64               `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble,proto3,oneof" json:"opt_double,omitempty"`
+	OptBytes      []byte                 `protobuf:"bytes,8,opt,name=opt_bytes,json=optBytes,proto3,oneof" json:"opt_bytes,omitempty"`
+	OptString     *string                `protobuf:"bytes,9,opt,name=opt_string,json=optString,proto3,oneof" json:"opt_string,omitempty"`
+	OptEnum       *Enum                  `protobuf:"varint,10,opt,name=opt_enum,json=optEnum,proto3,enum=pb3.Enum,oneof" json:"opt_enum,omitempty"`
+	OptMessage    *Nested                `protobuf:"bytes,11,opt,name=opt_message,json=optMessage,proto3,oneof" json:"opt_message,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptBool     *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool,proto3,oneof" json:"opt_bool,omitempty"`
-	OptInt32    *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32,proto3,oneof" json:"opt_int32,omitempty"`
-	OptInt64    *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64,proto3,oneof" json:"opt_int64,omitempty"`
-	OptUint32   *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32,proto3,oneof" json:"opt_uint32,omitempty"`
-	OptUint64   *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64,proto3,oneof" json:"opt_uint64,omitempty"`
-	OptSint32   *int32   `protobuf:"zigzag32,12,opt,name=opt_sint32,json=optSint32,proto3,oneof" json:"opt_sint32,omitempty"`
-	OptSint64   *int64   `protobuf:"zigzag64,13,opt,name=opt_sint64,json=optSint64,proto3,oneof" json:"opt_sint64,omitempty"`
-	OptFixed32  *uint32  `protobuf:"fixed32,14,opt,name=opt_fixed32,json=optFixed32,proto3,oneof" json:"opt_fixed32,omitempty"`
-	OptFixed64  *uint64  `protobuf:"fixed64,15,opt,name=opt_fixed64,json=optFixed64,proto3,oneof" json:"opt_fixed64,omitempty"`
-	OptSfixed32 *int32   `protobuf:"fixed32,16,opt,name=opt_sfixed32,json=optSfixed32,proto3,oneof" json:"opt_sfixed32,omitempty"`
-	OptSfixed64 *int64   `protobuf:"fixed64,17,opt,name=opt_sfixed64,json=optSfixed64,proto3,oneof" json:"opt_sfixed64,omitempty"`
-	OptFloat    *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat,proto3,oneof" json:"opt_float,omitempty"`
-	OptDouble   *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble,proto3,oneof" json:"opt_double,omitempty"`
-	OptBytes    []byte   `protobuf:"bytes,8,opt,name=opt_bytes,json=optBytes,proto3,oneof" json:"opt_bytes,omitempty"`
-	OptString   *string  `protobuf:"bytes,9,opt,name=opt_string,json=optString,proto3,oneof" json:"opt_string,omitempty"`
-	OptEnum     *Enum    `protobuf:"varint,10,opt,name=opt_enum,json=optEnum,proto3,enum=pb3.Enum,oneof" json:"opt_enum,omitempty"`
-	OptMessage  *Nested  `protobuf:"bytes,11,opt,name=opt_message,json=optMessage,proto3,oneof" json:"opt_message,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Proto3Optional) Reset() {
@@ -614,12 +611,11 @@
 }
 
 type OptionalEnums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state         protoimpl.MessageState   `protogen:"open.v1"`
 	OptEnum       *Enum                    `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,proto3,enum=pb3.Enum,oneof" json:"opt_enum,omitempty"`
 	OptNestedEnum OptionalEnums_NestedEnum `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,proto3,enum=pb3.OptionalEnums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OptionalEnums) Reset() {
@@ -668,12 +664,11 @@
 
 // Message contains enum fields.
 type Enums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SEnum         Enum                   `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
+	SNestedEnum   Enums_NestedEnum       `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SEnum       Enum             `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
-	SNestedEnum Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Enums) Reset() {
@@ -722,11 +717,10 @@
 
 // Message contains nested message field.
 type Nests struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SNested       *Nested                `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests) Reset() {
@@ -768,12 +762,11 @@
 
 // Message type used as submessage.
 type Nested struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SString       string                 `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
+	SNested       *Nested                `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SString string  `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
-	SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nested) Reset() {
@@ -822,16 +815,15 @@
 
 // Message contains oneof field.
 type Oneofs struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Union:
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Types that are valid to be assigned to Union:
 	//
 	//	*Oneofs_OneofEnum
 	//	*Oneofs_OneofString
 	//	*Oneofs_OneofNested
-	Union isOneofs_Union `protobuf_oneof:"union"`
+	Union         isOneofs_Union `protobuf_oneof:"union"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Oneofs) Reset() {
@@ -864,30 +856,36 @@
 	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *Oneofs) GetUnion() isOneofs_Union {
-	if m != nil {
-		return m.Union
+func (x *Oneofs) GetUnion() isOneofs_Union {
+	if x != nil {
+		return x.Union
 	}
 	return nil
 }
 
 func (x *Oneofs) GetOneofEnum() Enum {
-	if x, ok := x.GetUnion().(*Oneofs_OneofEnum); ok {
-		return x.OneofEnum
+	if x != nil {
+		if x, ok := x.Union.(*Oneofs_OneofEnum); ok {
+			return x.OneofEnum
+		}
 	}
 	return Enum_ZERO
 }
 
 func (x *Oneofs) GetOneofString() string {
-	if x, ok := x.GetUnion().(*Oneofs_OneofString); ok {
-		return x.OneofString
+	if x != nil {
+		if x, ok := x.Union.(*Oneofs_OneofString); ok {
+			return x.OneofString
+		}
 	}
 	return ""
 }
 
 func (x *Oneofs) GetOneofNested() *Nested {
-	if x, ok := x.GetUnion().(*Oneofs_OneofNested); ok {
-		return x.OneofNested
+	if x != nil {
+		if x, ok := x.Union.(*Oneofs_OneofNested); ok {
+			return x.OneofNested
+		}
 	}
 	return nil
 }
@@ -916,15 +914,14 @@
 
 // Message contains map fields.
 type Maps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Int32ToStr    map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr,proto3" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	BoolToUint32  map[bool]uint32        `protobuf:"bytes,2,rep,name=bool_to_uint32,json=boolToUint32,proto3" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	Uint64ToEnum  map[uint64]Enum        `protobuf:"bytes,3,rep,name=uint64_to_enum,json=uint64ToEnum,proto3" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=pb3.Enum"`
+	StrToNested   map[string]*Nested     `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested,proto3" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	StrToOneofs   map[string]*Oneofs     `protobuf:"bytes,5,rep,name=str_to_oneofs,json=strToOneofs,proto3" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields protoimpl.UnknownFields
-
-	Int32ToStr   map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr,proto3" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	BoolToUint32 map[bool]uint32    `protobuf:"bytes,2,rep,name=bool_to_uint32,json=boolToUint32,proto3" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	Uint64ToEnum map[uint64]Enum    `protobuf:"bytes,3,rep,name=uint64_to_enum,json=uint64ToEnum,proto3" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=pb3.Enum"`
-	StrToNested  map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested,proto3" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	StrToOneofs  map[string]*Oneofs `protobuf:"bytes,5,rep,name=str_to_oneofs,json=strToOneofs,proto3" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Maps) Reset() {
@@ -994,11 +991,10 @@
 
 // Message for testing json_name option.
 type JSONNames struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SString       string                 `protobuf:"bytes,1,opt,name=s_string,json=foo_bar,proto3" json:"s_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SString string `protobuf:"bytes,1,opt,name=s_string,json=foo_bar,proto3" json:"s_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *JSONNames) Reset() {
@@ -1040,11 +1036,10 @@
 
 // Message contains reserved field name.
 type ReservedFieldNames struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptInt32      int32                  `protobuf:"varint,1,opt,name=opt_int32,json=optInt32,proto3" json:"opt_int32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptInt32 int32 `protobuf:"varint,1,opt,name=opt_int32,json=optInt32,proto3" json:"opt_int32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ReservedFieldNames) Reset() {
diff --git a/internal/testprotos/textpbeditions/test2.pb.go b/internal/testprotos/textpbeditions/test2.pb.go
index 2965e6e..1d13b76 100644
--- a/internal/testprotos/textpbeditions/test2.pb.go
+++ b/internal/testprotos/textpbeditions/test2.pb.go
@@ -227,25 +227,24 @@
 
 // Scalars contains scalar fields.
 type Scalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptBool       *bool                  `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *int64                 `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *uint32                `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *uint64                `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptSint32     *int32                 `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
+	OptSint64     *int64                 `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
+	OptFixed32    *uint32                `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	OptFixed64    *uint64                `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
+	OptSfixed32   *int32                 `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
+	OptSfixed64   *int64                 `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
+	OptFloat      *float32               `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *float64               `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptBytes      []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptString     *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptBool     *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32    *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64    *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32   *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64   *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptSint32   *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
-	OptSint64   *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
-	OptFixed32  *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
-	OptFixed64  *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
-	OptSfixed32 *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
-	OptSfixed64 *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
-	OptFloat    *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble   *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptBytes    []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptString   *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Scalars) Reset() {
@@ -385,25 +384,24 @@
 
 // ImplicitScalars contains scalar field types with implicit field_presence
 type ImplicitScalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SBool         bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool" json:"s_bool,omitempty"`
+	SInt32        int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32" json:"s_int32,omitempty"`
+	SInt64        int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64" json:"s_int64,omitempty"`
+	SUint32       uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32" json:"s_uint32,omitempty"`
+	SUint64       uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64" json:"s_uint64,omitempty"`
+	SSint32       int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32" json:"s_sint32,omitempty"`
+	SSint64       int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64" json:"s_sint64,omitempty"`
+	SFixed32      uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32" json:"s_fixed32,omitempty"`
+	SFixed64      uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64" json:"s_fixed64,omitempty"`
+	SSfixed32     int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32" json:"s_sfixed32,omitempty"`
+	SSfixed64     int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64" json:"s_sfixed64,omitempty"`
+	SFloat        float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat" json:"s_float,omitempty"`
+	SDouble       float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble" json:"s_double,omitempty"`
+	SBytes        []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes" json:"s_bytes,omitempty"`
+	SString       string                 `protobuf:"bytes,13,opt,name=s_string,json=sString" json:"s_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	SBool     bool    `protobuf:"varint,1,opt,name=s_bool,json=sBool" json:"s_bool,omitempty"`
-	SInt32    int32   `protobuf:"varint,2,opt,name=s_int32,json=sInt32" json:"s_int32,omitempty"`
-	SInt64    int64   `protobuf:"varint,3,opt,name=s_int64,json=sInt64" json:"s_int64,omitempty"`
-	SUint32   uint32  `protobuf:"varint,4,opt,name=s_uint32,json=sUint32" json:"s_uint32,omitempty"`
-	SUint64   uint64  `protobuf:"varint,5,opt,name=s_uint64,json=sUint64" json:"s_uint64,omitempty"`
-	SSint32   int32   `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32" json:"s_sint32,omitempty"`
-	SSint64   int64   `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64" json:"s_sint64,omitempty"`
-	SFixed32  uint32  `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32" json:"s_fixed32,omitempty"`
-	SFixed64  uint64  `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64" json:"s_fixed64,omitempty"`
-	SSfixed32 int32   `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32" json:"s_sfixed32,omitempty"`
-	SSfixed64 int64   `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64" json:"s_sfixed64,omitempty"`
-	SFloat    float32 `protobuf:"fixed32,20,opt,name=s_float,json=sFloat" json:"s_float,omitempty"`
-	SDouble   float64 `protobuf:"fixed64,21,opt,name=s_double,json=sDouble" json:"s_double,omitempty"`
-	SBytes    []byte  `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes" json:"s_bytes,omitempty"`
-	SString   string  `protobuf:"bytes,13,opt,name=s_string,json=sString" json:"s_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ImplicitScalars) Reset() {
@@ -542,11 +540,10 @@
 }
 
 type UTF8Validated struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ValidatedString string `protobuf:"bytes,1,opt,name=validated_string,json=validatedString" json:"validated_string,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	ValidatedString string                 `protobuf:"bytes,1,opt,name=validated_string,json=validatedString" json:"validated_string,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *UTF8Validated) Reset() {
@@ -587,11 +584,10 @@
 }
 
 type NestsUTF8Validated struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ValidatedMessage *UTF8Validated `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage" json:"validated_message,omitempty"`
+	state            protoimpl.MessageState `protogen:"open.v1"`
+	ValidatedMessage *UTF8Validated         `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage" json:"validated_message,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
 func (x *NestsUTF8Validated) Reset() {
@@ -633,16 +629,15 @@
 
 // Message contains enum fields.
 type Enums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptEnum            *Enum                `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pbeditions.Enum" json:"opt_enum,omitempty"`
-	RptEnum            []Enum               `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=pbeditions.Enum" json:"rpt_enum,omitempty"`
-	ImplicitEnum       OpenEnum             `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=pbeditions.OpenEnum" json:"implicit_enum,omitempty"`
-	OptNestedEnum      *Enums_NestedEnum    `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pbeditions.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
-	RptNestedEnum      []Enums_NestedEnum   `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=pbeditions.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
-	ImplicitNestedEnum Enums_NestedOpenEnum `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=pbeditions.Enums_NestedOpenEnum" json:"implicit_nested_enum,omitempty"`
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	OptEnum            *Enum                  `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pbeditions.Enum" json:"opt_enum,omitempty"`
+	RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=pbeditions.Enum" json:"rpt_enum,omitempty"`
+	ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=pbeditions.OpenEnum" json:"implicit_enum,omitempty"`
+	OptNestedEnum      *Enums_NestedEnum      `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pbeditions.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	RptNestedEnum      []Enums_NestedEnum     `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=pbeditions.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
+	ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=pbeditions.Enums_NestedOpenEnum" json:"implicit_nested_enum,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
 func (x *Enums) Reset() {
@@ -719,19 +714,18 @@
 
 // Message contains repeated fields.
 type Repeats struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RptBool       []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
+	RptInt32      []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
+	RptInt64      []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
+	RptUint32     []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
+	RptUint64     []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
+	RptFloat      []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
+	RptDouble     []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
+	RptString     []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	RptBytes      [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RptBool   []bool    `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
-	RptInt32  []int32   `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
-	RptInt64  []int64   `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
-	RptUint32 []uint32  `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
-	RptUint64 []uint64  `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
-	RptFloat  []float32 `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
-	RptDouble []float64 `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
-	RptString []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
-	RptBytes  [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Repeats) Reset() {
@@ -829,12 +823,11 @@
 
 // Message contains map fields.
 type Maps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Int32ToStr    map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	StrToNested   map[string]*Nested     `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields protoimpl.UnknownFields
-
-	Int32ToStr  map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	StrToNested map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Maps) Reset() {
@@ -883,12 +876,11 @@
 
 // Message type used as submessage.
 type Nested struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested     *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested *Nested `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nested) Reset() {
@@ -937,15 +929,14 @@
 
 // Message contains message and group fields.
 type Nests struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptNested      *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optgroup       *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
-	DelimitedField *Nests_OptGroup   `protobuf:"group,3,opt,name=OptGroup,json=delimitedField" json:"delimited_field,omitempty"`
-	RptNested      []*Nested         `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	Rptgroup       []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	OptNested      *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optgroup       *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
+	DelimitedField *Nests_OptGroup        `protobuf:"group,3,opt,name=OptGroup,json=delimitedField" json:"delimited_field,omitempty"`
+	RptNested      []*Nested              `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	Rptgroup       []*Nests_RptGroup      `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *Nests) Reset() {
@@ -1015,16 +1006,15 @@
 
 // Message contains required fields.
 type Requireds struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqBool       *bool                  `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
+	ReqSfixed64   *int64                 `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
+	ReqDouble     *float64               `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
+	ReqString     *string                `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	ReqEnum       *Enum                  `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pbeditions.Enum" json:"req_enum,omitempty"`
+	ReqNested     *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqBool     *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
-	ReqSfixed64 *int64   `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
-	ReqDouble   *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
-	ReqString   *string  `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	ReqEnum     *Enum    `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pbeditions.Enum" json:"req_enum,omitempty"`
-	ReqNested   *Nested  `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Requireds) Reset() {
@@ -1101,12 +1091,11 @@
 
 // Message contains both required and optional fields.
 type PartialRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	OptString     *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	OptString *string `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *PartialRequired) Reset() {
@@ -1154,11 +1143,10 @@
 }
 
 type NestedWithRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *NestedWithRequired) Reset() {
@@ -1199,17 +1187,16 @@
 }
 
 type IndirectRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptNested   *NestedWithRequired            `protobuf:"bytes,1,req,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	state       protoimpl.MessageState         `protogen:"open.v1"`
+	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
 	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to Union:
+	// Types that are valid to be assigned to Union:
 	//
 	//	*IndirectRequired_OneofNested
-	Union isIndirectRequired_Union `protobuf_oneof:"union"`
+	Union         isIndirectRequired_Union `protobuf_oneof:"union"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *IndirectRequired) Reset() {
@@ -1263,16 +1250,18 @@
 	return nil
 }
 
-func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
-	if m != nil {
-		return m.Union
+func (x *IndirectRequired) GetUnion() isIndirectRequired_Union {
+	if x != nil {
+		return x.Union
 	}
 	return nil
 }
 
 func (x *IndirectRequired) GetOneofNested() *NestedWithRequired {
-	if x, ok := x.GetUnion().(*IndirectRequired_OneofNested); ok {
-		return x.OneofNested
+	if x != nil {
+		if x, ok := x.Union.(*IndirectRequired_OneofNested); ok {
+			return x.OneofNested
+		}
 	}
 	return nil
 }
@@ -1288,14 +1277,13 @@
 func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
 
 type Extensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	OptString       *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBool         *bool                  `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32        *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBool   *bool   `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32  *int32  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *Extensions) Reset() {
@@ -1350,9 +1338,9 @@
 }
 
 type ExtensionsContainer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtensionsContainer) Reset() {
@@ -1386,10 +1374,10 @@
 }
 
 type MessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *MessageSet) Reset() {
@@ -1423,11 +1411,10 @@
 }
 
 type MessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MessageSetExtension) Reset() {
@@ -1468,10 +1455,10 @@
 }
 
 type FakeMessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
 	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *FakeMessageSet) Reset() {
@@ -1505,11 +1492,10 @@
 }
 
 type FakeMessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FakeMessageSetExtension) Reset() {
@@ -1551,28 +1537,27 @@
 
 // Message contains well-known type fields.
 type KnownTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState  `protogen:"open.v1"`
+	OptBool       *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptFloat      *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptString     *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBytes      *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptDuration   *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
+	OptTimestamp  *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
+	OptStruct     *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
+	OptList       *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
+	OptValue      *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
+	OptNull       *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
+	OptEmpty      *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
+	OptAny        *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
+	OptFieldmask  *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
-	OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
-	OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
-	OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
-	OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
-	OptNull      *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
-	OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
-	OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
-	OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *KnownTypes) Reset() {
@@ -1732,14 +1717,13 @@
 }
 
 type Nests_OptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state                protoimpl.MessageState         `protogen:"open.v1"`
 	OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
 	Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
 	NestedDelimitedField *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=nestedDelimitedField" json:"nested_delimited_field,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
 func (x *Nests_OptGroup) Reset() {
@@ -1801,11 +1785,10 @@
 }
 
 type Nests_RptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RptString     []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	RptString []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests_RptGroup) Reset() {
@@ -1846,11 +1829,10 @@
 }
 
 type Nests_OptGroup_OptNestedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OptFixed32    *uint32                `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	OptFixed32 *uint32 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Nests_OptGroup_OptNestedGroup) Reset() {
@@ -2352,236 +2334,236 @@
 	0x6e, 0x67, 0x22, 0x3a, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
 	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
 	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01,
-	0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x98,
+	0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x91,
 	0x03, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x72, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
 	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
 	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09,
-	0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x72, 0x70, 0x74,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x72,
-	0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f,
-	0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2d, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x64,
-	0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74,
-	0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
-	0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x1a, 0x5e, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f,
-	0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f,
-	0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04,
-	0x08, 0x14, 0x10, 0x65, 0x22, 0xe4, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x38, 0x0a, 0x0c,
-	0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x2e, 0x70,
-	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45,
-	0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x3c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x32, 0x4a, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d,
-	0x32, 0x50, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x32, 0x5b, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
-	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x37, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x32,
-	0x3c, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x12, 0x51, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69,
+	0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x5e, 0x0a, 0x10, 0x53, 0x74, 0x72,
+	0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69,
+	0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70,
+	0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f,
+	0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xe4, 0x04,
+	0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74,
+	0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x38, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74,
+	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32,
+	0x3c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
 	0x67, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x4a, 0x0a,
-	0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x4a, 0x0a,
+	0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e,
 	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72,
-	0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x50, 0x0a, 0x0e, 0x72, 0x70, 0x74,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f,
+	0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x50, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
 	0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62,
 	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72,
-	0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff,
-	0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0xe0, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12,
-	0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x6b,
-	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x72, 0x0a, 0x19, 0x6e,
-	0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32,
-	0x49, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
-	0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61,
-	0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04,
-	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xad, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x32, 0x73, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
-	0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70,
-	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x08, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09,
-	0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70,
-	0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36,
-	0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a,
-	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70,
-	0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46,
-	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38,
-	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08,
-	0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
-	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75,
-	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73,
-	0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74,
-	0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12,
-	0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f,
-	0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f,
-	0x70, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4e, 0x75,
-	0x6c, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18,
-	0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f,
-	0x70, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61,
-	0x6e, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06,
-	0x6f, 0x70, 0x74, 0x41, 0x6e, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x6d, 0x61, 0x73, 0x6b, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10,
-	0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x2a, 0x3b, 0x0a, 0x08, 0x4f, 0x70,
-	0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
-	0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a,
-	0x04, 0x5a, 0x57, 0x45, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48, 0x4e, 0x10,
-	0x0a, 0x1a, 0x04, 0x3a, 0x02, 0x10, 0x01, 0x3a, 0x38, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f,
-	0x6c, 0x3a, 0x3c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a,
-	0x4a, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12,
-	0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x50, 0x0a, 0x0e, 0x6f,
-	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62,
-	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
-	0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x5b, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c,
-	0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
-	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d, 0x6f, 0x70, 0x74,
-	0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x3a, 0x3e, 0x0a, 0x0f, 0x72, 0x70,
-	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x16, 0x2e,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74,
-	0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x4a, 0x0a, 0x0c, 0x72, 0x70,
-	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65,
+	0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f,
+	0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x32, 0x5b, 0x0a, 0x0f, 0x6f,
+	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x16,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61,
+	0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x45, 0x78,
+	0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x32, 0x3c, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65,
 	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45,
-	0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x50, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45,
-	0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x6f, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73,
+	0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x4a, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e,
+	0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x32, 0x50, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01,
+	0x22, 0xe0, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x6b, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52,
+	0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x32, 0x72, 0x0a, 0x19, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
 	0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
 	0x6e, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x23, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x46, 0x5a, 0x3d, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74,
-	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x92, 0x03, 0x04, 0x10, 0x02, 0x20,
-	0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1f, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x49, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
+	0xad, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x73, 0x0a, 0x15, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22,
+	0x9e, 0x08, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35,
+	0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70,
+	0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f,
+	0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f,
+	0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73,
+	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c,
+	0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x6f,
+	0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79,
+	0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x41, 0x6e, 0x79, 0x12,
+	0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61, 0x73, 0x6b,
+	0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61,
+	0x73, 0x6b, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61, 0x73, 0x6b,
+	0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
+	0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x45,
+	0x4e, 0x10, 0x0a, 0x2a, 0x3b, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
+	0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x57, 0x45, 0x49, 0x10, 0x02,
+	0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48, 0x4e, 0x10, 0x0a, 0x1a, 0x04, 0x3a, 0x02, 0x10, 0x01,
+	0x3a, 0x38, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x3c, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x4a, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x50, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x5b, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x61, 0x6c, 0x3a, 0x3e, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f,
+	0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x3a, 0x4a, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28,
+	0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x50, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x12, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x3a, 0x6f, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,
+	0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x42, 0x46, 0x5a, 0x3d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x92, 0x03, 0x04, 0x10, 0x02, 0x20, 0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 }
 
 var (
diff --git a/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.pb.go b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.pb.go
new file mode 100644
index 0000000..61379b5
--- /dev/null
+++ b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.pb.go
@@ -0,0 +1,4234 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test Protobuf definitions with proto2 syntax.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto
+
+package textpbeditions_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	durationpb "google.golang.org/protobuf/types/known/durationpb"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
+	structpb "google.golang.org/protobuf/types/known/structpb"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
+	reflect "reflect"
+)
+
+type Enum int32
+
+const (
+	Enum_ONE Enum = 1
+	Enum_TWO Enum = 2
+	Enum_TEN Enum = 10
+)
+
+// Enum value maps for Enum.
+var (
+	Enum_name = map[int32]string{
+		1:  "ONE",
+		2:  "TWO",
+		10: "TEN",
+	}
+	Enum_value = map[string]int32{
+		"ONE": 1,
+		"TWO": 2,
+		"TEN": 10,
+	}
+)
+
+func (x Enum) Enum() *Enum {
+	p := new(Enum)
+	*p = x
+	return p
+}
+
+func (x Enum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (Enum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[0]
+}
+
+func (x Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type OpenEnum int32
+
+const (
+	OpenEnum_UNKNOWN OpenEnum = 0
+	OpenEnum_EINS    OpenEnum = 1
+	OpenEnum_ZWEI    OpenEnum = 2
+	OpenEnum_ZEHN    OpenEnum = 10
+)
+
+// Enum value maps for OpenEnum.
+var (
+	OpenEnum_name = map[int32]string{
+		0:  "UNKNOWN",
+		1:  "EINS",
+		2:  "ZWEI",
+		10: "ZEHN",
+	}
+	OpenEnum_value = map[string]int32{
+		"UNKNOWN": 0,
+		"EINS":    1,
+		"ZWEI":    2,
+		"ZEHN":    10,
+	}
+)
+
+func (x OpenEnum) Enum() *OpenEnum {
+	p := new(OpenEnum)
+	*p = x
+	return p
+}
+
+func (x OpenEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (OpenEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[1].Descriptor()
+}
+
+func (OpenEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[1]
+}
+
+func (x OpenEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type Enums_NestedEnum int32
+
+const (
+	Enums_UNO  Enums_NestedEnum = 1
+	Enums_DOS  Enums_NestedEnum = 2
+	Enums_DIEZ Enums_NestedEnum = 10
+)
+
+// Enum value maps for Enums_NestedEnum.
+var (
+	Enums_NestedEnum_name = map[int32]string{
+		1:  "UNO",
+		2:  "DOS",
+		10: "DIEZ",
+	}
+	Enums_NestedEnum_value = map[string]int32{
+		"UNO":  1,
+		"DOS":  2,
+		"DIEZ": 10,
+	}
+)
+
+func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
+	p := new(Enums_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x Enums_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[2].Descriptor()
+}
+
+func (Enums_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[2]
+}
+
+func (x Enums_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type Enums_NestedOpenEnum int32
+
+const (
+	Enums_UNKNOWN Enums_NestedOpenEnum = 0
+	Enums_EINS    Enums_NestedOpenEnum = 1
+	Enums_ZWEI    Enums_NestedOpenEnum = 2
+	Enums_ZEHN    Enums_NestedOpenEnum = 10
+)
+
+// Enum value maps for Enums_NestedOpenEnum.
+var (
+	Enums_NestedOpenEnum_name = map[int32]string{
+		0:  "UNKNOWN",
+		1:  "EINS",
+		2:  "ZWEI",
+		10: "ZEHN",
+	}
+	Enums_NestedOpenEnum_value = map[string]int32{
+		"UNKNOWN": 0,
+		"EINS":    1,
+		"ZWEI":    2,
+		"ZEHN":    10,
+	}
+)
+
+func (x Enums_NestedOpenEnum) Enum() *Enums_NestedOpenEnum {
+	p := new(Enums_NestedOpenEnum)
+	*p = x
+	return p
+}
+
+func (x Enums_NestedOpenEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enums_NestedOpenEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[3].Descriptor()
+}
+
+func (Enums_NestedOpenEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes[3]
+}
+
+func (x Enums_NestedOpenEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Scalars contains scalar fields.
+type Scalars struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptBool       *bool                  `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *int64                 `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *uint32                `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *uint64                `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptSint32     *int32                 `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
+	OptSint64     *int64                 `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
+	OptFixed32    *uint32                `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	OptFixed64    *uint64                `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
+	OptSfixed32   *int32                 `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
+	OptSfixed64   *int64                 `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
+	OptFloat      *float32               `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *float64               `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptBytes      []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptString     *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Scalars) Reset() {
+	*x = Scalars{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Scalars) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scalars) ProtoMessage() {}
+
+func (x *Scalars) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Scalars) GetOptBool() bool {
+	if x != nil && x.OptBool != nil {
+		return *x.OptBool
+	}
+	return false
+}
+
+func (x *Scalars) GetOptInt32() int32 {
+	if x != nil && x.OptInt32 != nil {
+		return *x.OptInt32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptInt64() int64 {
+	if x != nil && x.OptInt64 != nil {
+		return *x.OptInt64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptUint32() uint32 {
+	if x != nil && x.OptUint32 != nil {
+		return *x.OptUint32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptUint64() uint64 {
+	if x != nil && x.OptUint64 != nil {
+		return *x.OptUint64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSint32() int32 {
+	if x != nil && x.OptSint32 != nil {
+		return *x.OptSint32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSint64() int64 {
+	if x != nil && x.OptSint64 != nil {
+		return *x.OptSint64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFixed32() uint32 {
+	if x != nil && x.OptFixed32 != nil {
+		return *x.OptFixed32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFixed64() uint64 {
+	if x != nil && x.OptFixed64 != nil {
+		return *x.OptFixed64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSfixed32() int32 {
+	if x != nil && x.OptSfixed32 != nil {
+		return *x.OptSfixed32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSfixed64() int64 {
+	if x != nil && x.OptSfixed64 != nil {
+		return *x.OptSfixed64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFloat() float32 {
+	if x != nil && x.OptFloat != nil {
+		return *x.OptFloat
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptDouble() float64 {
+	if x != nil && x.OptDouble != nil {
+		return *x.OptDouble
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptBytes() []byte {
+	if x != nil {
+		return x.OptBytes
+	}
+	return nil
+}
+
+func (x *Scalars) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *Scalars) SetOptBool(v bool) {
+	x.OptBool = &v
+}
+
+func (x *Scalars) SetOptInt32(v int32) {
+	x.OptInt32 = &v
+}
+
+func (x *Scalars) SetOptInt64(v int64) {
+	x.OptInt64 = &v
+}
+
+func (x *Scalars) SetOptUint32(v uint32) {
+	x.OptUint32 = &v
+}
+
+func (x *Scalars) SetOptUint64(v uint64) {
+	x.OptUint64 = &v
+}
+
+func (x *Scalars) SetOptSint32(v int32) {
+	x.OptSint32 = &v
+}
+
+func (x *Scalars) SetOptSint64(v int64) {
+	x.OptSint64 = &v
+}
+
+func (x *Scalars) SetOptFixed32(v uint32) {
+	x.OptFixed32 = &v
+}
+
+func (x *Scalars) SetOptFixed64(v uint64) {
+	x.OptFixed64 = &v
+}
+
+func (x *Scalars) SetOptSfixed32(v int32) {
+	x.OptSfixed32 = &v
+}
+
+func (x *Scalars) SetOptSfixed64(v int64) {
+	x.OptSfixed64 = &v
+}
+
+func (x *Scalars) SetOptFloat(v float32) {
+	x.OptFloat = &v
+}
+
+func (x *Scalars) SetOptDouble(v float64) {
+	x.OptDouble = &v
+}
+
+func (x *Scalars) SetOptBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OptBytes = v
+}
+
+func (x *Scalars) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *Scalars) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBool != nil
+}
+
+func (x *Scalars) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptInt32 != nil
+}
+
+func (x *Scalars) HasOptInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptInt64 != nil
+}
+
+func (x *Scalars) HasOptUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUint32 != nil
+}
+
+func (x *Scalars) HasOptUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUint64 != nil
+}
+
+func (x *Scalars) HasOptSint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptSint32 != nil
+}
+
+func (x *Scalars) HasOptSint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptSint64 != nil
+}
+
+func (x *Scalars) HasOptFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFixed32 != nil
+}
+
+func (x *Scalars) HasOptFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFixed64 != nil
+}
+
+func (x *Scalars) HasOptSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptSfixed32 != nil
+}
+
+func (x *Scalars) HasOptSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptSfixed64 != nil
+}
+
+func (x *Scalars) HasOptFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFloat != nil
+}
+
+func (x *Scalars) HasOptDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptDouble != nil
+}
+
+func (x *Scalars) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBytes != nil
+}
+
+func (x *Scalars) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *Scalars) ClearOptBool() {
+	x.OptBool = nil
+}
+
+func (x *Scalars) ClearOptInt32() {
+	x.OptInt32 = nil
+}
+
+func (x *Scalars) ClearOptInt64() {
+	x.OptInt64 = nil
+}
+
+func (x *Scalars) ClearOptUint32() {
+	x.OptUint32 = nil
+}
+
+func (x *Scalars) ClearOptUint64() {
+	x.OptUint64 = nil
+}
+
+func (x *Scalars) ClearOptSint32() {
+	x.OptSint32 = nil
+}
+
+func (x *Scalars) ClearOptSint64() {
+	x.OptSint64 = nil
+}
+
+func (x *Scalars) ClearOptFixed32() {
+	x.OptFixed32 = nil
+}
+
+func (x *Scalars) ClearOptFixed64() {
+	x.OptFixed64 = nil
+}
+
+func (x *Scalars) ClearOptSfixed32() {
+	x.OptSfixed32 = nil
+}
+
+func (x *Scalars) ClearOptSfixed64() {
+	x.OptSfixed64 = nil
+}
+
+func (x *Scalars) ClearOptFloat() {
+	x.OptFloat = nil
+}
+
+func (x *Scalars) ClearOptDouble() {
+	x.OptDouble = nil
+}
+
+func (x *Scalars) ClearOptBytes() {
+	x.OptBytes = nil
+}
+
+func (x *Scalars) ClearOptString() {
+	x.OptString = nil
+}
+
+type Scalars_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptBool     *bool
+	OptInt32    *int32
+	OptInt64    *int64
+	OptUint32   *uint32
+	OptUint64   *uint64
+	OptSint32   *int32
+	OptSint64   *int64
+	OptFixed32  *uint32
+	OptFixed64  *uint64
+	OptSfixed32 *int32
+	OptSfixed64 *int64
+	OptFloat    *float32
+	OptDouble   *float64
+	OptBytes    []byte
+	OptString   *string
+}
+
+func (b0 Scalars_builder) Build() *Scalars {
+	m0 := &Scalars{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptBool = b.OptBool
+	x.OptInt32 = b.OptInt32
+	x.OptInt64 = b.OptInt64
+	x.OptUint32 = b.OptUint32
+	x.OptUint64 = b.OptUint64
+	x.OptSint32 = b.OptSint32
+	x.OptSint64 = b.OptSint64
+	x.OptFixed32 = b.OptFixed32
+	x.OptFixed64 = b.OptFixed64
+	x.OptSfixed32 = b.OptSfixed32
+	x.OptSfixed64 = b.OptSfixed64
+	x.OptFloat = b.OptFloat
+	x.OptDouble = b.OptDouble
+	x.OptBytes = b.OptBytes
+	x.OptString = b.OptString
+	return m0
+}
+
+// ImplicitScalars contains scalar field types with implicit field_presence
+type ImplicitScalars struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	SBool         bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool" json:"s_bool,omitempty"`
+	SInt32        int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32" json:"s_int32,omitempty"`
+	SInt64        int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64" json:"s_int64,omitempty"`
+	SUint32       uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32" json:"s_uint32,omitempty"`
+	SUint64       uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64" json:"s_uint64,omitempty"`
+	SSint32       int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32" json:"s_sint32,omitempty"`
+	SSint64       int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64" json:"s_sint64,omitempty"`
+	SFixed32      uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32" json:"s_fixed32,omitempty"`
+	SFixed64      uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64" json:"s_fixed64,omitempty"`
+	SSfixed32     int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32" json:"s_sfixed32,omitempty"`
+	SSfixed64     int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64" json:"s_sfixed64,omitempty"`
+	SFloat        float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat" json:"s_float,omitempty"`
+	SDouble       float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble" json:"s_double,omitempty"`
+	SBytes        []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes" json:"s_bytes,omitempty"`
+	SString       string                 `protobuf:"bytes,13,opt,name=s_string,json=sString" json:"s_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImplicitScalars) Reset() {
+	*x = ImplicitScalars{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImplicitScalars) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImplicitScalars) ProtoMessage() {}
+
+func (x *ImplicitScalars) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ImplicitScalars) GetSBool() bool {
+	if x != nil {
+		return x.SBool
+	}
+	return false
+}
+
+func (x *ImplicitScalars) GetSInt32() int32 {
+	if x != nil {
+		return x.SInt32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSInt64() int64 {
+	if x != nil {
+		return x.SInt64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSUint32() uint32 {
+	if x != nil {
+		return x.SUint32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSUint64() uint64 {
+	if x != nil {
+		return x.SUint64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSint32() int32 {
+	if x != nil {
+		return x.SSint32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSint64() int64 {
+	if x != nil {
+		return x.SSint64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFixed32() uint32 {
+	if x != nil {
+		return x.SFixed32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFixed64() uint64 {
+	if x != nil {
+		return x.SFixed64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSfixed32() int32 {
+	if x != nil {
+		return x.SSfixed32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSfixed64() int64 {
+	if x != nil {
+		return x.SSfixed64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFloat() float32 {
+	if x != nil {
+		return x.SFloat
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSDouble() float64 {
+	if x != nil {
+		return x.SDouble
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSBytes() []byte {
+	if x != nil {
+		return x.SBytes
+	}
+	return nil
+}
+
+func (x *ImplicitScalars) GetSString() string {
+	if x != nil {
+		return x.SString
+	}
+	return ""
+}
+
+func (x *ImplicitScalars) SetSBool(v bool) {
+	x.SBool = v
+}
+
+func (x *ImplicitScalars) SetSInt32(v int32) {
+	x.SInt32 = v
+}
+
+func (x *ImplicitScalars) SetSInt64(v int64) {
+	x.SInt64 = v
+}
+
+func (x *ImplicitScalars) SetSUint32(v uint32) {
+	x.SUint32 = v
+}
+
+func (x *ImplicitScalars) SetSUint64(v uint64) {
+	x.SUint64 = v
+}
+
+func (x *ImplicitScalars) SetSSint32(v int32) {
+	x.SSint32 = v
+}
+
+func (x *ImplicitScalars) SetSSint64(v int64) {
+	x.SSint64 = v
+}
+
+func (x *ImplicitScalars) SetSFixed32(v uint32) {
+	x.SFixed32 = v
+}
+
+func (x *ImplicitScalars) SetSFixed64(v uint64) {
+	x.SFixed64 = v
+}
+
+func (x *ImplicitScalars) SetSSfixed32(v int32) {
+	x.SSfixed32 = v
+}
+
+func (x *ImplicitScalars) SetSSfixed64(v int64) {
+	x.SSfixed64 = v
+}
+
+func (x *ImplicitScalars) SetSFloat(v float32) {
+	x.SFloat = v
+}
+
+func (x *ImplicitScalars) SetSDouble(v float64) {
+	x.SDouble = v
+}
+
+func (x *ImplicitScalars) SetSBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.SBytes = v
+}
+
+func (x *ImplicitScalars) SetSString(v string) {
+	x.SString = v
+}
+
+type ImplicitScalars_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SBool     bool
+	SInt32    int32
+	SInt64    int64
+	SUint32   uint32
+	SUint64   uint64
+	SSint32   int32
+	SSint64   int64
+	SFixed32  uint32
+	SFixed64  uint64
+	SSfixed32 int32
+	SSfixed64 int64
+	SFloat    float32
+	SDouble   float64
+	SBytes    []byte
+	SString   string
+}
+
+func (b0 ImplicitScalars_builder) Build() *ImplicitScalars {
+	m0 := &ImplicitScalars{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.SBool = b.SBool
+	x.SInt32 = b.SInt32
+	x.SInt64 = b.SInt64
+	x.SUint32 = b.SUint32
+	x.SUint64 = b.SUint64
+	x.SSint32 = b.SSint32
+	x.SSint64 = b.SSint64
+	x.SFixed32 = b.SFixed32
+	x.SFixed64 = b.SFixed64
+	x.SSfixed32 = b.SSfixed32
+	x.SSfixed64 = b.SSfixed64
+	x.SFloat = b.SFloat
+	x.SDouble = b.SDouble
+	x.SBytes = b.SBytes
+	x.SString = b.SString
+	return m0
+}
+
+type UTF8Validated struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	ValidatedString string                 `protobuf:"bytes,1,opt,name=validated_string,json=validatedString" json:"validated_string,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *UTF8Validated) Reset() {
+	*x = UTF8Validated{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UTF8Validated) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UTF8Validated) ProtoMessage() {}
+
+func (x *UTF8Validated) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *UTF8Validated) GetValidatedString() string {
+	if x != nil {
+		return x.ValidatedString
+	}
+	return ""
+}
+
+func (x *UTF8Validated) SetValidatedString(v string) {
+	x.ValidatedString = v
+}
+
+type UTF8Validated_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ValidatedString string
+}
+
+func (b0 UTF8Validated_builder) Build() *UTF8Validated {
+	m0 := &UTF8Validated{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.ValidatedString = b.ValidatedString
+	return m0
+}
+
+type NestsUTF8Validated struct {
+	state            protoimpl.MessageState `protogen:"hybrid.v1"`
+	ValidatedMessage *UTF8Validated         `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage" json:"validated_message,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
+}
+
+func (x *NestsUTF8Validated) Reset() {
+	*x = NestsUTF8Validated{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NestsUTF8Validated) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NestsUTF8Validated) ProtoMessage() {}
+
+func (x *NestsUTF8Validated) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *NestsUTF8Validated) GetValidatedMessage() *UTF8Validated {
+	if x != nil {
+		return x.ValidatedMessage
+	}
+	return nil
+}
+
+func (x *NestsUTF8Validated) SetValidatedMessage(v *UTF8Validated) {
+	x.ValidatedMessage = v
+}
+
+func (x *NestsUTF8Validated) HasValidatedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.ValidatedMessage != nil
+}
+
+func (x *NestsUTF8Validated) ClearValidatedMessage() {
+	x.ValidatedMessage = nil
+}
+
+type NestsUTF8Validated_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ValidatedMessage *UTF8Validated
+}
+
+func (b0 NestsUTF8Validated_builder) Build() *NestsUTF8Validated {
+	m0 := &NestsUTF8Validated{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.ValidatedMessage = b.ValidatedMessage
+	return m0
+}
+
+// Message contains enum fields.
+type Enums struct {
+	state              protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptEnum            *Enum                  `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=hybrid.pbeditions.Enum" json:"opt_enum,omitempty"`
+	RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=hybrid.pbeditions.Enum" json:"rpt_enum,omitempty"`
+	ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=hybrid.pbeditions.OpenEnum" json:"implicit_enum,omitempty"`
+	OptNestedEnum      *Enums_NestedEnum      `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=hybrid.pbeditions.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	RptNestedEnum      []Enums_NestedEnum     `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=hybrid.pbeditions.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
+	ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=hybrid.pbeditions.Enums_NestedOpenEnum" json:"implicit_nested_enum,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *Enums) Reset() {
+	*x = Enums{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Enums) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Enums) ProtoMessage() {}
+
+func (x *Enums) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Enums) GetOptEnum() Enum {
+	if x != nil && x.OptEnum != nil {
+		return *x.OptEnum
+	}
+	return Enum_ONE
+}
+
+func (x *Enums) GetRptEnum() []Enum {
+	if x != nil {
+		return x.RptEnum
+	}
+	return nil
+}
+
+func (x *Enums) GetImplicitEnum() OpenEnum {
+	if x != nil {
+		return x.ImplicitEnum
+	}
+	return OpenEnum_UNKNOWN
+}
+
+func (x *Enums) GetOptNestedEnum() Enums_NestedEnum {
+	if x != nil && x.OptNestedEnum != nil {
+		return *x.OptNestedEnum
+	}
+	return Enums_UNO
+}
+
+func (x *Enums) GetRptNestedEnum() []Enums_NestedEnum {
+	if x != nil {
+		return x.RptNestedEnum
+	}
+	return nil
+}
+
+func (x *Enums) GetImplicitNestedEnum() Enums_NestedOpenEnum {
+	if x != nil {
+		return x.ImplicitNestedEnum
+	}
+	return Enums_UNKNOWN
+}
+
+func (x *Enums) SetOptEnum(v Enum) {
+	x.OptEnum = &v
+}
+
+func (x *Enums) SetRptEnum(v []Enum) {
+	x.RptEnum = v
+}
+
+func (x *Enums) SetImplicitEnum(v OpenEnum) {
+	x.ImplicitEnum = v
+}
+
+func (x *Enums) SetOptNestedEnum(v Enums_NestedEnum) {
+	x.OptNestedEnum = &v
+}
+
+func (x *Enums) SetRptNestedEnum(v []Enums_NestedEnum) {
+	x.RptNestedEnum = v
+}
+
+func (x *Enums) SetImplicitNestedEnum(v Enums_NestedOpenEnum) {
+	x.ImplicitNestedEnum = v
+}
+
+func (x *Enums) HasOptEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptEnum != nil
+}
+
+func (x *Enums) HasOptNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNestedEnum != nil
+}
+
+func (x *Enums) ClearOptEnum() {
+	x.OptEnum = nil
+}
+
+func (x *Enums) ClearOptNestedEnum() {
+	x.OptNestedEnum = nil
+}
+
+type Enums_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptEnum            *Enum
+	RptEnum            []Enum
+	ImplicitEnum       OpenEnum
+	OptNestedEnum      *Enums_NestedEnum
+	RptNestedEnum      []Enums_NestedEnum
+	ImplicitNestedEnum Enums_NestedOpenEnum
+}
+
+func (b0 Enums_builder) Build() *Enums {
+	m0 := &Enums{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptEnum = b.OptEnum
+	x.RptEnum = b.RptEnum
+	x.ImplicitEnum = b.ImplicitEnum
+	x.OptNestedEnum = b.OptNestedEnum
+	x.RptNestedEnum = b.RptNestedEnum
+	x.ImplicitNestedEnum = b.ImplicitNestedEnum
+	return m0
+}
+
+// Message contains repeated fields.
+type Repeats struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	RptBool       []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
+	RptInt32      []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
+	RptInt64      []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
+	RptUint32     []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
+	RptUint64     []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
+	RptFloat      []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
+	RptDouble     []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
+	RptString     []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	RptBytes      [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Repeats) Reset() {
+	*x = Repeats{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Repeats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Repeats) ProtoMessage() {}
+
+func (x *Repeats) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Repeats) GetRptBool() []bool {
+	if x != nil {
+		return x.RptBool
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptInt32() []int32 {
+	if x != nil {
+		return x.RptInt32
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptInt64() []int64 {
+	if x != nil {
+		return x.RptInt64
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptUint32() []uint32 {
+	if x != nil {
+		return x.RptUint32
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptUint64() []uint64 {
+	if x != nil {
+		return x.RptUint64
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptFloat() []float32 {
+	if x != nil {
+		return x.RptFloat
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptDouble() []float64 {
+	if x != nil {
+		return x.RptDouble
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptString() []string {
+	if x != nil {
+		return x.RptString
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptBytes() [][]byte {
+	if x != nil {
+		return x.RptBytes
+	}
+	return nil
+}
+
+func (x *Repeats) SetRptBool(v []bool) {
+	x.RptBool = v
+}
+
+func (x *Repeats) SetRptInt32(v []int32) {
+	x.RptInt32 = v
+}
+
+func (x *Repeats) SetRptInt64(v []int64) {
+	x.RptInt64 = v
+}
+
+func (x *Repeats) SetRptUint32(v []uint32) {
+	x.RptUint32 = v
+}
+
+func (x *Repeats) SetRptUint64(v []uint64) {
+	x.RptUint64 = v
+}
+
+func (x *Repeats) SetRptFloat(v []float32) {
+	x.RptFloat = v
+}
+
+func (x *Repeats) SetRptDouble(v []float64) {
+	x.RptDouble = v
+}
+
+func (x *Repeats) SetRptString(v []string) {
+	x.RptString = v
+}
+
+func (x *Repeats) SetRptBytes(v [][]byte) {
+	x.RptBytes = v
+}
+
+type Repeats_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RptBool   []bool
+	RptInt32  []int32
+	RptInt64  []int64
+	RptUint32 []uint32
+	RptUint64 []uint64
+	RptFloat  []float32
+	RptDouble []float64
+	RptString []string
+	RptBytes  [][]byte
+}
+
+func (b0 Repeats_builder) Build() *Repeats {
+	m0 := &Repeats{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.RptBool = b.RptBool
+	x.RptInt32 = b.RptInt32
+	x.RptInt64 = b.RptInt64
+	x.RptUint32 = b.RptUint32
+	x.RptUint64 = b.RptUint64
+	x.RptFloat = b.RptFloat
+	x.RptDouble = b.RptDouble
+	x.RptString = b.RptString
+	x.RptBytes = b.RptBytes
+	return m0
+}
+
+// Message contains map fields.
+type Maps struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	Int32ToStr    map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	StrToNested   map[string]*Nested     `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Maps) Reset() {
+	*x = Maps{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Maps) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Maps) ProtoMessage() {}
+
+func (x *Maps) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Maps) GetInt32ToStr() map[int32]string {
+	if x != nil {
+		return x.Int32ToStr
+	}
+	return nil
+}
+
+func (x *Maps) GetStrToNested() map[string]*Nested {
+	if x != nil {
+		return x.StrToNested
+	}
+	return nil
+}
+
+func (x *Maps) SetInt32ToStr(v map[int32]string) {
+	x.Int32ToStr = v
+}
+
+func (x *Maps) SetStrToNested(v map[string]*Nested) {
+	x.StrToNested = v
+}
+
+type Maps_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Int32ToStr  map[int32]string
+	StrToNested map[string]*Nested
+}
+
+func (b0 Maps_builder) Build() *Maps {
+	m0 := &Maps{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.Int32ToStr = b.Int32ToStr
+	x.StrToNested = b.StrToNested
+	return m0
+}
+
+// Message type used as submessage.
+type Nested struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested     *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Nested) Reset() {
+	*x = Nested{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nested) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nested) ProtoMessage() {}
+
+func (x *Nested) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nested) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *Nested) GetOptNested() *Nested {
+	if x != nil {
+		return x.OptNested
+	}
+	return nil
+}
+
+func (x *Nested) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *Nested) SetOptNested(v *Nested) {
+	x.OptNested = v
+}
+
+func (x *Nested) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *Nested) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNested != nil
+}
+
+func (x *Nested) ClearOptString() {
+	x.OptString = nil
+}
+
+func (x *Nested) ClearOptNested() {
+	x.OptNested = nil
+}
+
+type Nested_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+	OptNested *Nested
+}
+
+func (b0 Nested_builder) Build() *Nested {
+	m0 := &Nested{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptString = b.OptString
+	x.OptNested = b.OptNested
+	return m0
+}
+
+// Message contains message and group fields.
+type Nests struct {
+	state          protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptNested      *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optgroup       *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
+	DelimitedField *Nests_OptGroup        `protobuf:"group,3,opt,name=OptGroup,json=delimitedField" json:"delimited_field,omitempty"`
+	RptNested      []*Nested              `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	Rptgroup       []*Nests_RptGroup      `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *Nests) Reset() {
+	*x = Nests{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests) ProtoMessage() {}
+
+func (x *Nests) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests) GetOptNested() *Nested {
+	if x != nil {
+		return x.OptNested
+	}
+	return nil
+}
+
+func (x *Nests) GetOptgroup() *Nests_OptGroup {
+	if x != nil {
+		return x.Optgroup
+	}
+	return nil
+}
+
+func (x *Nests) GetDelimitedField() *Nests_OptGroup {
+	if x != nil {
+		return x.DelimitedField
+	}
+	return nil
+}
+
+func (x *Nests) GetRptNested() []*Nested {
+	if x != nil {
+		return x.RptNested
+	}
+	return nil
+}
+
+func (x *Nests) GetRptgroup() []*Nests_RptGroup {
+	if x != nil {
+		return x.Rptgroup
+	}
+	return nil
+}
+
+func (x *Nests) SetOptNested(v *Nested) {
+	x.OptNested = v
+}
+
+func (x *Nests) SetOptgroup(v *Nests_OptGroup) {
+	x.Optgroup = v
+}
+
+func (x *Nests) SetDelimitedField(v *Nests_OptGroup) {
+	x.DelimitedField = v
+}
+
+func (x *Nests) SetRptNested(v []*Nested) {
+	x.RptNested = v
+}
+
+func (x *Nests) SetRptgroup(v []*Nests_RptGroup) {
+	x.Rptgroup = v
+}
+
+func (x *Nests) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNested != nil
+}
+
+func (x *Nests) HasOptgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.Optgroup != nil
+}
+
+func (x *Nests) HasDelimitedField() bool {
+	if x == nil {
+		return false
+	}
+	return x.DelimitedField != nil
+}
+
+func (x *Nests) ClearOptNested() {
+	x.OptNested = nil
+}
+
+func (x *Nests) ClearOptgroup() {
+	x.Optgroup = nil
+}
+
+func (x *Nests) ClearDelimitedField() {
+	x.DelimitedField = nil
+}
+
+type Nests_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptNested      *Nested
+	Optgroup       *Nests_OptGroup
+	DelimitedField *Nests_OptGroup
+	RptNested      []*Nested
+	Rptgroup       []*Nests_RptGroup
+}
+
+func (b0 Nests_builder) Build() *Nests {
+	m0 := &Nests{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptNested = b.OptNested
+	x.Optgroup = b.Optgroup
+	x.DelimitedField = b.DelimitedField
+	x.RptNested = b.RptNested
+	x.Rptgroup = b.Rptgroup
+	return m0
+}
+
+// Message contains required fields.
+type Requireds struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	ReqBool       *bool                  `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
+	ReqSfixed64   *int64                 `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
+	ReqDouble     *float64               `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
+	ReqString     *string                `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	ReqEnum       *Enum                  `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=hybrid.pbeditions.Enum" json:"req_enum,omitempty"`
+	ReqNested     *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Requireds) Reset() {
+	*x = Requireds{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Requireds) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Requireds) ProtoMessage() {}
+
+func (x *Requireds) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Requireds) GetReqBool() bool {
+	if x != nil && x.ReqBool != nil {
+		return *x.ReqBool
+	}
+	return false
+}
+
+func (x *Requireds) GetReqSfixed64() int64 {
+	if x != nil && x.ReqSfixed64 != nil {
+		return *x.ReqSfixed64
+	}
+	return 0
+}
+
+func (x *Requireds) GetReqDouble() float64 {
+	if x != nil && x.ReqDouble != nil {
+		return *x.ReqDouble
+	}
+	return 0
+}
+
+func (x *Requireds) GetReqString() string {
+	if x != nil && x.ReqString != nil {
+		return *x.ReqString
+	}
+	return ""
+}
+
+func (x *Requireds) GetReqEnum() Enum {
+	if x != nil && x.ReqEnum != nil {
+		return *x.ReqEnum
+	}
+	return Enum_ONE
+}
+
+func (x *Requireds) GetReqNested() *Nested {
+	if x != nil {
+		return x.ReqNested
+	}
+	return nil
+}
+
+func (x *Requireds) SetReqBool(v bool) {
+	x.ReqBool = &v
+}
+
+func (x *Requireds) SetReqSfixed64(v int64) {
+	x.ReqSfixed64 = &v
+}
+
+func (x *Requireds) SetReqDouble(v float64) {
+	x.ReqDouble = &v
+}
+
+func (x *Requireds) SetReqString(v string) {
+	x.ReqString = &v
+}
+
+func (x *Requireds) SetReqEnum(v Enum) {
+	x.ReqEnum = &v
+}
+
+func (x *Requireds) SetReqNested(v *Nested) {
+	x.ReqNested = v
+}
+
+func (x *Requireds) HasReqBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqBool != nil
+}
+
+func (x *Requireds) HasReqSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqSfixed64 != nil
+}
+
+func (x *Requireds) HasReqDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqDouble != nil
+}
+
+func (x *Requireds) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqString != nil
+}
+
+func (x *Requireds) HasReqEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqEnum != nil
+}
+
+func (x *Requireds) HasReqNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqNested != nil
+}
+
+func (x *Requireds) ClearReqBool() {
+	x.ReqBool = nil
+}
+
+func (x *Requireds) ClearReqSfixed64() {
+	x.ReqSfixed64 = nil
+}
+
+func (x *Requireds) ClearReqDouble() {
+	x.ReqDouble = nil
+}
+
+func (x *Requireds) ClearReqString() {
+	x.ReqString = nil
+}
+
+func (x *Requireds) ClearReqEnum() {
+	x.ReqEnum = nil
+}
+
+func (x *Requireds) ClearReqNested() {
+	x.ReqNested = nil
+}
+
+type Requireds_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqBool     *bool
+	ReqSfixed64 *int64
+	ReqDouble   *float64
+	ReqString   *string
+	ReqEnum     *Enum
+	ReqNested   *Nested
+}
+
+func (b0 Requireds_builder) Build() *Requireds {
+	m0 := &Requireds{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.ReqBool = b.ReqBool
+	x.ReqSfixed64 = b.ReqSfixed64
+	x.ReqDouble = b.ReqDouble
+	x.ReqString = b.ReqString
+	x.ReqEnum = b.ReqEnum
+	x.ReqNested = b.ReqNested
+	return m0
+}
+
+// Message contains both required and optional fields.
+type PartialRequired struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	OptString     *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PartialRequired) Reset() {
+	*x = PartialRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PartialRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartialRequired) ProtoMessage() {}
+
+func (x *PartialRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *PartialRequired) GetReqString() string {
+	if x != nil && x.ReqString != nil {
+		return *x.ReqString
+	}
+	return ""
+}
+
+func (x *PartialRequired) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *PartialRequired) SetReqString(v string) {
+	x.ReqString = &v
+}
+
+func (x *PartialRequired) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *PartialRequired) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqString != nil
+}
+
+func (x *PartialRequired) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *PartialRequired) ClearReqString() {
+	x.ReqString = nil
+}
+
+func (x *PartialRequired) ClearOptString() {
+	x.OptString = nil
+}
+
+type PartialRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqString *string
+	OptString *string
+}
+
+func (b0 PartialRequired_builder) Build() *PartialRequired {
+	m0 := &PartialRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.ReqString = b.ReqString
+	x.OptString = b.OptString
+	return m0
+}
+
+type NestedWithRequired struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	ReqString     *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *NestedWithRequired) Reset() {
+	*x = NestedWithRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NestedWithRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NestedWithRequired) ProtoMessage() {}
+
+func (x *NestedWithRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *NestedWithRequired) GetReqString() string {
+	if x != nil && x.ReqString != nil {
+		return *x.ReqString
+	}
+	return ""
+}
+
+func (x *NestedWithRequired) SetReqString(v string) {
+	x.ReqString = &v
+}
+
+func (x *NestedWithRequired) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return x.ReqString != nil
+}
+
+func (x *NestedWithRequired) ClearReqString() {
+	x.ReqString = nil
+}
+
+type NestedWithRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqString *string
+}
+
+func (b0 NestedWithRequired_builder) Build() *NestedWithRequired {
+	m0 := &NestedWithRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.ReqString = b.ReqString
+	return m0
+}
+
+type IndirectRequired struct {
+	state       protoimpl.MessageState         `protogen:"hybrid.v1"`
+	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// Types that are valid to be assigned to Union:
+	//
+	//	*IndirectRequired_OneofNested
+	Union         isIndirectRequired_Union `protobuf_oneof:"union"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *IndirectRequired) Reset() {
+	*x = IndirectRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IndirectRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IndirectRequired) ProtoMessage() {}
+
+func (x *IndirectRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *IndirectRequired) GetOptNested() *NestedWithRequired {
+	if x != nil {
+		return x.OptNested
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetRptNested() []*NestedWithRequired {
+	if x != nil {
+		return x.RptNested
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
+	if x != nil {
+		return x.StrToNested
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetUnion() isIndirectRequired_Union {
+	if x != nil {
+		return x.Union
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetOneofNested() *NestedWithRequired {
+	if x != nil {
+		if x, ok := x.Union.(*IndirectRequired_OneofNested); ok {
+			return x.OneofNested
+		}
+	}
+	return nil
+}
+
+func (x *IndirectRequired) SetOptNested(v *NestedWithRequired) {
+	x.OptNested = v
+}
+
+func (x *IndirectRequired) SetRptNested(v []*NestedWithRequired) {
+	x.RptNested = v
+}
+
+func (x *IndirectRequired) SetStrToNested(v map[string]*NestedWithRequired) {
+	x.StrToNested = v
+}
+
+func (x *IndirectRequired) SetOneofNested(v *NestedWithRequired) {
+	if v == nil {
+		x.Union = nil
+		return
+	}
+	x.Union = &IndirectRequired_OneofNested{v}
+}
+
+func (x *IndirectRequired) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNested != nil
+}
+
+func (x *IndirectRequired) HasUnion() bool {
+	if x == nil {
+		return false
+	}
+	return x.Union != nil
+}
+
+func (x *IndirectRequired) HasOneofNested() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.Union.(*IndirectRequired_OneofNested)
+	return ok
+}
+
+func (x *IndirectRequired) ClearOptNested() {
+	x.OptNested = nil
+}
+
+func (x *IndirectRequired) ClearUnion() {
+	x.Union = nil
+}
+
+func (x *IndirectRequired) ClearOneofNested() {
+	if _, ok := x.Union.(*IndirectRequired_OneofNested); ok {
+		x.Union = nil
+	}
+}
+
+const IndirectRequired_Union_not_set_case case_IndirectRequired_Union = 0
+const IndirectRequired_OneofNested_case case_IndirectRequired_Union = 4
+
+func (x *IndirectRequired) WhichUnion() case_IndirectRequired_Union {
+	if x == nil {
+		return IndirectRequired_Union_not_set_case
+	}
+	switch x.Union.(type) {
+	case *IndirectRequired_OneofNested:
+		return IndirectRequired_OneofNested_case
+	default:
+		return IndirectRequired_Union_not_set_case
+	}
+}
+
+type IndirectRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptNested   *NestedWithRequired
+	RptNested   []*NestedWithRequired
+	StrToNested map[string]*NestedWithRequired
+	// Fields of oneof Union:
+	OneofNested *NestedWithRequired
+	// -- end of Union
+}
+
+func (b0 IndirectRequired_builder) Build() *IndirectRequired {
+	m0 := &IndirectRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptNested = b.OptNested
+	x.RptNested = b.RptNested
+	x.StrToNested = b.StrToNested
+	if b.OneofNested != nil {
+		x.Union = &IndirectRequired_OneofNested{b.OneofNested}
+	}
+	return m0
+}
+
+type case_IndirectRequired_Union protoreflect.FieldNumber
+
+func (x case_IndirectRequired_Union) String() string {
+	md := file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[12].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isIndirectRequired_Union interface {
+	isIndirectRequired_Union()
+}
+
+type IndirectRequired_OneofNested struct {
+	OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
+}
+
+func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
+
+type Extensions struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptString       *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBool         *bool                  `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32        *int32                 `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *Extensions) Reset() {
+	*x = Extensions{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Extensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Extensions) ProtoMessage() {}
+
+func (x *Extensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Extensions) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *Extensions) GetOptBool() bool {
+	if x != nil && x.OptBool != nil {
+		return *x.OptBool
+	}
+	return false
+}
+
+func (x *Extensions) GetOptInt32() int32 {
+	if x != nil && x.OptInt32 != nil {
+		return *x.OptInt32
+	}
+	return 0
+}
+
+func (x *Extensions) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *Extensions) SetOptBool(v bool) {
+	x.OptBool = &v
+}
+
+func (x *Extensions) SetOptInt32(v int32) {
+	x.OptInt32 = &v
+}
+
+func (x *Extensions) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *Extensions) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBool != nil
+}
+
+func (x *Extensions) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptInt32 != nil
+}
+
+func (x *Extensions) ClearOptString() {
+	x.OptString = nil
+}
+
+func (x *Extensions) ClearOptBool() {
+	x.OptBool = nil
+}
+
+func (x *Extensions) ClearOptInt32() {
+	x.OptInt32 = nil
+}
+
+type Extensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+	OptBool   *bool
+	OptInt32  *int32
+}
+
+func (b0 Extensions_builder) Build() *Extensions {
+	m0 := &Extensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptString = b.OptString
+	x.OptBool = b.OptBool
+	x.OptInt32 = b.OptInt32
+	return m0
+}
+
+type ExtensionsContainer struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ExtensionsContainer) Reset() {
+	*x = ExtensionsContainer{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtensionsContainer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtensionsContainer) ProtoMessage() {}
+
+func (x *ExtensionsContainer) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ExtensionsContainer_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ExtensionsContainer_builder) Build() *ExtensionsContainer {
+	m0 := &ExtensionsContainer{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSet struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *MessageSet) Reset() {
+	*x = MessageSet{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSet) ProtoMessage() {}
+
+func (x *MessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type MessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 MessageSet_builder) Build() *MessageSet {
+	m0 := &MessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSetExtension struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MessageSetExtension) Reset() {
+	*x = MessageSetExtension{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSetExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSetExtension) ProtoMessage() {}
+
+func (x *MessageSetExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *MessageSetExtension) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *MessageSetExtension) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *MessageSetExtension) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *MessageSetExtension) ClearOptString() {
+	x.OptString = nil
+}
+
+type MessageSetExtension_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+}
+
+func (b0 MessageSetExtension_builder) Build() *MessageSetExtension {
+	m0 := &MessageSetExtension{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptString = b.OptString
+	return m0
+}
+
+type FakeMessageSet struct {
+	state           protoimpl.MessageState `protogen:"hybrid.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *FakeMessageSet) Reset() {
+	*x = FakeMessageSet{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FakeMessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FakeMessageSet) ProtoMessage() {}
+
+func (x *FakeMessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type FakeMessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 FakeMessageSet_builder) Build() *FakeMessageSet {
+	m0 := &FakeMessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type FakeMessageSetExtension struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptString     *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FakeMessageSetExtension) Reset() {
+	*x = FakeMessageSetExtension{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FakeMessageSetExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FakeMessageSetExtension) ProtoMessage() {}
+
+func (x *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *FakeMessageSetExtension) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *FakeMessageSetExtension) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *FakeMessageSetExtension) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *FakeMessageSetExtension) ClearOptString() {
+	x.OptString = nil
+}
+
+type FakeMessageSetExtension_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+}
+
+func (b0 FakeMessageSetExtension_builder) Build() *FakeMessageSetExtension {
+	m0 := &FakeMessageSetExtension{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptString = b.OptString
+	return m0
+}
+
+// Message contains well-known type fields.
+type KnownTypes struct {
+	state         protoimpl.MessageState  `protogen:"hybrid.v1"`
+	OptBool       *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32      *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64      *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32     *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64     *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptFloat      *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble     *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptString     *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBytes      *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptDuration   *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
+	OptTimestamp  *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
+	OptStruct     *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
+	OptList       *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
+	OptValue      *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
+	OptNull       *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
+	OptEmpty      *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
+	OptAny        *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
+	OptFieldmask  *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *KnownTypes) Reset() {
+	*x = KnownTypes{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KnownTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KnownTypes) ProtoMessage() {}
+
+func (x *KnownTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *KnownTypes) GetOptBool() *wrapperspb.BoolValue {
+	if x != nil {
+		return x.OptBool
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptInt32() *wrapperspb.Int32Value {
+	if x != nil {
+		return x.OptInt32
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptInt64() *wrapperspb.Int64Value {
+	if x != nil {
+		return x.OptInt64
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptUint32() *wrapperspb.UInt32Value {
+	if x != nil {
+		return x.OptUint32
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptUint64() *wrapperspb.UInt64Value {
+	if x != nil {
+		return x.OptUint64
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptFloat() *wrapperspb.FloatValue {
+	if x != nil {
+		return x.OptFloat
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptDouble() *wrapperspb.DoubleValue {
+	if x != nil {
+		return x.OptDouble
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptString() *wrapperspb.StringValue {
+	if x != nil {
+		return x.OptString
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptBytes() *wrapperspb.BytesValue {
+	if x != nil {
+		return x.OptBytes
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptDuration() *durationpb.Duration {
+	if x != nil {
+		return x.OptDuration
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptTimestamp() *timestamppb.Timestamp {
+	if x != nil {
+		return x.OptTimestamp
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptStruct() *structpb.Struct {
+	if x != nil {
+		return x.OptStruct
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptList() *structpb.ListValue {
+	if x != nil {
+		return x.OptList
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptValue() *structpb.Value {
+	if x != nil {
+		return x.OptValue
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptNull() structpb.NullValue {
+	if x != nil && x.OptNull != nil {
+		return *x.OptNull
+	}
+	return structpb.NullValue(0)
+}
+
+func (x *KnownTypes) GetOptEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.OptEmpty
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptAny() *anypb.Any {
+	if x != nil {
+		return x.OptAny
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptFieldmask() *fieldmaskpb.FieldMask {
+	if x != nil {
+		return x.OptFieldmask
+	}
+	return nil
+}
+
+func (x *KnownTypes) SetOptBool(v *wrapperspb.BoolValue) {
+	x.OptBool = v
+}
+
+func (x *KnownTypes) SetOptInt32(v *wrapperspb.Int32Value) {
+	x.OptInt32 = v
+}
+
+func (x *KnownTypes) SetOptInt64(v *wrapperspb.Int64Value) {
+	x.OptInt64 = v
+}
+
+func (x *KnownTypes) SetOptUint32(v *wrapperspb.UInt32Value) {
+	x.OptUint32 = v
+}
+
+func (x *KnownTypes) SetOptUint64(v *wrapperspb.UInt64Value) {
+	x.OptUint64 = v
+}
+
+func (x *KnownTypes) SetOptFloat(v *wrapperspb.FloatValue) {
+	x.OptFloat = v
+}
+
+func (x *KnownTypes) SetOptDouble(v *wrapperspb.DoubleValue) {
+	x.OptDouble = v
+}
+
+func (x *KnownTypes) SetOptString(v *wrapperspb.StringValue) {
+	x.OptString = v
+}
+
+func (x *KnownTypes) SetOptBytes(v *wrapperspb.BytesValue) {
+	x.OptBytes = v
+}
+
+func (x *KnownTypes) SetOptDuration(v *durationpb.Duration) {
+	x.OptDuration = v
+}
+
+func (x *KnownTypes) SetOptTimestamp(v *timestamppb.Timestamp) {
+	x.OptTimestamp = v
+}
+
+func (x *KnownTypes) SetOptStruct(v *structpb.Struct) {
+	x.OptStruct = v
+}
+
+func (x *KnownTypes) SetOptList(v *structpb.ListValue) {
+	x.OptList = v
+}
+
+func (x *KnownTypes) SetOptValue(v *structpb.Value) {
+	x.OptValue = v
+}
+
+func (x *KnownTypes) SetOptNull(v structpb.NullValue) {
+	x.OptNull = &v
+}
+
+func (x *KnownTypes) SetOptEmpty(v *emptypb.Empty) {
+	x.OptEmpty = v
+}
+
+func (x *KnownTypes) SetOptAny(v *anypb.Any) {
+	x.OptAny = v
+}
+
+func (x *KnownTypes) SetOptFieldmask(v *fieldmaskpb.FieldMask) {
+	x.OptFieldmask = v
+}
+
+func (x *KnownTypes) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBool != nil
+}
+
+func (x *KnownTypes) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptInt32 != nil
+}
+
+func (x *KnownTypes) HasOptInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptInt64 != nil
+}
+
+func (x *KnownTypes) HasOptUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUint32 != nil
+}
+
+func (x *KnownTypes) HasOptUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUint64 != nil
+}
+
+func (x *KnownTypes) HasOptFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFloat != nil
+}
+
+func (x *KnownTypes) HasOptDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptDouble != nil
+}
+
+func (x *KnownTypes) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *KnownTypes) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBytes != nil
+}
+
+func (x *KnownTypes) HasOptDuration() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptDuration != nil
+}
+
+func (x *KnownTypes) HasOptTimestamp() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptTimestamp != nil
+}
+
+func (x *KnownTypes) HasOptStruct() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptStruct != nil
+}
+
+func (x *KnownTypes) HasOptList() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptList != nil
+}
+
+func (x *KnownTypes) HasOptValue() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptValue != nil
+}
+
+func (x *KnownTypes) HasOptNull() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNull != nil
+}
+
+func (x *KnownTypes) HasOptEmpty() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptEmpty != nil
+}
+
+func (x *KnownTypes) HasOptAny() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptAny != nil
+}
+
+func (x *KnownTypes) HasOptFieldmask() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFieldmask != nil
+}
+
+func (x *KnownTypes) ClearOptBool() {
+	x.OptBool = nil
+}
+
+func (x *KnownTypes) ClearOptInt32() {
+	x.OptInt32 = nil
+}
+
+func (x *KnownTypes) ClearOptInt64() {
+	x.OptInt64 = nil
+}
+
+func (x *KnownTypes) ClearOptUint32() {
+	x.OptUint32 = nil
+}
+
+func (x *KnownTypes) ClearOptUint64() {
+	x.OptUint64 = nil
+}
+
+func (x *KnownTypes) ClearOptFloat() {
+	x.OptFloat = nil
+}
+
+func (x *KnownTypes) ClearOptDouble() {
+	x.OptDouble = nil
+}
+
+func (x *KnownTypes) ClearOptString() {
+	x.OptString = nil
+}
+
+func (x *KnownTypes) ClearOptBytes() {
+	x.OptBytes = nil
+}
+
+func (x *KnownTypes) ClearOptDuration() {
+	x.OptDuration = nil
+}
+
+func (x *KnownTypes) ClearOptTimestamp() {
+	x.OptTimestamp = nil
+}
+
+func (x *KnownTypes) ClearOptStruct() {
+	x.OptStruct = nil
+}
+
+func (x *KnownTypes) ClearOptList() {
+	x.OptList = nil
+}
+
+func (x *KnownTypes) ClearOptValue() {
+	x.OptValue = nil
+}
+
+func (x *KnownTypes) ClearOptNull() {
+	x.OptNull = nil
+}
+
+func (x *KnownTypes) ClearOptEmpty() {
+	x.OptEmpty = nil
+}
+
+func (x *KnownTypes) ClearOptAny() {
+	x.OptAny = nil
+}
+
+func (x *KnownTypes) ClearOptFieldmask() {
+	x.OptFieldmask = nil
+}
+
+type KnownTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptBool      *wrapperspb.BoolValue
+	OptInt32     *wrapperspb.Int32Value
+	OptInt64     *wrapperspb.Int64Value
+	OptUint32    *wrapperspb.UInt32Value
+	OptUint64    *wrapperspb.UInt64Value
+	OptFloat     *wrapperspb.FloatValue
+	OptDouble    *wrapperspb.DoubleValue
+	OptString    *wrapperspb.StringValue
+	OptBytes     *wrapperspb.BytesValue
+	OptDuration  *durationpb.Duration
+	OptTimestamp *timestamppb.Timestamp
+	OptStruct    *structpb.Struct
+	OptList      *structpb.ListValue
+	OptValue     *structpb.Value
+	OptNull      *structpb.NullValue
+	OptEmpty     *emptypb.Empty
+	OptAny       *anypb.Any
+	OptFieldmask *fieldmaskpb.FieldMask
+}
+
+func (b0 KnownTypes_builder) Build() *KnownTypes {
+	m0 := &KnownTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptBool = b.OptBool
+	x.OptInt32 = b.OptInt32
+	x.OptInt64 = b.OptInt64
+	x.OptUint32 = b.OptUint32
+	x.OptUint64 = b.OptUint64
+	x.OptFloat = b.OptFloat
+	x.OptDouble = b.OptDouble
+	x.OptString = b.OptString
+	x.OptBytes = b.OptBytes
+	x.OptDuration = b.OptDuration
+	x.OptTimestamp = b.OptTimestamp
+	x.OptStruct = b.OptStruct
+	x.OptList = b.OptList
+	x.OptValue = b.OptValue
+	x.OptNull = b.OptNull
+	x.OptEmpty = b.OptEmpty
+	x.OptAny = b.OptAny
+	x.OptFieldmask = b.OptFieldmask
+	return m0
+}
+
+type Nests_OptGroup struct {
+	state                protoimpl.MessageState         `protogen:"hybrid.v1"`
+	OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
+	NestedDelimitedField *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=nestedDelimitedField" json:"nested_delimited_field,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *Nests_OptGroup) Reset() {
+	*x = Nests_OptGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_OptGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_OptGroup) ProtoMessage() {}
+
+func (x *Nests_OptGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_OptGroup) GetOptString() string {
+	if x != nil && x.OptString != nil {
+		return *x.OptString
+	}
+	return ""
+}
+
+func (x *Nests_OptGroup) GetOptNested() *Nested {
+	if x != nil {
+		return x.OptNested
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
+	if x != nil {
+		return x.Optnestedgroup
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) GetNestedDelimitedField() *Nests_OptGroup_OptNestedGroup {
+	if x != nil {
+		return x.NestedDelimitedField
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) SetOptString(v string) {
+	x.OptString = &v
+}
+
+func (x *Nests_OptGroup) SetOptNested(v *Nested) {
+	x.OptNested = v
+}
+
+func (x *Nests_OptGroup) SetOptnestedgroup(v *Nests_OptGroup_OptNestedGroup) {
+	x.Optnestedgroup = v
+}
+
+func (x *Nests_OptGroup) SetNestedDelimitedField(v *Nests_OptGroup_OptNestedGroup) {
+	x.NestedDelimitedField = v
+}
+
+func (x *Nests_OptGroup) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptString != nil
+}
+
+func (x *Nests_OptGroup) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptNested != nil
+}
+
+func (x *Nests_OptGroup) HasOptnestedgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.Optnestedgroup != nil
+}
+
+func (x *Nests_OptGroup) HasNestedDelimitedField() bool {
+	if x == nil {
+		return false
+	}
+	return x.NestedDelimitedField != nil
+}
+
+func (x *Nests_OptGroup) ClearOptString() {
+	x.OptString = nil
+}
+
+func (x *Nests_OptGroup) ClearOptNested() {
+	x.OptNested = nil
+}
+
+func (x *Nests_OptGroup) ClearOptnestedgroup() {
+	x.Optnestedgroup = nil
+}
+
+func (x *Nests_OptGroup) ClearNestedDelimitedField() {
+	x.NestedDelimitedField = nil
+}
+
+type Nests_OptGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString            *string
+	OptNested            *Nested
+	Optnestedgroup       *Nests_OptGroup_OptNestedGroup
+	NestedDelimitedField *Nests_OptGroup_OptNestedGroup
+}
+
+func (b0 Nests_OptGroup_builder) Build() *Nests_OptGroup {
+	m0 := &Nests_OptGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptString = b.OptString
+	x.OptNested = b.OptNested
+	x.Optnestedgroup = b.Optnestedgroup
+	x.NestedDelimitedField = b.NestedDelimitedField
+	return m0
+}
+
+type Nests_RptGroup struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	RptString     []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Nests_RptGroup) Reset() {
+	*x = Nests_RptGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_RptGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_RptGroup) ProtoMessage() {}
+
+func (x *Nests_RptGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_RptGroup) GetRptString() []string {
+	if x != nil {
+		return x.RptString
+	}
+	return nil
+}
+
+func (x *Nests_RptGroup) SetRptString(v []string) {
+	x.RptString = v
+}
+
+type Nests_RptGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RptString []string
+}
+
+func (b0 Nests_RptGroup_builder) Build() *Nests_RptGroup {
+	m0 := &Nests_RptGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.RptString = b.RptString
+	return m0
+}
+
+type Nests_OptGroup_OptNestedGroup struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	OptFixed32    *uint32                `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) Reset() {
+	*x = Nests_OptGroup_OptNestedGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_OptGroup_OptNestedGroup) ProtoMessage() {}
+
+func (x *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
+	if x != nil && x.OptFixed32 != nil {
+		return *x.OptFixed32
+	}
+	return 0
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) SetOptFixed32(v uint32) {
+	x.OptFixed32 = &v
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) HasOptFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptFixed32 != nil
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) ClearOptFixed32() {
+	x.OptFixed32 = nil
+}
+
+type Nests_OptGroup_OptNestedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptFixed32 *uint32
+}
+
+func (b0 Nests_OptGroup_OptNestedGroup_builder) Build() *Nests_OptGroup_OptNestedGroup {
+	m0 := &Nests_OptGroup_OptNestedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.OptFixed32 = b.OptFixed32
+	return m0
+}
+
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         21,
+		Name:          "hybrid.pbeditions.opt_ext_bool",
+		Tag:           "varint,21,opt,name=opt_ext_bool",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         22,
+		Name:          "hybrid.pbeditions.opt_ext_string",
+		Tag:           "bytes,22,opt,name=opt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Enum)(nil),
+		Field:         23,
+		Name:          "hybrid.pbeditions.opt_ext_enum",
+		Tag:           "varint,23,opt,name=opt_ext_enum,enum=hybrid.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         24,
+		Name:          "hybrid.pbeditions.opt_ext_nested",
+		Tag:           "bytes,24,opt,name=opt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*PartialRequired)(nil),
+		Field:         25,
+		Name:          "hybrid.pbeditions.opt_ext_partial",
+		Tag:           "bytes,25,opt,name=opt_ext_partial",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         31,
+		Name:          "hybrid.pbeditions.rpt_ext_fixed32",
+		Tag:           "fixed32,31,rep,packed,name=rpt_ext_fixed32",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]Enum)(nil),
+		Field:         32,
+		Name:          "hybrid.pbeditions.rpt_ext_enum",
+		Tag:           "varint,32,rep,packed,name=rpt_ext_enum,enum=hybrid.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]*Nested)(nil),
+		Field:         33,
+		Name:          "hybrid.pbeditions.rpt_ext_nested",
+		Tag:           "bytes,33,rep,name=rpt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*FakeMessageSetExtension)(nil),
+		Field:         50,
+		Name:          "hybrid.pbeditions.message_set_extension",
+		Tag:           "bytes,50,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         51,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.opt_ext_bool",
+		Tag:           "varint,51,opt,name=opt_ext_bool",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         52,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.opt_ext_string",
+		Tag:           "bytes,52,opt,name=opt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Enum)(nil),
+		Field:         53,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.opt_ext_enum",
+		Tag:           "varint,53,opt,name=opt_ext_enum,enum=hybrid.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         54,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.opt_ext_nested",
+		Tag:           "bytes,54,opt,name=opt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*PartialRequired)(nil),
+		Field:         55,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.opt_ext_partial",
+		Tag:           "bytes,55,opt,name=opt_ext_partial",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]string)(nil),
+		Field:         61,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.rpt_ext_string",
+		Tag:           "bytes,61,rep,name=rpt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]Enum)(nil),
+		Field:         62,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.rpt_ext_enum",
+		Tag:           "varint,62,rep,packed,name=rpt_ext_enum,enum=hybrid.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]*Nested)(nil),
+		Field:         63,
+		Name:          "hybrid.pbeditions.ExtensionsContainer.rpt_ext_nested",
+		Tag:           "bytes,63,rep,name=rpt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*MessageSetExtension)(nil),
+		Field:         10,
+		Name:          "hybrid.pbeditions.MessageSetExtension.message_set_extension",
+		Tag:           "bytes,10,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*MessageSetExtension)(nil),
+		Field:         20,
+		Name:          "hybrid.pbeditions.MessageSetExtension.not_message_set_extension",
+		Tag:           "bytes,20,opt,name=not_message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         30,
+		Name:          "hybrid.pbeditions.MessageSetExtension.ext_nested",
+		Tag:           "bytes,30,opt,name=ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+	{
+		ExtendedType:  (*FakeMessageSet)(nil),
+		ExtensionType: (*FakeMessageSetExtension)(nil),
+		Field:         10,
+		Name:          "hybrid.pbeditions.FakeMessageSetExtension.message_set_extension",
+		Tag:           "bytes,10,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto",
+	},
+}
+
+// Extension fields to Extensions.
+var (
+	// optional bool opt_ext_bool = 21;
+	E_OptExtBool = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[0]
+	// optional string opt_ext_string = 22;
+	E_OptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[1]
+	// optional hybrid.pbeditions.Enum opt_ext_enum = 23;
+	E_OptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[2]
+	// optional hybrid.pbeditions.Nested opt_ext_nested = 24;
+	E_OptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[3]
+	// optional hybrid.pbeditions.PartialRequired opt_ext_partial = 25;
+	E_OptExtPartial = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[4]
+	// repeated fixed32 rpt_ext_fixed32 = 31;
+	E_RptExtFixed32 = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[5]
+	// repeated hybrid.pbeditions.Enum rpt_ext_enum = 32;
+	E_RptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[6]
+	// repeated hybrid.pbeditions.Nested rpt_ext_nested = 33;
+	E_RptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[7]
+	// optional bool opt_ext_bool = 51;
+	E_ExtensionsContainer_OptExtBool = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[9]
+	// optional string opt_ext_string = 52;
+	E_ExtensionsContainer_OptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[10]
+	// optional hybrid.pbeditions.Enum opt_ext_enum = 53;
+	E_ExtensionsContainer_OptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[11]
+	// optional hybrid.pbeditions.Nested opt_ext_nested = 54;
+	E_ExtensionsContainer_OptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[12]
+	// optional hybrid.pbeditions.PartialRequired opt_ext_partial = 55;
+	E_ExtensionsContainer_OptExtPartial = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[13]
+	// repeated string rpt_ext_string = 61;
+	E_ExtensionsContainer_RptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[14]
+	// repeated hybrid.pbeditions.Enum rpt_ext_enum = 62;
+	E_ExtensionsContainer_RptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[15]
+	// repeated hybrid.pbeditions.Nested rpt_ext_nested = 63;
+	E_ExtensionsContainer_RptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[16]
+)
+
+// Extension fields to MessageSet.
+var (
+	// optional hybrid.pbeditions.FakeMessageSetExtension message_set_extension = 50;
+	E_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[8]
+	// optional hybrid.pbeditions.MessageSetExtension message_set_extension = 10;
+	E_MessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[17]
+	// optional hybrid.pbeditions.MessageSetExtension not_message_set_extension = 20;
+	E_MessageSetExtension_NotMessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[18]
+	// optional hybrid.pbeditions.Nested ext_nested = 30;
+	E_MessageSetExtension_ExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[19]
+)
+
+// Extension fields to FakeMessageSet.
+var (
+	// optional hybrid.pbeditions.FakeMessageSetExtension message_set_extension = 10;
+	E_FakeMessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes[20]
+)
+
+var File_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x4b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x32,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
+	0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
+	0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75,
+	0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70,
+	0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a,
+	0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a,
+	0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70,
+	0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52,
+	0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21,
+	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14,
+	0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a,
+	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x8f, 0x04, 0x0a, 0x0f, 0x49, 0x6d,
+	0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x1c, 0x0a,
+	0x06, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x02, 0x52, 0x05, 0x73, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x07, 0x73,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1e, 0x0a, 0x07, 0x73,
+	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x20, 0x0a, 0x08, 0x73,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x20, 0x0a,
+	0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x22, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x08, 0x73,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x22, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0a, 0x73,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x09, 0x73, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x07, 0x73, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52,
+	0x06, 0x73, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02,
+	0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x07, 0x73, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x06, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x43, 0x0a, 0x0d, 0x55,
+	0x54, 0x46, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x10,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x02, 0x20, 0x02, 0x52,
+	0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x22, 0x63, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x55, 0x54, 0x46, 0x38, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x54, 0x46, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x64, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa1, 0x04, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12,
+	0x32, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x17, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07,
+	0x72, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x47, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6c, 0x69,
+	0x63, 0x69, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x0c, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x4b, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e,
+	0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x4b, 0x0a,
+	0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x72, 0x70, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x60, 0x0a, 0x14, 0x69, 0x6d,
+	0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
+	0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75,
+	0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63,
+	0x69, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x28, 0x0a, 0x0a,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e,
+	0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,
+	0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x41, 0x0a, 0x0e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
+	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12,
+	0x08, 0x0a, 0x04, 0x5a, 0x57, 0x45, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48,
+	0x4e, 0x10, 0x0a, 0x1a, 0x04, 0x3a, 0x02, 0x10, 0x01, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f,
+	0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c,
+	0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a,
+	0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03,
+	0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70,
+	0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09,
+	0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72,
+	0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74,
+	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+	0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x22, 0xb9, 0x02, 0x0a, 0x04, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x27, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f,
+	0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54,
+	0x6f, 0x53, 0x74, 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x59, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x06,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22,
+	0x80, 0x06, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e,
+	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x51, 0x0a, 0x0f, 0x64, 0x65, 0x6c,
+	0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0e, 0x64, 0x65,
+	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x0a,
+	0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04,
+	0x18, 0x02, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xe6,
+	0x02, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x5f, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e,
+	0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x6d, 0x0a, 0x16, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e,
+	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x14,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x1a, 0x31, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x1a, 0x29, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65,
+	0x6c, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73,
+	0x12, 0x20, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f,
+	0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0a,
+	0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72,
+	0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45,
+	0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x22, 0x56, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x0a, 0x12,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72,
+	0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xb4, 0x03, 0x0a, 0x10, 0x49, 0x6e, 0x64,
+	0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x44, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09,
+	0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x74, 0x72,
+	0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x34, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a,
+	0x65, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57,
+	0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22,
+	0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08,
+	0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+	0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xbf, 0x05, 0x0a, 0x13, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+	0x65, 0x72, 0x32, 0x3f, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x32, 0x43, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x58, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x32, 0x5e, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x32, 0x69, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x32, 0x43, 0x0a,
+	0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3d,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x32, 0x58, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e,
+	0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
+	0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x5e, 0x0a, 0x0e,
+	0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c,
+	0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff,
+	0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x8b, 0x03, 0x0a, 0x13, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32,
+	0x79, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x80, 0x01, 0x0a, 0x19, 0x6e,
+	0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x57, 0x0a,
+	0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80,
+	0x80, 0x02, 0x22, 0xbc, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x81, 0x01,
+	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x22, 0x9e, 0x08, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07,
+	0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f,
+	0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
+	0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74,
+	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79,
+	0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+	0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70,
+	0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c,
+	0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73,
+	0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70,
+	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x75,
+	0x6c, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x33, 0x0a,
+	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x45, 0x6d, 0x70,
+	0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x20, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x41, 0x6e,
+	0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61,
+	0x73, 0x6b, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
+	0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61,
+	0x73, 0x6b, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e,
+	0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
+	0x54, 0x45, 0x4e, 0x10, 0x0a, 0x2a, 0x3b, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x57, 0x45, 0x49,
+	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48, 0x4e, 0x10, 0x0a, 0x1a, 0x04, 0x3a, 0x02,
+	0x10, 0x01, 0x3a, 0x3f, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x3a, 0x43, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x58, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x3a, 0x5e, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x3a, 0x69, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x3a, 0x45, 0x0a,
+	0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x3a, 0x58, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x5e,
+	0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x7d,
+	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x5a,
+	0x53, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
+	0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74,
+	0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x09, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x10, 0x02, 0x20, 0x03,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_goTypes = []any{
+	(Enum)(0),                             // 0: hybrid.pbeditions.Enum
+	(OpenEnum)(0),                         // 1: hybrid.pbeditions.OpenEnum
+	(Enums_NestedEnum)(0),                 // 2: hybrid.pbeditions.Enums.NestedEnum
+	(Enums_NestedOpenEnum)(0),             // 3: hybrid.pbeditions.Enums.NestedOpenEnum
+	(*Scalars)(nil),                       // 4: hybrid.pbeditions.Scalars
+	(*ImplicitScalars)(nil),               // 5: hybrid.pbeditions.ImplicitScalars
+	(*UTF8Validated)(nil),                 // 6: hybrid.pbeditions.UTF8Validated
+	(*NestsUTF8Validated)(nil),            // 7: hybrid.pbeditions.NestsUTF8Validated
+	(*Enums)(nil),                         // 8: hybrid.pbeditions.Enums
+	(*Repeats)(nil),                       // 9: hybrid.pbeditions.Repeats
+	(*Maps)(nil),                          // 10: hybrid.pbeditions.Maps
+	(*Nested)(nil),                        // 11: hybrid.pbeditions.Nested
+	(*Nests)(nil),                         // 12: hybrid.pbeditions.Nests
+	(*Requireds)(nil),                     // 13: hybrid.pbeditions.Requireds
+	(*PartialRequired)(nil),               // 14: hybrid.pbeditions.PartialRequired
+	(*NestedWithRequired)(nil),            // 15: hybrid.pbeditions.NestedWithRequired
+	(*IndirectRequired)(nil),              // 16: hybrid.pbeditions.IndirectRequired
+	(*Extensions)(nil),                    // 17: hybrid.pbeditions.Extensions
+	(*ExtensionsContainer)(nil),           // 18: hybrid.pbeditions.ExtensionsContainer
+	(*MessageSet)(nil),                    // 19: hybrid.pbeditions.MessageSet
+	(*MessageSetExtension)(nil),           // 20: hybrid.pbeditions.MessageSetExtension
+	(*FakeMessageSet)(nil),                // 21: hybrid.pbeditions.FakeMessageSet
+	(*FakeMessageSetExtension)(nil),       // 22: hybrid.pbeditions.FakeMessageSetExtension
+	(*KnownTypes)(nil),                    // 23: hybrid.pbeditions.KnownTypes
+	nil,                                   // 24: hybrid.pbeditions.Maps.Int32ToStrEntry
+	nil,                                   // 25: hybrid.pbeditions.Maps.StrToNestedEntry
+	(*Nests_OptGroup)(nil),                // 26: hybrid.pbeditions.Nests.OptGroup
+	(*Nests_RptGroup)(nil),                // 27: hybrid.pbeditions.Nests.RptGroup
+	(*Nests_OptGroup_OptNestedGroup)(nil), // 28: hybrid.pbeditions.Nests.OptGroup.OptNestedGroup
+	nil,                                   // 29: hybrid.pbeditions.IndirectRequired.StrToNestedEntry
+	(*wrapperspb.BoolValue)(nil),          // 30: google.protobuf.BoolValue
+	(*wrapperspb.Int32Value)(nil),         // 31: google.protobuf.Int32Value
+	(*wrapperspb.Int64Value)(nil),         // 32: google.protobuf.Int64Value
+	(*wrapperspb.UInt32Value)(nil),        // 33: google.protobuf.UInt32Value
+	(*wrapperspb.UInt64Value)(nil),        // 34: google.protobuf.UInt64Value
+	(*wrapperspb.FloatValue)(nil),         // 35: google.protobuf.FloatValue
+	(*wrapperspb.DoubleValue)(nil),        // 36: google.protobuf.DoubleValue
+	(*wrapperspb.StringValue)(nil),        // 37: google.protobuf.StringValue
+	(*wrapperspb.BytesValue)(nil),         // 38: google.protobuf.BytesValue
+	(*durationpb.Duration)(nil),           // 39: google.protobuf.Duration
+	(*timestamppb.Timestamp)(nil),         // 40: google.protobuf.Timestamp
+	(*structpb.Struct)(nil),               // 41: google.protobuf.Struct
+	(*structpb.ListValue)(nil),            // 42: google.protobuf.ListValue
+	(*structpb.Value)(nil),                // 43: google.protobuf.Value
+	(structpb.NullValue)(0),               // 44: google.protobuf.NullValue
+	(*emptypb.Empty)(nil),                 // 45: google.protobuf.Empty
+	(*anypb.Any)(nil),                     // 46: google.protobuf.Any
+	(*fieldmaskpb.FieldMask)(nil),         // 47: google.protobuf.FieldMask
+}
+var file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_depIdxs = []int32{
+	6,  // 0: hybrid.pbeditions.NestsUTF8Validated.validated_message:type_name -> hybrid.pbeditions.UTF8Validated
+	0,  // 1: hybrid.pbeditions.Enums.opt_enum:type_name -> hybrid.pbeditions.Enum
+	0,  // 2: hybrid.pbeditions.Enums.rpt_enum:type_name -> hybrid.pbeditions.Enum
+	1,  // 3: hybrid.pbeditions.Enums.implicit_enum:type_name -> hybrid.pbeditions.OpenEnum
+	2,  // 4: hybrid.pbeditions.Enums.opt_nested_enum:type_name -> hybrid.pbeditions.Enums.NestedEnum
+	2,  // 5: hybrid.pbeditions.Enums.rpt_nested_enum:type_name -> hybrid.pbeditions.Enums.NestedEnum
+	3,  // 6: hybrid.pbeditions.Enums.implicit_nested_enum:type_name -> hybrid.pbeditions.Enums.NestedOpenEnum
+	24, // 7: hybrid.pbeditions.Maps.int32_to_str:type_name -> hybrid.pbeditions.Maps.Int32ToStrEntry
+	25, // 8: hybrid.pbeditions.Maps.str_to_nested:type_name -> hybrid.pbeditions.Maps.StrToNestedEntry
+	11, // 9: hybrid.pbeditions.Nested.opt_nested:type_name -> hybrid.pbeditions.Nested
+	11, // 10: hybrid.pbeditions.Nests.opt_nested:type_name -> hybrid.pbeditions.Nested
+	26, // 11: hybrid.pbeditions.Nests.optgroup:type_name -> hybrid.pbeditions.Nests.OptGroup
+	26, // 12: hybrid.pbeditions.Nests.delimited_field:type_name -> hybrid.pbeditions.Nests.OptGroup
+	11, // 13: hybrid.pbeditions.Nests.rpt_nested:type_name -> hybrid.pbeditions.Nested
+	27, // 14: hybrid.pbeditions.Nests.rptgroup:type_name -> hybrid.pbeditions.Nests.RptGroup
+	0,  // 15: hybrid.pbeditions.Requireds.req_enum:type_name -> hybrid.pbeditions.Enum
+	11, // 16: hybrid.pbeditions.Requireds.req_nested:type_name -> hybrid.pbeditions.Nested
+	15, // 17: hybrid.pbeditions.IndirectRequired.opt_nested:type_name -> hybrid.pbeditions.NestedWithRequired
+	15, // 18: hybrid.pbeditions.IndirectRequired.rpt_nested:type_name -> hybrid.pbeditions.NestedWithRequired
+	29, // 19: hybrid.pbeditions.IndirectRequired.str_to_nested:type_name -> hybrid.pbeditions.IndirectRequired.StrToNestedEntry
+	15, // 20: hybrid.pbeditions.IndirectRequired.oneof_nested:type_name -> hybrid.pbeditions.NestedWithRequired
+	30, // 21: hybrid.pbeditions.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
+	31, // 22: hybrid.pbeditions.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
+	32, // 23: hybrid.pbeditions.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
+	33, // 24: hybrid.pbeditions.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
+	34, // 25: hybrid.pbeditions.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
+	35, // 26: hybrid.pbeditions.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
+	36, // 27: hybrid.pbeditions.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
+	37, // 28: hybrid.pbeditions.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
+	38, // 29: hybrid.pbeditions.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
+	39, // 30: hybrid.pbeditions.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
+	40, // 31: hybrid.pbeditions.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
+	41, // 32: hybrid.pbeditions.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
+	42, // 33: hybrid.pbeditions.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
+	43, // 34: hybrid.pbeditions.KnownTypes.opt_value:type_name -> google.protobuf.Value
+	44, // 35: hybrid.pbeditions.KnownTypes.opt_null:type_name -> google.protobuf.NullValue
+	45, // 36: hybrid.pbeditions.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
+	46, // 37: hybrid.pbeditions.KnownTypes.opt_any:type_name -> google.protobuf.Any
+	47, // 38: hybrid.pbeditions.KnownTypes.opt_fieldmask:type_name -> google.protobuf.FieldMask
+	11, // 39: hybrid.pbeditions.Maps.StrToNestedEntry.value:type_name -> hybrid.pbeditions.Nested
+	11, // 40: hybrid.pbeditions.Nests.OptGroup.opt_nested:type_name -> hybrid.pbeditions.Nested
+	28, // 41: hybrid.pbeditions.Nests.OptGroup.optnestedgroup:type_name -> hybrid.pbeditions.Nests.OptGroup.OptNestedGroup
+	28, // 42: hybrid.pbeditions.Nests.OptGroup.nested_delimited_field:type_name -> hybrid.pbeditions.Nests.OptGroup.OptNestedGroup
+	15, // 43: hybrid.pbeditions.IndirectRequired.StrToNestedEntry.value:type_name -> hybrid.pbeditions.NestedWithRequired
+	17, // 44: hybrid.pbeditions.opt_ext_bool:extendee -> hybrid.pbeditions.Extensions
+	17, // 45: hybrid.pbeditions.opt_ext_string:extendee -> hybrid.pbeditions.Extensions
+	17, // 46: hybrid.pbeditions.opt_ext_enum:extendee -> hybrid.pbeditions.Extensions
+	17, // 47: hybrid.pbeditions.opt_ext_nested:extendee -> hybrid.pbeditions.Extensions
+	17, // 48: hybrid.pbeditions.opt_ext_partial:extendee -> hybrid.pbeditions.Extensions
+	17, // 49: hybrid.pbeditions.rpt_ext_fixed32:extendee -> hybrid.pbeditions.Extensions
+	17, // 50: hybrid.pbeditions.rpt_ext_enum:extendee -> hybrid.pbeditions.Extensions
+	17, // 51: hybrid.pbeditions.rpt_ext_nested:extendee -> hybrid.pbeditions.Extensions
+	19, // 52: hybrid.pbeditions.message_set_extension:extendee -> hybrid.pbeditions.MessageSet
+	17, // 53: hybrid.pbeditions.ExtensionsContainer.opt_ext_bool:extendee -> hybrid.pbeditions.Extensions
+	17, // 54: hybrid.pbeditions.ExtensionsContainer.opt_ext_string:extendee -> hybrid.pbeditions.Extensions
+	17, // 55: hybrid.pbeditions.ExtensionsContainer.opt_ext_enum:extendee -> hybrid.pbeditions.Extensions
+	17, // 56: hybrid.pbeditions.ExtensionsContainer.opt_ext_nested:extendee -> hybrid.pbeditions.Extensions
+	17, // 57: hybrid.pbeditions.ExtensionsContainer.opt_ext_partial:extendee -> hybrid.pbeditions.Extensions
+	17, // 58: hybrid.pbeditions.ExtensionsContainer.rpt_ext_string:extendee -> hybrid.pbeditions.Extensions
+	17, // 59: hybrid.pbeditions.ExtensionsContainer.rpt_ext_enum:extendee -> hybrid.pbeditions.Extensions
+	17, // 60: hybrid.pbeditions.ExtensionsContainer.rpt_ext_nested:extendee -> hybrid.pbeditions.Extensions
+	19, // 61: hybrid.pbeditions.MessageSetExtension.message_set_extension:extendee -> hybrid.pbeditions.MessageSet
+	19, // 62: hybrid.pbeditions.MessageSetExtension.not_message_set_extension:extendee -> hybrid.pbeditions.MessageSet
+	19, // 63: hybrid.pbeditions.MessageSetExtension.ext_nested:extendee -> hybrid.pbeditions.MessageSet
+	21, // 64: hybrid.pbeditions.FakeMessageSetExtension.message_set_extension:extendee -> hybrid.pbeditions.FakeMessageSet
+	0,  // 65: hybrid.pbeditions.opt_ext_enum:type_name -> hybrid.pbeditions.Enum
+	11, // 66: hybrid.pbeditions.opt_ext_nested:type_name -> hybrid.pbeditions.Nested
+	14, // 67: hybrid.pbeditions.opt_ext_partial:type_name -> hybrid.pbeditions.PartialRequired
+	0,  // 68: hybrid.pbeditions.rpt_ext_enum:type_name -> hybrid.pbeditions.Enum
+	11, // 69: hybrid.pbeditions.rpt_ext_nested:type_name -> hybrid.pbeditions.Nested
+	22, // 70: hybrid.pbeditions.message_set_extension:type_name -> hybrid.pbeditions.FakeMessageSetExtension
+	0,  // 71: hybrid.pbeditions.ExtensionsContainer.opt_ext_enum:type_name -> hybrid.pbeditions.Enum
+	11, // 72: hybrid.pbeditions.ExtensionsContainer.opt_ext_nested:type_name -> hybrid.pbeditions.Nested
+	14, // 73: hybrid.pbeditions.ExtensionsContainer.opt_ext_partial:type_name -> hybrid.pbeditions.PartialRequired
+	0,  // 74: hybrid.pbeditions.ExtensionsContainer.rpt_ext_enum:type_name -> hybrid.pbeditions.Enum
+	11, // 75: hybrid.pbeditions.ExtensionsContainer.rpt_ext_nested:type_name -> hybrid.pbeditions.Nested
+	20, // 76: hybrid.pbeditions.MessageSetExtension.message_set_extension:type_name -> hybrid.pbeditions.MessageSetExtension
+	20, // 77: hybrid.pbeditions.MessageSetExtension.not_message_set_extension:type_name -> hybrid.pbeditions.MessageSetExtension
+	11, // 78: hybrid.pbeditions.MessageSetExtension.ext_nested:type_name -> hybrid.pbeditions.Nested
+	22, // 79: hybrid.pbeditions.FakeMessageSetExtension.message_set_extension:type_name -> hybrid.pbeditions.FakeMessageSetExtension
+	80, // [80:80] is the sub-list for method output_type
+	80, // [80:80] is the sub-list for method input_type
+	65, // [65:80] is the sub-list for extension type_name
+	44, // [44:65] is the sub-list for extension extendee
+	0,  // [0:44] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_init() }
+func file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_init() {
+	if File_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes[12].OneofWrappers = []any{
+		(*IndirectRequired_OneofNested)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_rawDesc,
+			NumEnums:      4,
+			NumMessages:   26,
+			NumExtensions: 21,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto = out.File
+	file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_goTypes = nil
+	file_internal_testprotos_textpbeditions_textpbeditions_hybrid_test2_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto
new file mode 100644
index 0000000..b44afcc
--- /dev/null
+++ b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid.proto
@@ -0,0 +1,303 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test Protobuf definitions with proto2 syntax.
+edition = "2023";
+
+package hybrid.pbeditions;
+
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/textpbeditions/textpbeditions_hybrid";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_HYBRID;
+option features.enum_type = CLOSED;
+option features.utf8_validation = NONE;
+
+// Scalars contains scalar fields.
+message Scalars {
+  bool opt_bool = 1;
+  int32 opt_int32 = 2;
+  int64 opt_int64 = 3;
+  uint32 opt_uint32 = 4;
+  uint64 opt_uint64 = 5;
+  sint32 opt_sint32 = 6;
+  sint64 opt_sint64 = 7;
+  fixed32 opt_fixed32 = 8;
+  fixed64 opt_fixed64 = 9;
+  sfixed32 opt_sfixed32 = 10;
+  sfixed64 opt_sfixed64 = 11;
+
+  // Textproto marshal outputs fields in the same order as this proto
+  // definition regardless of field number. Following fields are intended to
+  // test that assumption.
+
+  float opt_float = 20;
+  double opt_double = 21;
+
+  bytes opt_bytes = 14;
+  string opt_string = 13;
+}
+
+// ImplicitScalars contains scalar field types with implicit field_presence
+message ImplicitScalars {
+  bool s_bool = 1 [features.field_presence = IMPLICIT];
+  int32 s_int32 = 2 [features.field_presence = IMPLICIT];
+  int64 s_int64 = 3 [features.field_presence = IMPLICIT];
+  uint32 s_uint32 = 4 [features.field_presence = IMPLICIT];
+  uint64 s_uint64 = 5 [features.field_presence = IMPLICIT];
+  sint32 s_sint32 = 6 [features.field_presence = IMPLICIT];
+  sint64 s_sint64 = 7 [features.field_presence = IMPLICIT];
+  fixed32 s_fixed32 = 8 [features.field_presence = IMPLICIT];
+  fixed64 s_fixed64 = 9 [features.field_presence = IMPLICIT];
+  sfixed32 s_sfixed32 = 10 [features.field_presence = IMPLICIT];
+  sfixed64 s_sfixed64 = 11 [features.field_presence = IMPLICIT];
+
+  // Textproto marshal outputs fields in the same order as this proto
+  // definition regardless of field number. Following fields are intended to
+  // test that assumption.
+
+  float s_float = 20 [features.field_presence = IMPLICIT];
+  double s_double = 21 [features.field_presence = IMPLICIT];
+
+  bytes s_bytes = 14 [features.field_presence = IMPLICIT];
+  string s_string = 13 [features.field_presence = IMPLICIT];
+}
+
+enum Enum {
+  ONE = 1;
+  TWO = 2;
+  TEN = 10;
+}
+
+enum OpenEnum {
+  option features.enum_type = OPEN;
+
+  UNKNOWN = 0;
+  EINS = 1;
+  ZWEI = 2;
+  ZEHN = 10;
+}
+
+message UTF8Validated {
+  string validated_string = 1
+      [features.utf8_validation = VERIFY, features.field_presence = IMPLICIT];
+}
+
+message NestsUTF8Validated {
+  UTF8Validated validated_message = 1;
+}
+
+// Message contains enum fields.
+message Enums {
+  Enum opt_enum = 1;
+  repeated Enum rpt_enum = 2;
+  OpenEnum implicit_enum = 5 [features.field_presence = IMPLICIT];
+
+  enum NestedEnum {
+    UNO = 1;
+    DOS = 2;
+    DIEZ = 10;
+  }
+  enum NestedOpenEnum {
+    option features.enum_type = OPEN;
+
+    UNKNOWN = 0;
+    EINS = 1;
+    ZWEI = 2;
+    ZEHN = 10;
+  }
+  NestedEnum opt_nested_enum = 3;
+  repeated NestedEnum rpt_nested_enum = 4;
+  NestedOpenEnum implicit_nested_enum = 6 [features.field_presence = IMPLICIT];
+}
+
+// Message contains repeated fields.
+message Repeats {
+  repeated bool rpt_bool = 1;
+  repeated int32 rpt_int32 = 2;
+  repeated int64 rpt_int64 = 3;
+  repeated uint32 rpt_uint32 = 4;
+  repeated uint64 rpt_uint64 = 5;
+  repeated float rpt_float = 6;
+  repeated double rpt_double = 7;
+  repeated string rpt_string = 8;
+  repeated bytes rpt_bytes = 9;
+}
+
+// Message contains map fields.
+message Maps {
+  map<int32, string> int32_to_str = 1;
+  map<string, Nested> str_to_nested = 4;
+}
+
+// Message type used as submessage.
+message Nested {
+  string opt_string = 1;
+  Nested opt_nested = 2;
+}
+
+// Message contains message and group fields.
+message Nests {
+  Nested opt_nested = 1;
+  message OptGroup {
+    string opt_string = 1;
+    Nested opt_nested = 2;
+
+    message OptNestedGroup {
+      fixed32 opt_fixed32 = 1;
+    }
+    OptNestedGroup optnestedgroup = 3 [features.message_encoding = DELIMITED];
+    OptNestedGroup nested_delimited_field = 4
+        [features.message_encoding = DELIMITED];
+  }
+  OptGroup optgroup = 2 [features.message_encoding = DELIMITED];
+  OptGroup delimited_field = 3 [features.message_encoding = DELIMITED];
+
+  repeated Nested rpt_nested = 4;
+  message RptGroup {
+    repeated string rpt_string = 1;
+  }
+
+  repeated RptGroup rptgroup = 5 [
+    features.message_encoding = DELIMITED,
+    features.repeated_field_encoding = EXPANDED
+  ];
+
+  reserved reserved_field;
+}
+
+// Message contains required fields.
+message Requireds {
+  bool req_bool = 1 [features.field_presence = LEGACY_REQUIRED];
+  sfixed64 req_sfixed64 = 2 [features.field_presence = LEGACY_REQUIRED];
+  double req_double = 3 [features.field_presence = LEGACY_REQUIRED];
+  string req_string = 4 [features.field_presence = LEGACY_REQUIRED];
+  Enum req_enum = 5 [features.field_presence = LEGACY_REQUIRED];
+  Nested req_nested = 6 [features.field_presence = LEGACY_REQUIRED];
+}
+
+// Message contains both required and optional fields.
+message PartialRequired {
+  string req_string = 1 [features.field_presence = LEGACY_REQUIRED];
+  string opt_string = 2;
+}
+
+// Following messages are for testing required field nested in optional,
+// repeated and map fields.
+
+message NestedWithRequired {
+  string req_string = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message IndirectRequired {
+  NestedWithRequired opt_nested = 1;
+  repeated NestedWithRequired rpt_nested = 2;
+  map<string, NestedWithRequired> str_to_nested = 3;
+
+  oneof union {
+    NestedWithRequired oneof_nested = 4;
+  }
+}
+
+// Following messages are for testing extensions.
+
+message Extensions {
+  string opt_string = 1;
+  extensions 20 to 100;
+  bool opt_bool = 101;
+  int32 opt_int32 = 2;
+}
+
+extend Extensions {
+  bool opt_ext_bool = 21;
+  string opt_ext_string = 22;
+  Enum opt_ext_enum = 23;
+  Nested opt_ext_nested = 24;
+  PartialRequired opt_ext_partial = 25;
+
+  repeated fixed32 rpt_ext_fixed32 = 31;
+  repeated Enum rpt_ext_enum = 32;
+  repeated Nested rpt_ext_nested = 33;
+}
+
+message ExtensionsContainer {
+  extend Extensions {
+    bool opt_ext_bool = 51;
+    string opt_ext_string = 52;
+    Enum opt_ext_enum = 53;
+    Nested opt_ext_nested = 54;
+    PartialRequired opt_ext_partial = 55;
+
+    repeated string rpt_ext_string = 61;
+    repeated Enum rpt_ext_enum = 62;
+    repeated Nested rpt_ext_nested = 63;
+  }
+}
+
+// Following messages are for testing MessageSet.
+
+message MessageSet {
+  option message_set_wire_format = true;
+
+  extensions 4 to max;
+}
+
+message MessageSetExtension {
+  string opt_string = 1;
+
+  extend MessageSet {
+    MessageSetExtension message_set_extension = 10;
+    MessageSetExtension not_message_set_extension = 20;
+    Nested ext_nested = 30;
+  }
+}
+
+message FakeMessageSet {
+  extensions 4 to max;
+}
+
+message FakeMessageSetExtension {
+  string opt_string = 1;
+
+  extend FakeMessageSet {
+    FakeMessageSetExtension message_set_extension = 10;
+  }
+}
+
+extend MessageSet {
+  FakeMessageSetExtension message_set_extension = 50;
+}
+
+// Message contains well-known type fields.
+message KnownTypes {
+  google.protobuf.BoolValue opt_bool = 1;
+  google.protobuf.Int32Value opt_int32 = 2;
+  google.protobuf.Int64Value opt_int64 = 3;
+  google.protobuf.UInt32Value opt_uint32 = 4;
+  google.protobuf.UInt64Value opt_uint64 = 5;
+  google.protobuf.FloatValue opt_float = 6;
+  google.protobuf.DoubleValue opt_double = 7;
+  google.protobuf.StringValue opt_string = 8;
+  google.protobuf.BytesValue opt_bytes = 9;
+
+  google.protobuf.Duration opt_duration = 20;
+  google.protobuf.Timestamp opt_timestamp = 21;
+
+  google.protobuf.Struct opt_struct = 25;
+  google.protobuf.ListValue opt_list = 26;
+  google.protobuf.Value opt_value = 27;
+  google.protobuf.NullValue opt_null = 28;
+
+  google.protobuf.Empty opt_empty = 30;
+  google.protobuf.Any opt_any = 32;
+
+  google.protobuf.FieldMask opt_fieldmask = 40;
+}
\ No newline at end of file
diff --git a/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go
new file mode 100644
index 0000000..152e2c6
--- /dev/null
+++ b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go
@@ -0,0 +1,4462 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test Protobuf definitions with proto2 syntax.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto
+
+package textpbeditions_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	_ "google.golang.org/protobuf/types/gofeaturespb"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	durationpb "google.golang.org/protobuf/types/known/durationpb"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
+	structpb "google.golang.org/protobuf/types/known/structpb"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
+	reflect "reflect"
+)
+
+type Enum int32
+
+const (
+	Enum_ONE Enum = 1
+	Enum_TWO Enum = 2
+	Enum_TEN Enum = 10
+)
+
+// Enum value maps for Enum.
+var (
+	Enum_name = map[int32]string{
+		1:  "ONE",
+		2:  "TWO",
+		10: "TEN",
+	}
+	Enum_value = map[string]int32{
+		"ONE": 1,
+		"TWO": 2,
+		"TEN": 10,
+	}
+)
+
+func (x Enum) Enum() *Enum {
+	p := new(Enum)
+	*p = x
+	return p
+}
+
+func (x Enum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (Enum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[0]
+}
+
+func (x Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type OpenEnum int32
+
+const (
+	OpenEnum_UNKNOWN OpenEnum = 0
+	OpenEnum_EINS    OpenEnum = 1
+	OpenEnum_ZWEI    OpenEnum = 2
+	OpenEnum_ZEHN    OpenEnum = 10
+)
+
+// Enum value maps for OpenEnum.
+var (
+	OpenEnum_name = map[int32]string{
+		0:  "UNKNOWN",
+		1:  "EINS",
+		2:  "ZWEI",
+		10: "ZEHN",
+	}
+	OpenEnum_value = map[string]int32{
+		"UNKNOWN": 0,
+		"EINS":    1,
+		"ZWEI":    2,
+		"ZEHN":    10,
+	}
+)
+
+func (x OpenEnum) Enum() *OpenEnum {
+	p := new(OpenEnum)
+	*p = x
+	return p
+}
+
+func (x OpenEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (OpenEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[1].Descriptor()
+}
+
+func (OpenEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[1]
+}
+
+func (x OpenEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type Enums_NestedEnum int32
+
+const (
+	Enums_UNO  Enums_NestedEnum = 1
+	Enums_DOS  Enums_NestedEnum = 2
+	Enums_DIEZ Enums_NestedEnum = 10
+)
+
+// Enum value maps for Enums_NestedEnum.
+var (
+	Enums_NestedEnum_name = map[int32]string{
+		1:  "UNO",
+		2:  "DOS",
+		10: "DIEZ",
+	}
+	Enums_NestedEnum_value = map[string]int32{
+		"UNO":  1,
+		"DOS":  2,
+		"DIEZ": 10,
+	}
+)
+
+func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
+	p := new(Enums_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x Enums_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[2].Descriptor()
+}
+
+func (Enums_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[2]
+}
+
+func (x Enums_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type Enums_NestedOpenEnum int32
+
+const (
+	Enums_UNKNOWN Enums_NestedOpenEnum = 0
+	Enums_EINS    Enums_NestedOpenEnum = 1
+	Enums_ZWEI    Enums_NestedOpenEnum = 2
+	Enums_ZEHN    Enums_NestedOpenEnum = 10
+)
+
+// Enum value maps for Enums_NestedOpenEnum.
+var (
+	Enums_NestedOpenEnum_name = map[int32]string{
+		0:  "UNKNOWN",
+		1:  "EINS",
+		2:  "ZWEI",
+		10: "ZEHN",
+	}
+	Enums_NestedOpenEnum_value = map[string]int32{
+		"UNKNOWN": 0,
+		"EINS":    1,
+		"ZWEI":    2,
+		"ZEHN":    10,
+	}
+)
+
+func (x Enums_NestedOpenEnum) Enum() *Enums_NestedOpenEnum {
+	p := new(Enums_NestedOpenEnum)
+	*p = x
+	return p
+}
+
+func (x Enums_NestedOpenEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Enums_NestedOpenEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[3].Descriptor()
+}
+
+func (Enums_NestedOpenEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes[3]
+}
+
+func (x Enums_NestedOpenEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Scalars contains scalar fields.
+type Scalars struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptBool     bool                   `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	xxx_hidden_OptInt64    int64                  `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	xxx_hidden_OptUint32   uint32                 `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	xxx_hidden_OptUint64   uint64                 `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	xxx_hidden_OptSint32   int32                  `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
+	xxx_hidden_OptSint64   int64                  `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
+	xxx_hidden_OptFixed32  uint32                 `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	xxx_hidden_OptFixed64  uint64                 `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
+	xxx_hidden_OptSfixed32 int32                  `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
+	xxx_hidden_OptSfixed64 int64                  `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
+	xxx_hidden_OptFloat    float32                `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	xxx_hidden_OptDouble   float64                `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	xxx_hidden_OptBytes    []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Scalars) Reset() {
+	*x = Scalars{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Scalars) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scalars) ProtoMessage() {}
+
+func (x *Scalars) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Scalars) GetOptBool() bool {
+	if x != nil {
+		return x.xxx_hidden_OptBool
+	}
+	return false
+}
+
+func (x *Scalars) GetOptInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptInt32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptInt64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptUint32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptUint64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptSint32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptSint64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptFixed32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptFixed64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptSfixed32
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptSfixed64
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_OptFloat
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_OptDouble
+	}
+	return 0
+}
+
+func (x *Scalars) GetOptBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_OptBytes
+	}
+	return nil
+}
+
+func (x *Scalars) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Scalars) SetOptBool(v bool) {
+	x.xxx_hidden_OptBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 15)
+}
+
+func (x *Scalars) SetOptInt32(v int32) {
+	x.xxx_hidden_OptInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 15)
+}
+
+func (x *Scalars) SetOptInt64(v int64) {
+	x.xxx_hidden_OptInt64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 15)
+}
+
+func (x *Scalars) SetOptUint32(v uint32) {
+	x.xxx_hidden_OptUint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 15)
+}
+
+func (x *Scalars) SetOptUint64(v uint64) {
+	x.xxx_hidden_OptUint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 4, 15)
+}
+
+func (x *Scalars) SetOptSint32(v int32) {
+	x.xxx_hidden_OptSint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 5, 15)
+}
+
+func (x *Scalars) SetOptSint64(v int64) {
+	x.xxx_hidden_OptSint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 6, 15)
+}
+
+func (x *Scalars) SetOptFixed32(v uint32) {
+	x.xxx_hidden_OptFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 7, 15)
+}
+
+func (x *Scalars) SetOptFixed64(v uint64) {
+	x.xxx_hidden_OptFixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 8, 15)
+}
+
+func (x *Scalars) SetOptSfixed32(v int32) {
+	x.xxx_hidden_OptSfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 9, 15)
+}
+
+func (x *Scalars) SetOptSfixed64(v int64) {
+	x.xxx_hidden_OptSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 10, 15)
+}
+
+func (x *Scalars) SetOptFloat(v float32) {
+	x.xxx_hidden_OptFloat = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 11, 15)
+}
+
+func (x *Scalars) SetOptDouble(v float64) {
+	x.xxx_hidden_OptDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 12, 15)
+}
+
+func (x *Scalars) SetOptBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OptBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 13, 15)
+}
+
+func (x *Scalars) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 14, 15)
+}
+
+func (x *Scalars) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Scalars) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *Scalars) HasOptInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *Scalars) HasOptUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *Scalars) HasOptUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 4)
+}
+
+func (x *Scalars) HasOptSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 5)
+}
+
+func (x *Scalars) HasOptSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 6)
+}
+
+func (x *Scalars) HasOptFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 7)
+}
+
+func (x *Scalars) HasOptFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 8)
+}
+
+func (x *Scalars) HasOptSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 9)
+}
+
+func (x *Scalars) HasOptSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 10)
+}
+
+func (x *Scalars) HasOptFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 11)
+}
+
+func (x *Scalars) HasOptDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 12)
+}
+
+func (x *Scalars) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 13)
+}
+
+func (x *Scalars) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 14)
+}
+
+func (x *Scalars) ClearOptBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptBool = false
+}
+
+func (x *Scalars) ClearOptInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_OptInt32 = 0
+}
+
+func (x *Scalars) ClearOptInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_OptInt64 = 0
+}
+
+func (x *Scalars) ClearOptUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_OptUint32 = 0
+}
+
+func (x *Scalars) ClearOptUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 4)
+	x.xxx_hidden_OptUint64 = 0
+}
+
+func (x *Scalars) ClearOptSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 5)
+	x.xxx_hidden_OptSint32 = 0
+}
+
+func (x *Scalars) ClearOptSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 6)
+	x.xxx_hidden_OptSint64 = 0
+}
+
+func (x *Scalars) ClearOptFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 7)
+	x.xxx_hidden_OptFixed32 = 0
+}
+
+func (x *Scalars) ClearOptFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 8)
+	x.xxx_hidden_OptFixed64 = 0
+}
+
+func (x *Scalars) ClearOptSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 9)
+	x.xxx_hidden_OptSfixed32 = 0
+}
+
+func (x *Scalars) ClearOptSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 10)
+	x.xxx_hidden_OptSfixed64 = 0
+}
+
+func (x *Scalars) ClearOptFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 11)
+	x.xxx_hidden_OptFloat = 0
+}
+
+func (x *Scalars) ClearOptDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 12)
+	x.xxx_hidden_OptDouble = 0
+}
+
+func (x *Scalars) ClearOptBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 13)
+	x.xxx_hidden_OptBytes = nil
+}
+
+func (x *Scalars) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 14)
+	x.xxx_hidden_OptString = nil
+}
+
+type Scalars_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptBool     *bool
+	OptInt32    *int32
+	OptInt64    *int64
+	OptUint32   *uint32
+	OptUint64   *uint64
+	OptSint32   *int32
+	OptSint64   *int64
+	OptFixed32  *uint32
+	OptFixed64  *uint64
+	OptSfixed32 *int32
+	OptSfixed64 *int64
+	OptFloat    *float32
+	OptDouble   *float64
+	OptBytes    []byte
+	OptString   *string
+}
+
+func (b0 Scalars_builder) Build() *Scalars {
+	m0 := &Scalars{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 15)
+		x.xxx_hidden_OptBool = *b.OptBool
+	}
+	if b.OptInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 15)
+		x.xxx_hidden_OptInt32 = *b.OptInt32
+	}
+	if b.OptInt64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 15)
+		x.xxx_hidden_OptInt64 = *b.OptInt64
+	}
+	if b.OptUint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 15)
+		x.xxx_hidden_OptUint32 = *b.OptUint32
+	}
+	if b.OptUint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 4, 15)
+		x.xxx_hidden_OptUint64 = *b.OptUint64
+	}
+	if b.OptSint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 5, 15)
+		x.xxx_hidden_OptSint32 = *b.OptSint32
+	}
+	if b.OptSint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 6, 15)
+		x.xxx_hidden_OptSint64 = *b.OptSint64
+	}
+	if b.OptFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 7, 15)
+		x.xxx_hidden_OptFixed32 = *b.OptFixed32
+	}
+	if b.OptFixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 8, 15)
+		x.xxx_hidden_OptFixed64 = *b.OptFixed64
+	}
+	if b.OptSfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 9, 15)
+		x.xxx_hidden_OptSfixed32 = *b.OptSfixed32
+	}
+	if b.OptSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 10, 15)
+		x.xxx_hidden_OptSfixed64 = *b.OptSfixed64
+	}
+	if b.OptFloat != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 11, 15)
+		x.xxx_hidden_OptFloat = *b.OptFloat
+	}
+	if b.OptDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 12, 15)
+		x.xxx_hidden_OptDouble = *b.OptDouble
+	}
+	if b.OptBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 13, 15)
+		x.xxx_hidden_OptBytes = b.OptBytes
+	}
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 14, 15)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	return m0
+}
+
+// ImplicitScalars contains scalar field types with implicit field_presence
+type ImplicitScalars struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_SBool     bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool" json:"s_bool,omitempty"`
+	xxx_hidden_SInt32    int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32" json:"s_int32,omitempty"`
+	xxx_hidden_SInt64    int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64" json:"s_int64,omitempty"`
+	xxx_hidden_SUint32   uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32" json:"s_uint32,omitempty"`
+	xxx_hidden_SUint64   uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64" json:"s_uint64,omitempty"`
+	xxx_hidden_SSint32   int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32" json:"s_sint32,omitempty"`
+	xxx_hidden_SSint64   int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64" json:"s_sint64,omitempty"`
+	xxx_hidden_SFixed32  uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32" json:"s_fixed32,omitempty"`
+	xxx_hidden_SFixed64  uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64" json:"s_fixed64,omitempty"`
+	xxx_hidden_SSfixed32 int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32" json:"s_sfixed32,omitempty"`
+	xxx_hidden_SSfixed64 int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64" json:"s_sfixed64,omitempty"`
+	xxx_hidden_SFloat    float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat" json:"s_float,omitempty"`
+	xxx_hidden_SDouble   float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble" json:"s_double,omitempty"`
+	xxx_hidden_SBytes    []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes" json:"s_bytes,omitempty"`
+	xxx_hidden_SString   string                 `protobuf:"bytes,13,opt,name=s_string,json=sString" json:"s_string,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *ImplicitScalars) Reset() {
+	*x = ImplicitScalars{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImplicitScalars) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImplicitScalars) ProtoMessage() {}
+
+func (x *ImplicitScalars) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ImplicitScalars) GetSBool() bool {
+	if x != nil {
+		return x.xxx_hidden_SBool
+	}
+	return false
+}
+
+func (x *ImplicitScalars) GetSInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SInt32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SInt64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SUint32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SUint64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SSint32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SSint64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SFixed32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SFixed64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SSfixed32
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SSfixed64
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_SFloat
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_SDouble
+	}
+	return 0
+}
+
+func (x *ImplicitScalars) GetSBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_SBytes
+	}
+	return nil
+}
+
+func (x *ImplicitScalars) GetSString() string {
+	if x != nil {
+		return x.xxx_hidden_SString
+	}
+	return ""
+}
+
+func (x *ImplicitScalars) SetSBool(v bool) {
+	x.xxx_hidden_SBool = v
+}
+
+func (x *ImplicitScalars) SetSInt32(v int32) {
+	x.xxx_hidden_SInt32 = v
+}
+
+func (x *ImplicitScalars) SetSInt64(v int64) {
+	x.xxx_hidden_SInt64 = v
+}
+
+func (x *ImplicitScalars) SetSUint32(v uint32) {
+	x.xxx_hidden_SUint32 = v
+}
+
+func (x *ImplicitScalars) SetSUint64(v uint64) {
+	x.xxx_hidden_SUint64 = v
+}
+
+func (x *ImplicitScalars) SetSSint32(v int32) {
+	x.xxx_hidden_SSint32 = v
+}
+
+func (x *ImplicitScalars) SetSSint64(v int64) {
+	x.xxx_hidden_SSint64 = v
+}
+
+func (x *ImplicitScalars) SetSFixed32(v uint32) {
+	x.xxx_hidden_SFixed32 = v
+}
+
+func (x *ImplicitScalars) SetSFixed64(v uint64) {
+	x.xxx_hidden_SFixed64 = v
+}
+
+func (x *ImplicitScalars) SetSSfixed32(v int32) {
+	x.xxx_hidden_SSfixed32 = v
+}
+
+func (x *ImplicitScalars) SetSSfixed64(v int64) {
+	x.xxx_hidden_SSfixed64 = v
+}
+
+func (x *ImplicitScalars) SetSFloat(v float32) {
+	x.xxx_hidden_SFloat = v
+}
+
+func (x *ImplicitScalars) SetSDouble(v float64) {
+	x.xxx_hidden_SDouble = v
+}
+
+func (x *ImplicitScalars) SetSBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_SBytes = v
+}
+
+func (x *ImplicitScalars) SetSString(v string) {
+	x.xxx_hidden_SString = v
+}
+
+type ImplicitScalars_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SBool     bool
+	SInt32    int32
+	SInt64    int64
+	SUint32   uint32
+	SUint64   uint64
+	SSint32   int32
+	SSint64   int64
+	SFixed32  uint32
+	SFixed64  uint64
+	SSfixed32 int32
+	SSfixed64 int64
+	SFloat    float32
+	SDouble   float64
+	SBytes    []byte
+	SString   string
+}
+
+func (b0 ImplicitScalars_builder) Build() *ImplicitScalars {
+	m0 := &ImplicitScalars{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_SBool = b.SBool
+	x.xxx_hidden_SInt32 = b.SInt32
+	x.xxx_hidden_SInt64 = b.SInt64
+	x.xxx_hidden_SUint32 = b.SUint32
+	x.xxx_hidden_SUint64 = b.SUint64
+	x.xxx_hidden_SSint32 = b.SSint32
+	x.xxx_hidden_SSint64 = b.SSint64
+	x.xxx_hidden_SFixed32 = b.SFixed32
+	x.xxx_hidden_SFixed64 = b.SFixed64
+	x.xxx_hidden_SSfixed32 = b.SSfixed32
+	x.xxx_hidden_SSfixed64 = b.SSfixed64
+	x.xxx_hidden_SFloat = b.SFloat
+	x.xxx_hidden_SDouble = b.SDouble
+	x.xxx_hidden_SBytes = b.SBytes
+	x.xxx_hidden_SString = b.SString
+	return m0
+}
+
+type UTF8Validated struct {
+	state                      protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_ValidatedString string                 `protobuf:"bytes,1,opt,name=validated_string,json=validatedString" json:"validated_string,omitempty"`
+	unknownFields              protoimpl.UnknownFields
+	sizeCache                  protoimpl.SizeCache
+}
+
+func (x *UTF8Validated) Reset() {
+	*x = UTF8Validated{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UTF8Validated) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UTF8Validated) ProtoMessage() {}
+
+func (x *UTF8Validated) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *UTF8Validated) GetValidatedString() string {
+	if x != nil {
+		return x.xxx_hidden_ValidatedString
+	}
+	return ""
+}
+
+func (x *UTF8Validated) SetValidatedString(v string) {
+	x.xxx_hidden_ValidatedString = v
+}
+
+type UTF8Validated_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ValidatedString string
+}
+
+func (b0 UTF8Validated_builder) Build() *UTF8Validated {
+	m0 := &UTF8Validated{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_ValidatedString = b.ValidatedString
+	return m0
+}
+
+type NestsUTF8Validated struct {
+	state                       protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_ValidatedMessage *UTF8Validated         `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage" json:"validated_message,omitempty"`
+	unknownFields               protoimpl.UnknownFields
+	sizeCache                   protoimpl.SizeCache
+}
+
+func (x *NestsUTF8Validated) Reset() {
+	*x = NestsUTF8Validated{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NestsUTF8Validated) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NestsUTF8Validated) ProtoMessage() {}
+
+func (x *NestsUTF8Validated) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *NestsUTF8Validated) GetValidatedMessage() *UTF8Validated {
+	if x != nil {
+		return x.xxx_hidden_ValidatedMessage
+	}
+	return nil
+}
+
+func (x *NestsUTF8Validated) SetValidatedMessage(v *UTF8Validated) {
+	x.xxx_hidden_ValidatedMessage = v
+}
+
+func (x *NestsUTF8Validated) HasValidatedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ValidatedMessage != nil
+}
+
+func (x *NestsUTF8Validated) ClearValidatedMessage() {
+	x.xxx_hidden_ValidatedMessage = nil
+}
+
+type NestsUTF8Validated_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ValidatedMessage *UTF8Validated
+}
+
+func (b0 NestsUTF8Validated_builder) Build() *NestsUTF8Validated {
+	m0 := &NestsUTF8Validated{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_ValidatedMessage = b.ValidatedMessage
+	return m0
+}
+
+// Message contains enum fields.
+type Enums struct {
+	state                         protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptEnum            Enum                   `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=opaque.pbeditions.Enum" json:"opt_enum,omitempty"`
+	xxx_hidden_RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=opaque.pbeditions.Enum" json:"rpt_enum,omitempty"`
+	xxx_hidden_ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=opaque.pbeditions.OpenEnum" json:"implicit_enum,omitempty"`
+	xxx_hidden_OptNestedEnum      Enums_NestedEnum       `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=opaque.pbeditions.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	xxx_hidden_RptNestedEnum      []Enums_NestedEnum     `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=opaque.pbeditions.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
+	xxx_hidden_ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=opaque.pbeditions.Enums_NestedOpenEnum" json:"implicit_nested_enum,omitempty"`
+	XXX_raceDetectHookData        protoimpl.RaceDetectHookData
+	XXX_presence                  [1]uint32
+	unknownFields                 protoimpl.UnknownFields
+	sizeCache                     protoimpl.SizeCache
+}
+
+func (x *Enums) Reset() {
+	*x = Enums{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Enums) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Enums) ProtoMessage() {}
+
+func (x *Enums) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Enums) GetOptEnum() Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 0) {
+			return x.xxx_hidden_OptEnum
+		}
+	}
+	return Enum_ONE
+}
+
+func (x *Enums) GetRptEnum() []Enum {
+	if x != nil {
+		return x.xxx_hidden_RptEnum
+	}
+	return nil
+}
+
+func (x *Enums) GetImplicitEnum() OpenEnum {
+	if x != nil {
+		return x.xxx_hidden_ImplicitEnum
+	}
+	return OpenEnum_UNKNOWN
+}
+
+func (x *Enums) GetOptNestedEnum() Enums_NestedEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 3) {
+			return x.xxx_hidden_OptNestedEnum
+		}
+	}
+	return Enums_UNO
+}
+
+func (x *Enums) GetRptNestedEnum() []Enums_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_RptNestedEnum
+	}
+	return nil
+}
+
+func (x *Enums) GetImplicitNestedEnum() Enums_NestedOpenEnum {
+	if x != nil {
+		return x.xxx_hidden_ImplicitNestedEnum
+	}
+	return Enums_UNKNOWN
+}
+
+func (x *Enums) SetOptEnum(v Enum) {
+	x.xxx_hidden_OptEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 6)
+}
+
+func (x *Enums) SetRptEnum(v []Enum) {
+	x.xxx_hidden_RptEnum = v
+}
+
+func (x *Enums) SetImplicitEnum(v OpenEnum) {
+	x.xxx_hidden_ImplicitEnum = v
+}
+
+func (x *Enums) SetOptNestedEnum(v Enums_NestedEnum) {
+	x.xxx_hidden_OptNestedEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 6)
+}
+
+func (x *Enums) SetRptNestedEnum(v []Enums_NestedEnum) {
+	x.xxx_hidden_RptNestedEnum = v
+}
+
+func (x *Enums) SetImplicitNestedEnum(v Enums_NestedOpenEnum) {
+	x.xxx_hidden_ImplicitNestedEnum = v
+}
+
+func (x *Enums) HasOptEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Enums) HasOptNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *Enums) ClearOptEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptEnum = Enum_ONE
+}
+
+func (x *Enums) ClearOptNestedEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_OptNestedEnum = Enums_UNO
+}
+
+type Enums_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptEnum            *Enum
+	RptEnum            []Enum
+	ImplicitEnum       OpenEnum
+	OptNestedEnum      *Enums_NestedEnum
+	RptNestedEnum      []Enums_NestedEnum
+	ImplicitNestedEnum Enums_NestedOpenEnum
+}
+
+func (b0 Enums_builder) Build() *Enums {
+	m0 := &Enums{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 6)
+		x.xxx_hidden_OptEnum = *b.OptEnum
+	}
+	x.xxx_hidden_RptEnum = b.RptEnum
+	x.xxx_hidden_ImplicitEnum = b.ImplicitEnum
+	if b.OptNestedEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 6)
+		x.xxx_hidden_OptNestedEnum = *b.OptNestedEnum
+	}
+	x.xxx_hidden_RptNestedEnum = b.RptNestedEnum
+	x.xxx_hidden_ImplicitNestedEnum = b.ImplicitNestedEnum
+	return m0
+}
+
+// Message contains repeated fields.
+type Repeats struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_RptBool   []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
+	xxx_hidden_RptInt32  []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
+	xxx_hidden_RptInt64  []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
+	xxx_hidden_RptUint32 []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
+	xxx_hidden_RptUint64 []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
+	xxx_hidden_RptFloat  []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
+	xxx_hidden_RptDouble []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	xxx_hidden_RptBytes  [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *Repeats) Reset() {
+	*x = Repeats{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Repeats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Repeats) ProtoMessage() {}
+
+func (x *Repeats) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Repeats) GetRptBool() []bool {
+	if x != nil {
+		return x.xxx_hidden_RptBool
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptInt32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RptInt32
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptInt64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RptInt64
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptUint32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RptUint32
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptUint64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RptUint64
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptFloat() []float32 {
+	if x != nil {
+		return x.xxx_hidden_RptFloat
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptDouble() []float64 {
+	if x != nil {
+		return x.xxx_hidden_RptDouble
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptString() []string {
+	if x != nil {
+		return x.xxx_hidden_RptString
+	}
+	return nil
+}
+
+func (x *Repeats) GetRptBytes() [][]byte {
+	if x != nil {
+		return x.xxx_hidden_RptBytes
+	}
+	return nil
+}
+
+func (x *Repeats) SetRptBool(v []bool) {
+	x.xxx_hidden_RptBool = v
+}
+
+func (x *Repeats) SetRptInt32(v []int32) {
+	x.xxx_hidden_RptInt32 = v
+}
+
+func (x *Repeats) SetRptInt64(v []int64) {
+	x.xxx_hidden_RptInt64 = v
+}
+
+func (x *Repeats) SetRptUint32(v []uint32) {
+	x.xxx_hidden_RptUint32 = v
+}
+
+func (x *Repeats) SetRptUint64(v []uint64) {
+	x.xxx_hidden_RptUint64 = v
+}
+
+func (x *Repeats) SetRptFloat(v []float32) {
+	x.xxx_hidden_RptFloat = v
+}
+
+func (x *Repeats) SetRptDouble(v []float64) {
+	x.xxx_hidden_RptDouble = v
+}
+
+func (x *Repeats) SetRptString(v []string) {
+	x.xxx_hidden_RptString = v
+}
+
+func (x *Repeats) SetRptBytes(v [][]byte) {
+	x.xxx_hidden_RptBytes = v
+}
+
+type Repeats_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RptBool   []bool
+	RptInt32  []int32
+	RptInt64  []int64
+	RptUint32 []uint32
+	RptUint64 []uint64
+	RptFloat  []float32
+	RptDouble []float64
+	RptString []string
+	RptBytes  [][]byte
+}
+
+func (b0 Repeats_builder) Build() *Repeats {
+	m0 := &Repeats{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_RptBool = b.RptBool
+	x.xxx_hidden_RptInt32 = b.RptInt32
+	x.xxx_hidden_RptInt64 = b.RptInt64
+	x.xxx_hidden_RptUint32 = b.RptUint32
+	x.xxx_hidden_RptUint64 = b.RptUint64
+	x.xxx_hidden_RptFloat = b.RptFloat
+	x.xxx_hidden_RptDouble = b.RptDouble
+	x.xxx_hidden_RptString = b.RptString
+	x.xxx_hidden_RptBytes = b.RptBytes
+	return m0
+}
+
+// Message contains map fields.
+type Maps struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_Int32ToStr  map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_StrToNested map[string]*Nested     `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Maps) Reset() {
+	*x = Maps{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Maps) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Maps) ProtoMessage() {}
+
+func (x *Maps) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Maps) GetInt32ToStr() map[int32]string {
+	if x != nil {
+		return x.xxx_hidden_Int32ToStr
+	}
+	return nil
+}
+
+func (x *Maps) GetStrToNested() map[string]*Nested {
+	if x != nil {
+		return x.xxx_hidden_StrToNested
+	}
+	return nil
+}
+
+func (x *Maps) SetInt32ToStr(v map[int32]string) {
+	x.xxx_hidden_Int32ToStr = v
+}
+
+func (x *Maps) SetStrToNested(v map[string]*Nested) {
+	x.xxx_hidden_StrToNested = v
+}
+
+type Maps_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	Int32ToStr  map[int32]string
+	StrToNested map[string]*Nested
+}
+
+func (b0 Maps_builder) Build() *Maps {
+	m0 := &Maps{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_Int32ToStr = b.Int32ToStr
+	x.xxx_hidden_StrToNested = b.StrToNested
+	return m0
+}
+
+// Message type used as submessage.
+type Nested struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	xxx_hidden_OptNested   *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Nested) Reset() {
+	*x = Nested{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nested) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nested) ProtoMessage() {}
+
+func (x *Nested) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nested) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Nested) GetOptNested() *Nested {
+	if x != nil {
+		return x.xxx_hidden_OptNested
+	}
+	return nil
+}
+
+func (x *Nested) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *Nested) SetOptNested(v *Nested) {
+	x.xxx_hidden_OptNested = v
+}
+
+func (x *Nested) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Nested) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptNested != nil
+}
+
+func (x *Nested) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptString = nil
+}
+
+func (x *Nested) ClearOptNested() {
+	x.xxx_hidden_OptNested = nil
+}
+
+type Nested_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+	OptNested *Nested
+}
+
+func (b0 Nested_builder) Build() *Nested {
+	m0 := &Nested{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	x.xxx_hidden_OptNested = b.OptNested
+	return m0
+}
+
+// Message contains message and group fields.
+type Nests struct {
+	state                     protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptNested      *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	xxx_hidden_Optgroup       *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
+	xxx_hidden_DelimitedField *Nests_OptGroup        `protobuf:"group,3,opt,name=OptGroup,json=delimitedField" json:"delimited_field,omitempty"`
+	xxx_hidden_RptNested      *[]*Nested             `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	xxx_hidden_Rptgroup       *[]*Nests_RptGroup     `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
+}
+
+func (x *Nests) Reset() {
+	*x = Nests{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests) ProtoMessage() {}
+
+func (x *Nests) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests) GetOptNested() *Nested {
+	if x != nil {
+		return x.xxx_hidden_OptNested
+	}
+	return nil
+}
+
+func (x *Nests) GetOptgroup() *Nests_OptGroup {
+	if x != nil {
+		return x.xxx_hidden_Optgroup
+	}
+	return nil
+}
+
+func (x *Nests) GetDelimitedField() *Nests_OptGroup {
+	if x != nil {
+		return x.xxx_hidden_DelimitedField
+	}
+	return nil
+}
+
+func (x *Nests) GetRptNested() []*Nested {
+	if x != nil {
+		if x.xxx_hidden_RptNested != nil {
+			return *x.xxx_hidden_RptNested
+		}
+	}
+	return nil
+}
+
+func (x *Nests) GetRptgroup() []*Nests_RptGroup {
+	if x != nil {
+		if x.xxx_hidden_Rptgroup != nil {
+			return *x.xxx_hidden_Rptgroup
+		}
+	}
+	return nil
+}
+
+func (x *Nests) SetOptNested(v *Nested) {
+	x.xxx_hidden_OptNested = v
+}
+
+func (x *Nests) SetOptgroup(v *Nests_OptGroup) {
+	x.xxx_hidden_Optgroup = v
+}
+
+func (x *Nests) SetDelimitedField(v *Nests_OptGroup) {
+	x.xxx_hidden_DelimitedField = v
+}
+
+func (x *Nests) SetRptNested(v []*Nested) {
+	x.xxx_hidden_RptNested = &v
+}
+
+func (x *Nests) SetRptgroup(v []*Nests_RptGroup) {
+	x.xxx_hidden_Rptgroup = &v
+}
+
+func (x *Nests) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptNested != nil
+}
+
+func (x *Nests) HasOptgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Optgroup != nil
+}
+
+func (x *Nests) HasDelimitedField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_DelimitedField != nil
+}
+
+func (x *Nests) ClearOptNested() {
+	x.xxx_hidden_OptNested = nil
+}
+
+func (x *Nests) ClearOptgroup() {
+	x.xxx_hidden_Optgroup = nil
+}
+
+func (x *Nests) ClearDelimitedField() {
+	x.xxx_hidden_DelimitedField = nil
+}
+
+type Nests_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptNested      *Nested
+	Optgroup       *Nests_OptGroup
+	DelimitedField *Nests_OptGroup
+	RptNested      []*Nested
+	Rptgroup       []*Nests_RptGroup
+}
+
+func (b0 Nests_builder) Build() *Nests {
+	m0 := &Nests{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_OptNested = b.OptNested
+	x.xxx_hidden_Optgroup = b.Optgroup
+	x.xxx_hidden_DelimitedField = b.DelimitedField
+	x.xxx_hidden_RptNested = &b.RptNested
+	x.xxx_hidden_Rptgroup = &b.Rptgroup
+	return m0
+}
+
+// Message contains required fields.
+type Requireds struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_ReqBool     bool                   `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
+	xxx_hidden_ReqSfixed64 int64                  `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
+	xxx_hidden_ReqDouble   float64                `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
+	xxx_hidden_ReqString   *string                `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	xxx_hidden_ReqEnum     Enum                   `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=opaque.pbeditions.Enum" json:"req_enum,omitempty"`
+	xxx_hidden_ReqNested   *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Requireds) Reset() {
+	*x = Requireds{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Requireds) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Requireds) ProtoMessage() {}
+
+func (x *Requireds) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Requireds) GetReqBool() bool {
+	if x != nil {
+		return x.xxx_hidden_ReqBool
+	}
+	return false
+}
+
+func (x *Requireds) GetReqSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_ReqSfixed64
+	}
+	return 0
+}
+
+func (x *Requireds) GetReqDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_ReqDouble
+	}
+	return 0
+}
+
+func (x *Requireds) GetReqString() string {
+	if x != nil {
+		if x.xxx_hidden_ReqString != nil {
+			return *x.xxx_hidden_ReqString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Requireds) GetReqEnum() Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 4) {
+			return x.xxx_hidden_ReqEnum
+		}
+	}
+	return Enum_ONE
+}
+
+func (x *Requireds) GetReqNested() *Nested {
+	if x != nil {
+		return x.xxx_hidden_ReqNested
+	}
+	return nil
+}
+
+func (x *Requireds) SetReqBool(v bool) {
+	x.xxx_hidden_ReqBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 6)
+}
+
+func (x *Requireds) SetReqSfixed64(v int64) {
+	x.xxx_hidden_ReqSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 6)
+}
+
+func (x *Requireds) SetReqDouble(v float64) {
+	x.xxx_hidden_ReqDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 6)
+}
+
+func (x *Requireds) SetReqString(v string) {
+	x.xxx_hidden_ReqString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 6)
+}
+
+func (x *Requireds) SetReqEnum(v Enum) {
+	x.xxx_hidden_ReqEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 4, 6)
+}
+
+func (x *Requireds) SetReqNested(v *Nested) {
+	x.xxx_hidden_ReqNested = v
+}
+
+func (x *Requireds) HasReqBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Requireds) HasReqSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *Requireds) HasReqDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *Requireds) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 3)
+}
+
+func (x *Requireds) HasReqEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 4)
+}
+
+func (x *Requireds) HasReqNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_ReqNested != nil
+}
+
+func (x *Requireds) ClearReqBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_ReqBool = false
+}
+
+func (x *Requireds) ClearReqSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_ReqSfixed64 = 0
+}
+
+func (x *Requireds) ClearReqDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_ReqDouble = 0
+}
+
+func (x *Requireds) ClearReqString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3)
+	x.xxx_hidden_ReqString = nil
+}
+
+func (x *Requireds) ClearReqEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 4)
+	x.xxx_hidden_ReqEnum = Enum_ONE
+}
+
+func (x *Requireds) ClearReqNested() {
+	x.xxx_hidden_ReqNested = nil
+}
+
+type Requireds_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqBool     *bool
+	ReqSfixed64 *int64
+	ReqDouble   *float64
+	ReqString   *string
+	ReqEnum     *Enum
+	ReqNested   *Nested
+}
+
+func (b0 Requireds_builder) Build() *Requireds {
+	m0 := &Requireds{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.ReqBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 6)
+		x.xxx_hidden_ReqBool = *b.ReqBool
+	}
+	if b.ReqSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 6)
+		x.xxx_hidden_ReqSfixed64 = *b.ReqSfixed64
+	}
+	if b.ReqDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 6)
+		x.xxx_hidden_ReqDouble = *b.ReqDouble
+	}
+	if b.ReqString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 6)
+		x.xxx_hidden_ReqString = b.ReqString
+	}
+	if b.ReqEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 4, 6)
+		x.xxx_hidden_ReqEnum = *b.ReqEnum
+	}
+	x.xxx_hidden_ReqNested = b.ReqNested
+	return m0
+}
+
+// Message contains both required and optional fields.
+type PartialRequired struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *PartialRequired) Reset() {
+	*x = PartialRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PartialRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartialRequired) ProtoMessage() {}
+
+func (x *PartialRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *PartialRequired) GetReqString() string {
+	if x != nil {
+		if x.xxx_hidden_ReqString != nil {
+			return *x.xxx_hidden_ReqString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *PartialRequired) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *PartialRequired) SetReqString(v string) {
+	x.xxx_hidden_ReqString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
+}
+
+func (x *PartialRequired) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 2)
+}
+
+func (x *PartialRequired) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *PartialRequired) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *PartialRequired) ClearReqString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_ReqString = nil
+}
+
+func (x *PartialRequired) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_OptString = nil
+}
+
+type PartialRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqString *string
+	OptString *string
+}
+
+func (b0 PartialRequired_builder) Build() *PartialRequired {
+	m0 := &PartialRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.ReqString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
+		x.xxx_hidden_ReqString = b.ReqString
+	}
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 2)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	return m0
+}
+
+type NestedWithRequired struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *NestedWithRequired) Reset() {
+	*x = NestedWithRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NestedWithRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NestedWithRequired) ProtoMessage() {}
+
+func (x *NestedWithRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *NestedWithRequired) GetReqString() string {
+	if x != nil {
+		if x.xxx_hidden_ReqString != nil {
+			return *x.xxx_hidden_ReqString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *NestedWithRequired) SetReqString(v string) {
+	x.xxx_hidden_ReqString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *NestedWithRequired) HasReqString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *NestedWithRequired) ClearReqString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_ReqString = nil
+}
+
+type NestedWithRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	ReqString *string
+}
+
+func (b0 NestedWithRequired_builder) Build() *NestedWithRequired {
+	m0 := &NestedWithRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.ReqString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_ReqString = b.ReqString
+	}
+	return m0
+}
+
+type IndirectRequired struct {
+	state                  protoimpl.MessageState         `protogen:"opaque.v1"`
+	xxx_hidden_OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	xxx_hidden_RptNested   *[]*NestedWithRequired         `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	xxx_hidden_StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_Union       isIndirectRequired_Union       `protobuf_oneof:"union"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *IndirectRequired) Reset() {
+	*x = IndirectRequired{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IndirectRequired) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IndirectRequired) ProtoMessage() {}
+
+func (x *IndirectRequired) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *IndirectRequired) GetOptNested() *NestedWithRequired {
+	if x != nil {
+		return x.xxx_hidden_OptNested
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetRptNested() []*NestedWithRequired {
+	if x != nil {
+		if x.xxx_hidden_RptNested != nil {
+			return *x.xxx_hidden_RptNested
+		}
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
+	if x != nil {
+		return x.xxx_hidden_StrToNested
+	}
+	return nil
+}
+
+func (x *IndirectRequired) GetOneofNested() *NestedWithRequired {
+	if x != nil {
+		if x, ok := x.xxx_hidden_Union.(*indirectRequired_OneofNested); ok {
+			return x.OneofNested
+		}
+	}
+	return nil
+}
+
+func (x *IndirectRequired) SetOptNested(v *NestedWithRequired) {
+	x.xxx_hidden_OptNested = v
+}
+
+func (x *IndirectRequired) SetRptNested(v []*NestedWithRequired) {
+	x.xxx_hidden_RptNested = &v
+}
+
+func (x *IndirectRequired) SetStrToNested(v map[string]*NestedWithRequired) {
+	x.xxx_hidden_StrToNested = v
+}
+
+func (x *IndirectRequired) SetOneofNested(v *NestedWithRequired) {
+	if v == nil {
+		x.xxx_hidden_Union = nil
+		return
+	}
+	x.xxx_hidden_Union = &indirectRequired_OneofNested{v}
+}
+
+func (x *IndirectRequired) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptNested != nil
+}
+
+func (x *IndirectRequired) HasUnion() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Union != nil
+}
+
+func (x *IndirectRequired) HasOneofNested() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_Union.(*indirectRequired_OneofNested)
+	return ok
+}
+
+func (x *IndirectRequired) ClearOptNested() {
+	x.xxx_hidden_OptNested = nil
+}
+
+func (x *IndirectRequired) ClearUnion() {
+	x.xxx_hidden_Union = nil
+}
+
+func (x *IndirectRequired) ClearOneofNested() {
+	if _, ok := x.xxx_hidden_Union.(*indirectRequired_OneofNested); ok {
+		x.xxx_hidden_Union = nil
+	}
+}
+
+const IndirectRequired_Union_not_set_case case_IndirectRequired_Union = 0
+const IndirectRequired_OneofNested_case case_IndirectRequired_Union = 4
+
+func (x *IndirectRequired) WhichUnion() case_IndirectRequired_Union {
+	if x == nil {
+		return IndirectRequired_Union_not_set_case
+	}
+	switch x.xxx_hidden_Union.(type) {
+	case *indirectRequired_OneofNested:
+		return IndirectRequired_OneofNested_case
+	default:
+		return IndirectRequired_Union_not_set_case
+	}
+}
+
+type IndirectRequired_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptNested   *NestedWithRequired
+	RptNested   []*NestedWithRequired
+	StrToNested map[string]*NestedWithRequired
+	// Fields of oneof xxx_hidden_Union:
+	OneofNested *NestedWithRequired
+	// -- end of xxx_hidden_Union
+}
+
+func (b0 IndirectRequired_builder) Build() *IndirectRequired {
+	m0 := &IndirectRequired{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_OptNested = b.OptNested
+	x.xxx_hidden_RptNested = &b.RptNested
+	x.xxx_hidden_StrToNested = b.StrToNested
+	if b.OneofNested != nil {
+		x.xxx_hidden_Union = &indirectRequired_OneofNested{b.OneofNested}
+	}
+	return m0
+}
+
+type case_IndirectRequired_Union protoreflect.FieldNumber
+
+func (x case_IndirectRequired_Union) String() string {
+	md := file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[12].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isIndirectRequired_Union interface {
+	isIndirectRequired_Union()
+}
+
+type indirectRequired_OneofNested struct {
+	OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
+}
+
+func (*indirectRequired_OneofNested) isIndirectRequired_Union() {}
+
+type Extensions struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	xxx_hidden_OptBool     bool                   `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	extensionFields        protoimpl.ExtensionFields
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Extensions) Reset() {
+	*x = Extensions{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Extensions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Extensions) ProtoMessage() {}
+
+func (x *Extensions) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Extensions) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Extensions) GetOptBool() bool {
+	if x != nil {
+		return x.xxx_hidden_OptBool
+	}
+	return false
+}
+
+func (x *Extensions) GetOptInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptInt32
+	}
+	return 0
+}
+
+func (x *Extensions) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *Extensions) SetOptBool(v bool) {
+	x.xxx_hidden_OptBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *Extensions) SetOptInt32(v int32) {
+	x.xxx_hidden_OptInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *Extensions) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Extensions) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *Extensions) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *Extensions) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptString = nil
+}
+
+func (x *Extensions) ClearOptBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_OptBool = false
+}
+
+func (x *Extensions) ClearOptInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_OptInt32 = 0
+}
+
+type Extensions_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+	OptBool   *bool
+	OptInt32  *int32
+}
+
+func (b0 Extensions_builder) Build() *Extensions {
+	m0 := &Extensions{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	if b.OptBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_OptBool = *b.OptBool
+	}
+	if b.OptInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_OptInt32 = *b.OptInt32
+	}
+	return m0
+}
+
+type ExtensionsContainer struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ExtensionsContainer) Reset() {
+	*x = ExtensionsContainer{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ExtensionsContainer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtensionsContainer) ProtoMessage() {}
+
+func (x *ExtensionsContainer) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ExtensionsContainer_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ExtensionsContainer_builder) Build() *ExtensionsContainer {
+	m0 := &ExtensionsContainer{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSet struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *MessageSet) Reset() {
+	*x = MessageSet{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSet) ProtoMessage() {}
+
+func (x *MessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type MessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 MessageSet_builder) Build() *MessageSet {
+	m0 := &MessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type MessageSetExtension struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *MessageSetExtension) Reset() {
+	*x = MessageSetExtension{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageSetExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageSetExtension) ProtoMessage() {}
+
+func (x *MessageSetExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *MessageSetExtension) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *MessageSetExtension) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *MessageSetExtension) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *MessageSetExtension) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptString = nil
+}
+
+type MessageSetExtension_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+}
+
+func (b0 MessageSetExtension_builder) Build() *MessageSetExtension {
+	m0 := &MessageSetExtension{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	return m0
+}
+
+type FakeMessageSet struct {
+	state           protoimpl.MessageState `protogen:"opaque.v1"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *FakeMessageSet) Reset() {
+	*x = FakeMessageSet{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FakeMessageSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FakeMessageSet) ProtoMessage() {}
+
+func (x *FakeMessageSet) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type FakeMessageSet_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 FakeMessageSet_builder) Build() *FakeMessageSet {
+	m0 := &FakeMessageSet{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+type FakeMessageSetExtension struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *FakeMessageSetExtension) Reset() {
+	*x = FakeMessageSetExtension{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FakeMessageSetExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FakeMessageSetExtension) ProtoMessage() {}
+
+func (x *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *FakeMessageSetExtension) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *FakeMessageSetExtension) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *FakeMessageSetExtension) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *FakeMessageSetExtension) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptString = nil
+}
+
+type FakeMessageSetExtension_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString *string
+}
+
+func (b0 FakeMessageSetExtension_builder) Build() *FakeMessageSetExtension {
+	m0 := &FakeMessageSetExtension{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	return m0
+}
+
+// Message contains well-known type fields.
+type KnownTypes struct {
+	state                   protoimpl.MessageState  `protogen:"opaque.v1"`
+	xxx_hidden_OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	xxx_hidden_OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	xxx_hidden_OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	xxx_hidden_OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	xxx_hidden_OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	xxx_hidden_OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	xxx_hidden_OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	xxx_hidden_OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	xxx_hidden_OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	xxx_hidden_OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
+	xxx_hidden_OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
+	xxx_hidden_OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
+	xxx_hidden_OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
+	xxx_hidden_OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
+	xxx_hidden_OptNull      structpb.NullValue      `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
+	xxx_hidden_OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
+	xxx_hidden_OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
+	xxx_hidden_OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
+	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
+	XXX_presence            [1]uint32
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
+}
+
+func (x *KnownTypes) Reset() {
+	*x = KnownTypes{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KnownTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KnownTypes) ProtoMessage() {}
+
+func (x *KnownTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *KnownTypes) GetOptBool() *wrapperspb.BoolValue {
+	if x != nil {
+		return x.xxx_hidden_OptBool
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptInt32() *wrapperspb.Int32Value {
+	if x != nil {
+		return x.xxx_hidden_OptInt32
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptInt64() *wrapperspb.Int64Value {
+	if x != nil {
+		return x.xxx_hidden_OptInt64
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptUint32() *wrapperspb.UInt32Value {
+	if x != nil {
+		return x.xxx_hidden_OptUint32
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptUint64() *wrapperspb.UInt64Value {
+	if x != nil {
+		return x.xxx_hidden_OptUint64
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptFloat() *wrapperspb.FloatValue {
+	if x != nil {
+		return x.xxx_hidden_OptFloat
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptDouble() *wrapperspb.DoubleValue {
+	if x != nil {
+		return x.xxx_hidden_OptDouble
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptString() *wrapperspb.StringValue {
+	if x != nil {
+		return x.xxx_hidden_OptString
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptBytes() *wrapperspb.BytesValue {
+	if x != nil {
+		return x.xxx_hidden_OptBytes
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptDuration() *durationpb.Duration {
+	if x != nil {
+		return x.xxx_hidden_OptDuration
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptTimestamp() *timestamppb.Timestamp {
+	if x != nil {
+		return x.xxx_hidden_OptTimestamp
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptStruct() *structpb.Struct {
+	if x != nil {
+		return x.xxx_hidden_OptStruct
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptList() *structpb.ListValue {
+	if x != nil {
+		return x.xxx_hidden_OptList
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptValue() *structpb.Value {
+	if x != nil {
+		return x.xxx_hidden_OptValue
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptNull() structpb.NullValue {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 14) {
+			return x.xxx_hidden_OptNull
+		}
+	}
+	return structpb.NullValue(0)
+}
+
+func (x *KnownTypes) GetOptEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.xxx_hidden_OptEmpty
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptAny() *anypb.Any {
+	if x != nil {
+		return x.xxx_hidden_OptAny
+	}
+	return nil
+}
+
+func (x *KnownTypes) GetOptFieldmask() *fieldmaskpb.FieldMask {
+	if x != nil {
+		return x.xxx_hidden_OptFieldmask
+	}
+	return nil
+}
+
+func (x *KnownTypes) SetOptBool(v *wrapperspb.BoolValue) {
+	x.xxx_hidden_OptBool = v
+}
+
+func (x *KnownTypes) SetOptInt32(v *wrapperspb.Int32Value) {
+	x.xxx_hidden_OptInt32 = v
+}
+
+func (x *KnownTypes) SetOptInt64(v *wrapperspb.Int64Value) {
+	x.xxx_hidden_OptInt64 = v
+}
+
+func (x *KnownTypes) SetOptUint32(v *wrapperspb.UInt32Value) {
+	x.xxx_hidden_OptUint32 = v
+}
+
+func (x *KnownTypes) SetOptUint64(v *wrapperspb.UInt64Value) {
+	x.xxx_hidden_OptUint64 = v
+}
+
+func (x *KnownTypes) SetOptFloat(v *wrapperspb.FloatValue) {
+	x.xxx_hidden_OptFloat = v
+}
+
+func (x *KnownTypes) SetOptDouble(v *wrapperspb.DoubleValue) {
+	x.xxx_hidden_OptDouble = v
+}
+
+func (x *KnownTypes) SetOptString(v *wrapperspb.StringValue) {
+	x.xxx_hidden_OptString = v
+}
+
+func (x *KnownTypes) SetOptBytes(v *wrapperspb.BytesValue) {
+	x.xxx_hidden_OptBytes = v
+}
+
+func (x *KnownTypes) SetOptDuration(v *durationpb.Duration) {
+	x.xxx_hidden_OptDuration = v
+}
+
+func (x *KnownTypes) SetOptTimestamp(v *timestamppb.Timestamp) {
+	x.xxx_hidden_OptTimestamp = v
+}
+
+func (x *KnownTypes) SetOptStruct(v *structpb.Struct) {
+	x.xxx_hidden_OptStruct = v
+}
+
+func (x *KnownTypes) SetOptList(v *structpb.ListValue) {
+	x.xxx_hidden_OptList = v
+}
+
+func (x *KnownTypes) SetOptValue(v *structpb.Value) {
+	x.xxx_hidden_OptValue = v
+}
+
+func (x *KnownTypes) SetOptNull(v structpb.NullValue) {
+	x.xxx_hidden_OptNull = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 14, 18)
+}
+
+func (x *KnownTypes) SetOptEmpty(v *emptypb.Empty) {
+	x.xxx_hidden_OptEmpty = v
+}
+
+func (x *KnownTypes) SetOptAny(v *anypb.Any) {
+	x.xxx_hidden_OptAny = v
+}
+
+func (x *KnownTypes) SetOptFieldmask(v *fieldmaskpb.FieldMask) {
+	x.xxx_hidden_OptFieldmask = v
+}
+
+func (x *KnownTypes) HasOptBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptBool != nil
+}
+
+func (x *KnownTypes) HasOptInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptInt32 != nil
+}
+
+func (x *KnownTypes) HasOptInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptInt64 != nil
+}
+
+func (x *KnownTypes) HasOptUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptUint32 != nil
+}
+
+func (x *KnownTypes) HasOptUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptUint64 != nil
+}
+
+func (x *KnownTypes) HasOptFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptFloat != nil
+}
+
+func (x *KnownTypes) HasOptDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptDouble != nil
+}
+
+func (x *KnownTypes) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptString != nil
+}
+
+func (x *KnownTypes) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptBytes != nil
+}
+
+func (x *KnownTypes) HasOptDuration() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptDuration != nil
+}
+
+func (x *KnownTypes) HasOptTimestamp() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptTimestamp != nil
+}
+
+func (x *KnownTypes) HasOptStruct() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptStruct != nil
+}
+
+func (x *KnownTypes) HasOptList() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptList != nil
+}
+
+func (x *KnownTypes) HasOptValue() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptValue != nil
+}
+
+func (x *KnownTypes) HasOptNull() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 14)
+}
+
+func (x *KnownTypes) HasOptEmpty() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptEmpty != nil
+}
+
+func (x *KnownTypes) HasOptAny() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptAny != nil
+}
+
+func (x *KnownTypes) HasOptFieldmask() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptFieldmask != nil
+}
+
+func (x *KnownTypes) ClearOptBool() {
+	x.xxx_hidden_OptBool = nil
+}
+
+func (x *KnownTypes) ClearOptInt32() {
+	x.xxx_hidden_OptInt32 = nil
+}
+
+func (x *KnownTypes) ClearOptInt64() {
+	x.xxx_hidden_OptInt64 = nil
+}
+
+func (x *KnownTypes) ClearOptUint32() {
+	x.xxx_hidden_OptUint32 = nil
+}
+
+func (x *KnownTypes) ClearOptUint64() {
+	x.xxx_hidden_OptUint64 = nil
+}
+
+func (x *KnownTypes) ClearOptFloat() {
+	x.xxx_hidden_OptFloat = nil
+}
+
+func (x *KnownTypes) ClearOptDouble() {
+	x.xxx_hidden_OptDouble = nil
+}
+
+func (x *KnownTypes) ClearOptString() {
+	x.xxx_hidden_OptString = nil
+}
+
+func (x *KnownTypes) ClearOptBytes() {
+	x.xxx_hidden_OptBytes = nil
+}
+
+func (x *KnownTypes) ClearOptDuration() {
+	x.xxx_hidden_OptDuration = nil
+}
+
+func (x *KnownTypes) ClearOptTimestamp() {
+	x.xxx_hidden_OptTimestamp = nil
+}
+
+func (x *KnownTypes) ClearOptStruct() {
+	x.xxx_hidden_OptStruct = nil
+}
+
+func (x *KnownTypes) ClearOptList() {
+	x.xxx_hidden_OptList = nil
+}
+
+func (x *KnownTypes) ClearOptValue() {
+	x.xxx_hidden_OptValue = nil
+}
+
+func (x *KnownTypes) ClearOptNull() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 14)
+	x.xxx_hidden_OptNull = structpb.NullValue_NULL_VALUE
+}
+
+func (x *KnownTypes) ClearOptEmpty() {
+	x.xxx_hidden_OptEmpty = nil
+}
+
+func (x *KnownTypes) ClearOptAny() {
+	x.xxx_hidden_OptAny = nil
+}
+
+func (x *KnownTypes) ClearOptFieldmask() {
+	x.xxx_hidden_OptFieldmask = nil
+}
+
+type KnownTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptBool      *wrapperspb.BoolValue
+	OptInt32     *wrapperspb.Int32Value
+	OptInt64     *wrapperspb.Int64Value
+	OptUint32    *wrapperspb.UInt32Value
+	OptUint64    *wrapperspb.UInt64Value
+	OptFloat     *wrapperspb.FloatValue
+	OptDouble    *wrapperspb.DoubleValue
+	OptString    *wrapperspb.StringValue
+	OptBytes     *wrapperspb.BytesValue
+	OptDuration  *durationpb.Duration
+	OptTimestamp *timestamppb.Timestamp
+	OptStruct    *structpb.Struct
+	OptList      *structpb.ListValue
+	OptValue     *structpb.Value
+	OptNull      *structpb.NullValue
+	OptEmpty     *emptypb.Empty
+	OptAny       *anypb.Any
+	OptFieldmask *fieldmaskpb.FieldMask
+}
+
+func (b0 KnownTypes_builder) Build() *KnownTypes {
+	m0 := &KnownTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_OptBool = b.OptBool
+	x.xxx_hidden_OptInt32 = b.OptInt32
+	x.xxx_hidden_OptInt64 = b.OptInt64
+	x.xxx_hidden_OptUint32 = b.OptUint32
+	x.xxx_hidden_OptUint64 = b.OptUint64
+	x.xxx_hidden_OptFloat = b.OptFloat
+	x.xxx_hidden_OptDouble = b.OptDouble
+	x.xxx_hidden_OptString = b.OptString
+	x.xxx_hidden_OptBytes = b.OptBytes
+	x.xxx_hidden_OptDuration = b.OptDuration
+	x.xxx_hidden_OptTimestamp = b.OptTimestamp
+	x.xxx_hidden_OptStruct = b.OptStruct
+	x.xxx_hidden_OptList = b.OptList
+	x.xxx_hidden_OptValue = b.OptValue
+	if b.OptNull != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 14, 18)
+		x.xxx_hidden_OptNull = *b.OptNull
+	}
+	x.xxx_hidden_OptEmpty = b.OptEmpty
+	x.xxx_hidden_OptAny = b.OptAny
+	x.xxx_hidden_OptFieldmask = b.OptFieldmask
+	return m0
+}
+
+type Nests_OptGroup struct {
+	state                           protoimpl.MessageState         `protogen:"opaque.v1"`
+	xxx_hidden_OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	xxx_hidden_OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	xxx_hidden_Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
+	xxx_hidden_NestedDelimitedField *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=nestedDelimitedField" json:"nested_delimited_field,omitempty"`
+	XXX_raceDetectHookData          protoimpl.RaceDetectHookData
+	XXX_presence                    [1]uint32
+	unknownFields                   protoimpl.UnknownFields
+	sizeCache                       protoimpl.SizeCache
+}
+
+func (x *Nests_OptGroup) Reset() {
+	*x = Nests_OptGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_OptGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_OptGroup) ProtoMessage() {}
+
+func (x *Nests_OptGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_OptGroup) GetOptString() string {
+	if x != nil {
+		if x.xxx_hidden_OptString != nil {
+			return *x.xxx_hidden_OptString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *Nests_OptGroup) GetOptNested() *Nested {
+	if x != nil {
+		return x.xxx_hidden_OptNested
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
+	if x != nil {
+		return x.xxx_hidden_Optnestedgroup
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) GetNestedDelimitedField() *Nests_OptGroup_OptNestedGroup {
+	if x != nil {
+		return x.xxx_hidden_NestedDelimitedField
+	}
+	return nil
+}
+
+func (x *Nests_OptGroup) SetOptString(v string) {
+	x.xxx_hidden_OptString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 4)
+}
+
+func (x *Nests_OptGroup) SetOptNested(v *Nested) {
+	x.xxx_hidden_OptNested = v
+}
+
+func (x *Nests_OptGroup) SetOptnestedgroup(v *Nests_OptGroup_OptNestedGroup) {
+	x.xxx_hidden_Optnestedgroup = v
+}
+
+func (x *Nests_OptGroup) SetNestedDelimitedField(v *Nests_OptGroup_OptNestedGroup) {
+	x.xxx_hidden_NestedDelimitedField = v
+}
+
+func (x *Nests_OptGroup) HasOptString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Nests_OptGroup) HasOptNested() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptNested != nil
+}
+
+func (x *Nests_OptGroup) HasOptnestedgroup() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Optnestedgroup != nil
+}
+
+func (x *Nests_OptGroup) HasNestedDelimitedField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_NestedDelimitedField != nil
+}
+
+func (x *Nests_OptGroup) ClearOptString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptString = nil
+}
+
+func (x *Nests_OptGroup) ClearOptNested() {
+	x.xxx_hidden_OptNested = nil
+}
+
+func (x *Nests_OptGroup) ClearOptnestedgroup() {
+	x.xxx_hidden_Optnestedgroup = nil
+}
+
+func (x *Nests_OptGroup) ClearNestedDelimitedField() {
+	x.xxx_hidden_NestedDelimitedField = nil
+}
+
+type Nests_OptGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptString            *string
+	OptNested            *Nested
+	Optnestedgroup       *Nests_OptGroup_OptNestedGroup
+	NestedDelimitedField *Nests_OptGroup_OptNestedGroup
+}
+
+func (b0 Nests_OptGroup_builder) Build() *Nests_OptGroup {
+	m0 := &Nests_OptGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 4)
+		x.xxx_hidden_OptString = b.OptString
+	}
+	x.xxx_hidden_OptNested = b.OptNested
+	x.xxx_hidden_Optnestedgroup = b.Optnestedgroup
+	x.xxx_hidden_NestedDelimitedField = b.NestedDelimitedField
+	return m0
+}
+
+type Nests_RptGroup struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *Nests_RptGroup) Reset() {
+	*x = Nests_RptGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_RptGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_RptGroup) ProtoMessage() {}
+
+func (x *Nests_RptGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_RptGroup) GetRptString() []string {
+	if x != nil {
+		return x.xxx_hidden_RptString
+	}
+	return nil
+}
+
+func (x *Nests_RptGroup) SetRptString(v []string) {
+	x.xxx_hidden_RptString = v
+}
+
+type Nests_RptGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	RptString []string
+}
+
+func (b0 Nests_RptGroup_builder) Build() *Nests_RptGroup {
+	m0 := &Nests_RptGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_RptString = b.RptString
+	return m0
+}
+
+type Nests_OptGroup_OptNestedGroup struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_OptFixed32  uint32                 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) Reset() {
+	*x = Nests_OptGroup_OptNestedGroup{}
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nests_OptGroup_OptNestedGroup) ProtoMessage() {}
+
+func (x *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptFixed32
+	}
+	return 0
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) SetOptFixed32(v uint32) {
+	x.xxx_hidden_OptFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) HasOptFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *Nests_OptGroup_OptNestedGroup) ClearOptFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_OptFixed32 = 0
+}
+
+type Nests_OptGroup_OptNestedGroup_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	OptFixed32 *uint32
+}
+
+func (b0 Nests_OptGroup_OptNestedGroup_builder) Build() *Nests_OptGroup_OptNestedGroup {
+	m0 := &Nests_OptGroup_OptNestedGroup{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.OptFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1)
+		x.xxx_hidden_OptFixed32 = *b.OptFixed32
+	}
+	return m0
+}
+
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         21,
+		Name:          "opaque.pbeditions.opt_ext_bool",
+		Tag:           "varint,21,opt,name=opt_ext_bool",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         22,
+		Name:          "opaque.pbeditions.opt_ext_string",
+		Tag:           "bytes,22,opt,name=opt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Enum)(nil),
+		Field:         23,
+		Name:          "opaque.pbeditions.opt_ext_enum",
+		Tag:           "varint,23,opt,name=opt_ext_enum,enum=opaque.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         24,
+		Name:          "opaque.pbeditions.opt_ext_nested",
+		Tag:           "bytes,24,opt,name=opt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*PartialRequired)(nil),
+		Field:         25,
+		Name:          "opaque.pbeditions.opt_ext_partial",
+		Tag:           "bytes,25,opt,name=opt_ext_partial",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]uint32)(nil),
+		Field:         31,
+		Name:          "opaque.pbeditions.rpt_ext_fixed32",
+		Tag:           "fixed32,31,rep,packed,name=rpt_ext_fixed32",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]Enum)(nil),
+		Field:         32,
+		Name:          "opaque.pbeditions.rpt_ext_enum",
+		Tag:           "varint,32,rep,packed,name=rpt_ext_enum,enum=opaque.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]*Nested)(nil),
+		Field:         33,
+		Name:          "opaque.pbeditions.rpt_ext_nested",
+		Tag:           "bytes,33,rep,name=rpt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*FakeMessageSetExtension)(nil),
+		Field:         50,
+		Name:          "opaque.pbeditions.message_set_extension",
+		Tag:           "bytes,50,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         51,
+		Name:          "opaque.pbeditions.ExtensionsContainer.opt_ext_bool",
+		Tag:           "varint,51,opt,name=opt_ext_bool",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         52,
+		Name:          "opaque.pbeditions.ExtensionsContainer.opt_ext_string",
+		Tag:           "bytes,52,opt,name=opt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Enum)(nil),
+		Field:         53,
+		Name:          "opaque.pbeditions.ExtensionsContainer.opt_ext_enum",
+		Tag:           "varint,53,opt,name=opt_ext_enum,enum=opaque.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         54,
+		Name:          "opaque.pbeditions.ExtensionsContainer.opt_ext_nested",
+		Tag:           "bytes,54,opt,name=opt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: (*PartialRequired)(nil),
+		Field:         55,
+		Name:          "opaque.pbeditions.ExtensionsContainer.opt_ext_partial",
+		Tag:           "bytes,55,opt,name=opt_ext_partial",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]string)(nil),
+		Field:         61,
+		Name:          "opaque.pbeditions.ExtensionsContainer.rpt_ext_string",
+		Tag:           "bytes,61,rep,name=rpt_ext_string",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]Enum)(nil),
+		Field:         62,
+		Name:          "opaque.pbeditions.ExtensionsContainer.rpt_ext_enum",
+		Tag:           "varint,62,rep,packed,name=rpt_ext_enum,enum=opaque.pbeditions.Enum",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*Extensions)(nil),
+		ExtensionType: ([]*Nested)(nil),
+		Field:         63,
+		Name:          "opaque.pbeditions.ExtensionsContainer.rpt_ext_nested",
+		Tag:           "bytes,63,rep,name=rpt_ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*MessageSetExtension)(nil),
+		Field:         10,
+		Name:          "opaque.pbeditions.MessageSetExtension.message_set_extension",
+		Tag:           "bytes,10,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*MessageSetExtension)(nil),
+		Field:         20,
+		Name:          "opaque.pbeditions.MessageSetExtension.not_message_set_extension",
+		Tag:           "bytes,20,opt,name=not_message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*MessageSet)(nil),
+		ExtensionType: (*Nested)(nil),
+		Field:         30,
+		Name:          "opaque.pbeditions.MessageSetExtension.ext_nested",
+		Tag:           "bytes,30,opt,name=ext_nested",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+	{
+		ExtendedType:  (*FakeMessageSet)(nil),
+		ExtensionType: (*FakeMessageSetExtension)(nil),
+		Field:         10,
+		Name:          "opaque.pbeditions.FakeMessageSetExtension.message_set_extension",
+		Tag:           "bytes,10,opt,name=message_set_extension",
+		Filename:      "internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto",
+	},
+}
+
+// Extension fields to Extensions.
+var (
+	// optional bool opt_ext_bool = 21;
+	E_OptExtBool = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[0]
+	// optional string opt_ext_string = 22;
+	E_OptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[1]
+	// optional opaque.pbeditions.Enum opt_ext_enum = 23;
+	E_OptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[2]
+	// optional opaque.pbeditions.Nested opt_ext_nested = 24;
+	E_OptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[3]
+	// optional opaque.pbeditions.PartialRequired opt_ext_partial = 25;
+	E_OptExtPartial = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[4]
+	// repeated fixed32 rpt_ext_fixed32 = 31;
+	E_RptExtFixed32 = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[5]
+	// repeated opaque.pbeditions.Enum rpt_ext_enum = 32;
+	E_RptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[6]
+	// repeated opaque.pbeditions.Nested rpt_ext_nested = 33;
+	E_RptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[7]
+	// optional bool opt_ext_bool = 51;
+	E_ExtensionsContainer_OptExtBool = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[9]
+	// optional string opt_ext_string = 52;
+	E_ExtensionsContainer_OptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[10]
+	// optional opaque.pbeditions.Enum opt_ext_enum = 53;
+	E_ExtensionsContainer_OptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[11]
+	// optional opaque.pbeditions.Nested opt_ext_nested = 54;
+	E_ExtensionsContainer_OptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[12]
+	// optional opaque.pbeditions.PartialRequired opt_ext_partial = 55;
+	E_ExtensionsContainer_OptExtPartial = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[13]
+	// repeated string rpt_ext_string = 61;
+	E_ExtensionsContainer_RptExtString = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[14]
+	// repeated opaque.pbeditions.Enum rpt_ext_enum = 62;
+	E_ExtensionsContainer_RptExtEnum = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[15]
+	// repeated opaque.pbeditions.Nested rpt_ext_nested = 63;
+	E_ExtensionsContainer_RptExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[16]
+)
+
+// Extension fields to MessageSet.
+var (
+	// optional opaque.pbeditions.FakeMessageSetExtension message_set_extension = 50;
+	E_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[8]
+	// optional opaque.pbeditions.MessageSetExtension message_set_extension = 10;
+	E_MessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[17]
+	// optional opaque.pbeditions.MessageSetExtension not_message_set_extension = 20;
+	E_MessageSetExtension_NotMessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[18]
+	// optional opaque.pbeditions.Nested ext_nested = 30;
+	E_MessageSetExtension_ExtNested = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[19]
+)
+
+// Extension fields to FakeMessageSet.
+var (
+	// optional opaque.pbeditions.FakeMessageSetExtension message_set_extension = 10;
+	E_FakeMessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes[20]
+)
+
+var File_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_rawDesc = []byte{
+	0x0a, 0x4b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x32,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
+	0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
+	0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75,
+	0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70,
+	0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a,
+	0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a,
+	0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70,
+	0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52,
+	0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21,
+	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14,
+	0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a,
+	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x8f, 0x04, 0x0a, 0x0f, 0x49, 0x6d,
+	0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x1c, 0x0a,
+	0x06, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x02, 0x52, 0x05, 0x73, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x07, 0x73,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1e, 0x0a, 0x07, 0x73,
+	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x05, 0xaa, 0x01,
+	0x02, 0x08, 0x02, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x20, 0x0a, 0x08, 0x73,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x05, 0xaa,
+	0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x20, 0x0a,
+	0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x11, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x12, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x22, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x08, 0x73,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x22, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0a, 0x73,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x42,
+	0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x09, 0x73, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x07, 0x73, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52,
+	0x06, 0x73, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02,
+	0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x07, 0x73, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08,
+	0x02, 0x52, 0x06, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x08, 0x73, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x43, 0x0a, 0x0d, 0x55,
+	0x54, 0x46, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x10,
+	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x02, 0x20, 0x02, 0x52,
+	0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x22, 0x63, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x55, 0x54, 0x46, 0x38, 0x56, 0x61, 0x6c,
+	0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x54, 0x46, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x64, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa1, 0x04, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12,
+	0x32, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07,
+	0x72, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x47, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6c, 0x69,
+	0x63, 0x69, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x02, 0x52, 0x0c, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x4b, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e,
+	0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x4b, 0x0a,
+	0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x72, 0x70, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x60, 0x0a, 0x14, 0x69, 0x6d,
+	0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
+	0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75,
+	0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x02, 0x52, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63,
+	0x69, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x28, 0x0a, 0x0a,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e,
+	0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,
+	0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x41, 0x0a, 0x0e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
+	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12,
+	0x08, 0x0a, 0x04, 0x5a, 0x57, 0x45, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48,
+	0x4e, 0x10, 0x0a, 0x1a, 0x04, 0x3a, 0x02, 0x10, 0x01, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f,
+	0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c,
+	0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a,
+	0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03,
+	0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70,
+	0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09,
+	0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72,
+	0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74,
+	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+	0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x22, 0xb9, 0x02, 0x0a, 0x04, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x27, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f,
+	0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54,
+	0x6f, 0x53, 0x74, 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x59, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x06,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22,
+	0x80, 0x06, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e,
+	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x51, 0x0a, 0x0f, 0x64, 0x65, 0x6c,
+	0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0e, 0x64, 0x65,
+	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x0a,
+	0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x07, 0xaa, 0x01, 0x04,
+	0x18, 0x02, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xe6,
+	0x02, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x70,
+	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x5f, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e,
+	0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05,
+	0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x6d, 0x0a, 0x16, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e,
+	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x28, 0x02, 0x52, 0x14,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46,
+	0x69, 0x65, 0x6c, 0x64, 0x1a, 0x31, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x1a, 0x29, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65,
+	0x6c, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73,
+	0x12, 0x20, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x08, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f,
+	0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52,
+	0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0a,
+	0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
+	0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72,
+	0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45,
+	0x6e, 0x75, 0x6d, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x22, 0x56, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02,
+	0x08, 0x03, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x0a, 0x12,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x03, 0x52, 0x09, 0x72,
+	0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xb4, 0x03, 0x0a, 0x10, 0x49, 0x6e, 0x64,
+	0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x44, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09,
+	0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x74, 0x72,
+	0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x34, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a,
+	0x65, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57,
+	0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22,
+	0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08,
+	0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+	0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xbf, 0x05, 0x0a, 0x13, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+	0x65, 0x72, 0x32, 0x3f, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x32, 0x43, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x58, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x32, 0x5e, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x32, 0x69, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x32, 0x43, 0x0a,
+	0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3d,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x32, 0x58, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e,
+	0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
+	0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x5e, 0x0a, 0x0e,
+	0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65,
+	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c,
+	0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff,
+	0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x8b, 0x03, 0x0a, 0x13, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32,
+	0x79, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x80, 0x01, 0x0a, 0x19, 0x6e,
+	0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x57, 0x0a,
+	0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80,
+	0x80, 0x02, 0x22, 0xbc, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x81, 0x01,
+	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x22, 0x9e, 0x08, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07,
+	0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f,
+	0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
+	0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74,
+	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79,
+	0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+	0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70,
+	0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c,
+	0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73,
+	0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70,
+	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x75,
+	0x6c, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x33, 0x0a,
+	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x45, 0x6d, 0x70,
+	0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x20, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x41, 0x6e,
+	0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61,
+	0x73, 0x6b, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
+	0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61,
+	0x73, 0x6b, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e,
+	0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
+	0x54, 0x45, 0x4e, 0x10, 0x0a, 0x2a, 0x3b, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x45, 0x49, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x57, 0x45, 0x49,
+	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x48, 0x4e, 0x10, 0x0a, 0x1a, 0x04, 0x3a, 0x02,
+	0x10, 0x01, 0x3a, 0x3f, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f,
+	0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42,
+	0x6f, 0x6f, 0x6c, 0x3a, 0x43, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x58, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x3a, 0x5e, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x3a, 0x69, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x3a, 0x45, 0x0a,
+	0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x33, 0x32, 0x3a, 0x58, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62,
+	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x5e,
+	0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70,
+	0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x7d,
+	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x5a,
+	0x53, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
+	0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74,
+	0x65, 0x78, 0x74, 0x70, 0x62, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x09, 0xd2, 0x3e, 0x02, 0x10, 0x03, 0x10, 0x02, 0x20, 0x03,
+	0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+}
+
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_goTypes = []any{
+	(Enum)(0),                             // 0: opaque.pbeditions.Enum
+	(OpenEnum)(0),                         // 1: opaque.pbeditions.OpenEnum
+	(Enums_NestedEnum)(0),                 // 2: opaque.pbeditions.Enums.NestedEnum
+	(Enums_NestedOpenEnum)(0),             // 3: opaque.pbeditions.Enums.NestedOpenEnum
+	(*Scalars)(nil),                       // 4: opaque.pbeditions.Scalars
+	(*ImplicitScalars)(nil),               // 5: opaque.pbeditions.ImplicitScalars
+	(*UTF8Validated)(nil),                 // 6: opaque.pbeditions.UTF8Validated
+	(*NestsUTF8Validated)(nil),            // 7: opaque.pbeditions.NestsUTF8Validated
+	(*Enums)(nil),                         // 8: opaque.pbeditions.Enums
+	(*Repeats)(nil),                       // 9: opaque.pbeditions.Repeats
+	(*Maps)(nil),                          // 10: opaque.pbeditions.Maps
+	(*Nested)(nil),                        // 11: opaque.pbeditions.Nested
+	(*Nests)(nil),                         // 12: opaque.pbeditions.Nests
+	(*Requireds)(nil),                     // 13: opaque.pbeditions.Requireds
+	(*PartialRequired)(nil),               // 14: opaque.pbeditions.PartialRequired
+	(*NestedWithRequired)(nil),            // 15: opaque.pbeditions.NestedWithRequired
+	(*IndirectRequired)(nil),              // 16: opaque.pbeditions.IndirectRequired
+	(*Extensions)(nil),                    // 17: opaque.pbeditions.Extensions
+	(*ExtensionsContainer)(nil),           // 18: opaque.pbeditions.ExtensionsContainer
+	(*MessageSet)(nil),                    // 19: opaque.pbeditions.MessageSet
+	(*MessageSetExtension)(nil),           // 20: opaque.pbeditions.MessageSetExtension
+	(*FakeMessageSet)(nil),                // 21: opaque.pbeditions.FakeMessageSet
+	(*FakeMessageSetExtension)(nil),       // 22: opaque.pbeditions.FakeMessageSetExtension
+	(*KnownTypes)(nil),                    // 23: opaque.pbeditions.KnownTypes
+	nil,                                   // 24: opaque.pbeditions.Maps.Int32ToStrEntry
+	nil,                                   // 25: opaque.pbeditions.Maps.StrToNestedEntry
+	(*Nests_OptGroup)(nil),                // 26: opaque.pbeditions.Nests.OptGroup
+	(*Nests_RptGroup)(nil),                // 27: opaque.pbeditions.Nests.RptGroup
+	(*Nests_OptGroup_OptNestedGroup)(nil), // 28: opaque.pbeditions.Nests.OptGroup.OptNestedGroup
+	nil,                                   // 29: opaque.pbeditions.IndirectRequired.StrToNestedEntry
+	(*wrapperspb.BoolValue)(nil),          // 30: google.protobuf.BoolValue
+	(*wrapperspb.Int32Value)(nil),         // 31: google.protobuf.Int32Value
+	(*wrapperspb.Int64Value)(nil),         // 32: google.protobuf.Int64Value
+	(*wrapperspb.UInt32Value)(nil),        // 33: google.protobuf.UInt32Value
+	(*wrapperspb.UInt64Value)(nil),        // 34: google.protobuf.UInt64Value
+	(*wrapperspb.FloatValue)(nil),         // 35: google.protobuf.FloatValue
+	(*wrapperspb.DoubleValue)(nil),        // 36: google.protobuf.DoubleValue
+	(*wrapperspb.StringValue)(nil),        // 37: google.protobuf.StringValue
+	(*wrapperspb.BytesValue)(nil),         // 38: google.protobuf.BytesValue
+	(*durationpb.Duration)(nil),           // 39: google.protobuf.Duration
+	(*timestamppb.Timestamp)(nil),         // 40: google.protobuf.Timestamp
+	(*structpb.Struct)(nil),               // 41: google.protobuf.Struct
+	(*structpb.ListValue)(nil),            // 42: google.protobuf.ListValue
+	(*structpb.Value)(nil),                // 43: google.protobuf.Value
+	(structpb.NullValue)(0),               // 44: google.protobuf.NullValue
+	(*emptypb.Empty)(nil),                 // 45: google.protobuf.Empty
+	(*anypb.Any)(nil),                     // 46: google.protobuf.Any
+	(*fieldmaskpb.FieldMask)(nil),         // 47: google.protobuf.FieldMask
+}
+var file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_depIdxs = []int32{
+	6,  // 0: opaque.pbeditions.NestsUTF8Validated.validated_message:type_name -> opaque.pbeditions.UTF8Validated
+	0,  // 1: opaque.pbeditions.Enums.opt_enum:type_name -> opaque.pbeditions.Enum
+	0,  // 2: opaque.pbeditions.Enums.rpt_enum:type_name -> opaque.pbeditions.Enum
+	1,  // 3: opaque.pbeditions.Enums.implicit_enum:type_name -> opaque.pbeditions.OpenEnum
+	2,  // 4: opaque.pbeditions.Enums.opt_nested_enum:type_name -> opaque.pbeditions.Enums.NestedEnum
+	2,  // 5: opaque.pbeditions.Enums.rpt_nested_enum:type_name -> opaque.pbeditions.Enums.NestedEnum
+	3,  // 6: opaque.pbeditions.Enums.implicit_nested_enum:type_name -> opaque.pbeditions.Enums.NestedOpenEnum
+	24, // 7: opaque.pbeditions.Maps.int32_to_str:type_name -> opaque.pbeditions.Maps.Int32ToStrEntry
+	25, // 8: opaque.pbeditions.Maps.str_to_nested:type_name -> opaque.pbeditions.Maps.StrToNestedEntry
+	11, // 9: opaque.pbeditions.Nested.opt_nested:type_name -> opaque.pbeditions.Nested
+	11, // 10: opaque.pbeditions.Nests.opt_nested:type_name -> opaque.pbeditions.Nested
+	26, // 11: opaque.pbeditions.Nests.optgroup:type_name -> opaque.pbeditions.Nests.OptGroup
+	26, // 12: opaque.pbeditions.Nests.delimited_field:type_name -> opaque.pbeditions.Nests.OptGroup
+	11, // 13: opaque.pbeditions.Nests.rpt_nested:type_name -> opaque.pbeditions.Nested
+	27, // 14: opaque.pbeditions.Nests.rptgroup:type_name -> opaque.pbeditions.Nests.RptGroup
+	0,  // 15: opaque.pbeditions.Requireds.req_enum:type_name -> opaque.pbeditions.Enum
+	11, // 16: opaque.pbeditions.Requireds.req_nested:type_name -> opaque.pbeditions.Nested
+	15, // 17: opaque.pbeditions.IndirectRequired.opt_nested:type_name -> opaque.pbeditions.NestedWithRequired
+	15, // 18: opaque.pbeditions.IndirectRequired.rpt_nested:type_name -> opaque.pbeditions.NestedWithRequired
+	29, // 19: opaque.pbeditions.IndirectRequired.str_to_nested:type_name -> opaque.pbeditions.IndirectRequired.StrToNestedEntry
+	15, // 20: opaque.pbeditions.IndirectRequired.oneof_nested:type_name -> opaque.pbeditions.NestedWithRequired
+	30, // 21: opaque.pbeditions.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
+	31, // 22: opaque.pbeditions.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
+	32, // 23: opaque.pbeditions.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
+	33, // 24: opaque.pbeditions.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
+	34, // 25: opaque.pbeditions.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
+	35, // 26: opaque.pbeditions.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
+	36, // 27: opaque.pbeditions.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
+	37, // 28: opaque.pbeditions.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
+	38, // 29: opaque.pbeditions.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
+	39, // 30: opaque.pbeditions.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
+	40, // 31: opaque.pbeditions.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
+	41, // 32: opaque.pbeditions.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
+	42, // 33: opaque.pbeditions.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
+	43, // 34: opaque.pbeditions.KnownTypes.opt_value:type_name -> google.protobuf.Value
+	44, // 35: opaque.pbeditions.KnownTypes.opt_null:type_name -> google.protobuf.NullValue
+	45, // 36: opaque.pbeditions.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
+	46, // 37: opaque.pbeditions.KnownTypes.opt_any:type_name -> google.protobuf.Any
+	47, // 38: opaque.pbeditions.KnownTypes.opt_fieldmask:type_name -> google.protobuf.FieldMask
+	11, // 39: opaque.pbeditions.Maps.StrToNestedEntry.value:type_name -> opaque.pbeditions.Nested
+	11, // 40: opaque.pbeditions.Nests.OptGroup.opt_nested:type_name -> opaque.pbeditions.Nested
+	28, // 41: opaque.pbeditions.Nests.OptGroup.optnestedgroup:type_name -> opaque.pbeditions.Nests.OptGroup.OptNestedGroup
+	28, // 42: opaque.pbeditions.Nests.OptGroup.nested_delimited_field:type_name -> opaque.pbeditions.Nests.OptGroup.OptNestedGroup
+	15, // 43: opaque.pbeditions.IndirectRequired.StrToNestedEntry.value:type_name -> opaque.pbeditions.NestedWithRequired
+	17, // 44: opaque.pbeditions.opt_ext_bool:extendee -> opaque.pbeditions.Extensions
+	17, // 45: opaque.pbeditions.opt_ext_string:extendee -> opaque.pbeditions.Extensions
+	17, // 46: opaque.pbeditions.opt_ext_enum:extendee -> opaque.pbeditions.Extensions
+	17, // 47: opaque.pbeditions.opt_ext_nested:extendee -> opaque.pbeditions.Extensions
+	17, // 48: opaque.pbeditions.opt_ext_partial:extendee -> opaque.pbeditions.Extensions
+	17, // 49: opaque.pbeditions.rpt_ext_fixed32:extendee -> opaque.pbeditions.Extensions
+	17, // 50: opaque.pbeditions.rpt_ext_enum:extendee -> opaque.pbeditions.Extensions
+	17, // 51: opaque.pbeditions.rpt_ext_nested:extendee -> opaque.pbeditions.Extensions
+	19, // 52: opaque.pbeditions.message_set_extension:extendee -> opaque.pbeditions.MessageSet
+	17, // 53: opaque.pbeditions.ExtensionsContainer.opt_ext_bool:extendee -> opaque.pbeditions.Extensions
+	17, // 54: opaque.pbeditions.ExtensionsContainer.opt_ext_string:extendee -> opaque.pbeditions.Extensions
+	17, // 55: opaque.pbeditions.ExtensionsContainer.opt_ext_enum:extendee -> opaque.pbeditions.Extensions
+	17, // 56: opaque.pbeditions.ExtensionsContainer.opt_ext_nested:extendee -> opaque.pbeditions.Extensions
+	17, // 57: opaque.pbeditions.ExtensionsContainer.opt_ext_partial:extendee -> opaque.pbeditions.Extensions
+	17, // 58: opaque.pbeditions.ExtensionsContainer.rpt_ext_string:extendee -> opaque.pbeditions.Extensions
+	17, // 59: opaque.pbeditions.ExtensionsContainer.rpt_ext_enum:extendee -> opaque.pbeditions.Extensions
+	17, // 60: opaque.pbeditions.ExtensionsContainer.rpt_ext_nested:extendee -> opaque.pbeditions.Extensions
+	19, // 61: opaque.pbeditions.MessageSetExtension.message_set_extension:extendee -> opaque.pbeditions.MessageSet
+	19, // 62: opaque.pbeditions.MessageSetExtension.not_message_set_extension:extendee -> opaque.pbeditions.MessageSet
+	19, // 63: opaque.pbeditions.MessageSetExtension.ext_nested:extendee -> opaque.pbeditions.MessageSet
+	21, // 64: opaque.pbeditions.FakeMessageSetExtension.message_set_extension:extendee -> opaque.pbeditions.FakeMessageSet
+	0,  // 65: opaque.pbeditions.opt_ext_enum:type_name -> opaque.pbeditions.Enum
+	11, // 66: opaque.pbeditions.opt_ext_nested:type_name -> opaque.pbeditions.Nested
+	14, // 67: opaque.pbeditions.opt_ext_partial:type_name -> opaque.pbeditions.PartialRequired
+	0,  // 68: opaque.pbeditions.rpt_ext_enum:type_name -> opaque.pbeditions.Enum
+	11, // 69: opaque.pbeditions.rpt_ext_nested:type_name -> opaque.pbeditions.Nested
+	22, // 70: opaque.pbeditions.message_set_extension:type_name -> opaque.pbeditions.FakeMessageSetExtension
+	0,  // 71: opaque.pbeditions.ExtensionsContainer.opt_ext_enum:type_name -> opaque.pbeditions.Enum
+	11, // 72: opaque.pbeditions.ExtensionsContainer.opt_ext_nested:type_name -> opaque.pbeditions.Nested
+	14, // 73: opaque.pbeditions.ExtensionsContainer.opt_ext_partial:type_name -> opaque.pbeditions.PartialRequired
+	0,  // 74: opaque.pbeditions.ExtensionsContainer.rpt_ext_enum:type_name -> opaque.pbeditions.Enum
+	11, // 75: opaque.pbeditions.ExtensionsContainer.rpt_ext_nested:type_name -> opaque.pbeditions.Nested
+	20, // 76: opaque.pbeditions.MessageSetExtension.message_set_extension:type_name -> opaque.pbeditions.MessageSetExtension
+	20, // 77: opaque.pbeditions.MessageSetExtension.not_message_set_extension:type_name -> opaque.pbeditions.MessageSetExtension
+	11, // 78: opaque.pbeditions.MessageSetExtension.ext_nested:type_name -> opaque.pbeditions.Nested
+	22, // 79: opaque.pbeditions.FakeMessageSetExtension.message_set_extension:type_name -> opaque.pbeditions.FakeMessageSetExtension
+	80, // [80:80] is the sub-list for method output_type
+	80, // [80:80] is the sub-list for method input_type
+	65, // [65:80] is the sub-list for extension type_name
+	44, // [44:65] is the sub-list for extension extendee
+	0,  // [0:44] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_init() }
+func file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_init() {
+	if File_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto != nil {
+		return
+	}
+	file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes[12].OneofWrappers = []any{
+		(*indirectRequired_OneofNested)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_rawDesc,
+			NumEnums:      4,
+			NumMessages:   26,
+			NumExtensions: 21,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_msgTypes,
+		ExtensionInfos:    file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_extTypes,
+	}.Build()
+	File_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto = out.File
+	file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_rawDesc = nil
+	file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_goTypes = nil
+	file_internal_testprotos_textpbeditions_textpbeditions_opaque_test2_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto
new file mode 100644
index 0000000..28a249f
--- /dev/null
+++ b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.proto
@@ -0,0 +1,303 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test Protobuf definitions with proto2 syntax.
+edition = "2023";
+
+package opaque.pbeditions;
+
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/textpbeditions/textpbeditions_opaque";
+import "google/protobuf/go_features.proto";
+option features.(pb.go).api_level = API_OPAQUE;
+option features.enum_type = CLOSED;
+option features.utf8_validation = NONE;
+
+// Scalars contains scalar fields.
+message Scalars {
+  bool opt_bool = 1;
+  int32 opt_int32 = 2;
+  int64 opt_int64 = 3;
+  uint32 opt_uint32 = 4;
+  uint64 opt_uint64 = 5;
+  sint32 opt_sint32 = 6;
+  sint64 opt_sint64 = 7;
+  fixed32 opt_fixed32 = 8;
+  fixed64 opt_fixed64 = 9;
+  sfixed32 opt_sfixed32 = 10;
+  sfixed64 opt_sfixed64 = 11;
+
+  // Textproto marshal outputs fields in the same order as this proto
+  // definition regardless of field number. Following fields are intended to
+  // test that assumption.
+
+  float opt_float = 20;
+  double opt_double = 21;
+
+  bytes opt_bytes = 14;
+  string opt_string = 13;
+}
+
+// ImplicitScalars contains scalar field types with implicit field_presence
+message ImplicitScalars {
+  bool s_bool = 1 [features.field_presence = IMPLICIT];
+  int32 s_int32 = 2 [features.field_presence = IMPLICIT];
+  int64 s_int64 = 3 [features.field_presence = IMPLICIT];
+  uint32 s_uint32 = 4 [features.field_presence = IMPLICIT];
+  uint64 s_uint64 = 5 [features.field_presence = IMPLICIT];
+  sint32 s_sint32 = 6 [features.field_presence = IMPLICIT];
+  sint64 s_sint64 = 7 [features.field_presence = IMPLICIT];
+  fixed32 s_fixed32 = 8 [features.field_presence = IMPLICIT];
+  fixed64 s_fixed64 = 9 [features.field_presence = IMPLICIT];
+  sfixed32 s_sfixed32 = 10 [features.field_presence = IMPLICIT];
+  sfixed64 s_sfixed64 = 11 [features.field_presence = IMPLICIT];
+
+  // Textproto marshal outputs fields in the same order as this proto
+  // definition regardless of field number. Following fields are intended to
+  // test that assumption.
+
+  float s_float = 20 [features.field_presence = IMPLICIT];
+  double s_double = 21 [features.field_presence = IMPLICIT];
+
+  bytes s_bytes = 14 [features.field_presence = IMPLICIT];
+  string s_string = 13 [features.field_presence = IMPLICIT];
+}
+
+enum Enum {
+  ONE = 1;
+  TWO = 2;
+  TEN = 10;
+}
+
+enum OpenEnum {
+  option features.enum_type = OPEN;
+
+  UNKNOWN = 0;
+  EINS = 1;
+  ZWEI = 2;
+  ZEHN = 10;
+}
+
+message UTF8Validated {
+  string validated_string = 1
+      [features.utf8_validation = VERIFY, features.field_presence = IMPLICIT];
+}
+
+message NestsUTF8Validated {
+  UTF8Validated validated_message = 1;
+}
+
+// Message contains enum fields.
+message Enums {
+  Enum opt_enum = 1;
+  repeated Enum rpt_enum = 2;
+  OpenEnum implicit_enum = 5 [features.field_presence = IMPLICIT];
+
+  enum NestedEnum {
+    UNO = 1;
+    DOS = 2;
+    DIEZ = 10;
+  }
+  enum NestedOpenEnum {
+    option features.enum_type = OPEN;
+
+    UNKNOWN = 0;
+    EINS = 1;
+    ZWEI = 2;
+    ZEHN = 10;
+  }
+  NestedEnum opt_nested_enum = 3;
+  repeated NestedEnum rpt_nested_enum = 4;
+  NestedOpenEnum implicit_nested_enum = 6 [features.field_presence = IMPLICIT];
+}
+
+// Message contains repeated fields.
+message Repeats {
+  repeated bool rpt_bool = 1;
+  repeated int32 rpt_int32 = 2;
+  repeated int64 rpt_int64 = 3;
+  repeated uint32 rpt_uint32 = 4;
+  repeated uint64 rpt_uint64 = 5;
+  repeated float rpt_float = 6;
+  repeated double rpt_double = 7;
+  repeated string rpt_string = 8;
+  repeated bytes rpt_bytes = 9;
+}
+
+// Message contains map fields.
+message Maps {
+  map<int32, string> int32_to_str = 1;
+  map<string, Nested> str_to_nested = 4;
+}
+
+// Message type used as submessage.
+message Nested {
+  string opt_string = 1;
+  Nested opt_nested = 2;
+}
+
+// Message contains message and group fields.
+message Nests {
+  Nested opt_nested = 1;
+  message OptGroup {
+    string opt_string = 1;
+    Nested opt_nested = 2;
+
+    message OptNestedGroup {
+      fixed32 opt_fixed32 = 1;
+    }
+    OptNestedGroup optnestedgroup = 3 [features.message_encoding = DELIMITED];
+    OptNestedGroup nested_delimited_field = 4
+        [features.message_encoding = DELIMITED];
+  }
+  OptGroup optgroup = 2 [features.message_encoding = DELIMITED];
+  OptGroup delimited_field = 3 [features.message_encoding = DELIMITED];
+
+  repeated Nested rpt_nested = 4;
+  message RptGroup {
+    repeated string rpt_string = 1;
+  }
+
+  repeated RptGroup rptgroup = 5 [
+    features.message_encoding = DELIMITED,
+    features.repeated_field_encoding = EXPANDED
+  ];
+
+  reserved reserved_field;
+}
+
+// Message contains required fields.
+message Requireds {
+  bool req_bool = 1 [features.field_presence = LEGACY_REQUIRED];
+  sfixed64 req_sfixed64 = 2 [features.field_presence = LEGACY_REQUIRED];
+  double req_double = 3 [features.field_presence = LEGACY_REQUIRED];
+  string req_string = 4 [features.field_presence = LEGACY_REQUIRED];
+  Enum req_enum = 5 [features.field_presence = LEGACY_REQUIRED];
+  Nested req_nested = 6 [features.field_presence = LEGACY_REQUIRED];
+}
+
+// Message contains both required and optional fields.
+message PartialRequired {
+  string req_string = 1 [features.field_presence = LEGACY_REQUIRED];
+  string opt_string = 2;
+}
+
+// Following messages are for testing required field nested in optional,
+// repeated and map fields.
+
+message NestedWithRequired {
+  string req_string = 1 [features.field_presence = LEGACY_REQUIRED];
+}
+
+message IndirectRequired {
+  NestedWithRequired opt_nested = 1;
+  repeated NestedWithRequired rpt_nested = 2;
+  map<string, NestedWithRequired> str_to_nested = 3;
+
+  oneof union {
+    NestedWithRequired oneof_nested = 4;
+  }
+}
+
+// Following messages are for testing extensions.
+
+message Extensions {
+  string opt_string = 1;
+  extensions 20 to 100;
+  bool opt_bool = 101;
+  int32 opt_int32 = 2;
+}
+
+extend Extensions {
+  bool opt_ext_bool = 21;
+  string opt_ext_string = 22;
+  Enum opt_ext_enum = 23;
+  Nested opt_ext_nested = 24;
+  PartialRequired opt_ext_partial = 25;
+
+  repeated fixed32 rpt_ext_fixed32 = 31;
+  repeated Enum rpt_ext_enum = 32;
+  repeated Nested rpt_ext_nested = 33;
+}
+
+message ExtensionsContainer {
+  extend Extensions {
+    bool opt_ext_bool = 51;
+    string opt_ext_string = 52;
+    Enum opt_ext_enum = 53;
+    Nested opt_ext_nested = 54;
+    PartialRequired opt_ext_partial = 55;
+
+    repeated string rpt_ext_string = 61;
+    repeated Enum rpt_ext_enum = 62;
+    repeated Nested rpt_ext_nested = 63;
+  }
+}
+
+// Following messages are for testing MessageSet.
+
+message MessageSet {
+  option message_set_wire_format = true;
+
+  extensions 4 to max;
+}
+
+message MessageSetExtension {
+  string opt_string = 1;
+
+  extend MessageSet {
+    MessageSetExtension message_set_extension = 10;
+    MessageSetExtension not_message_set_extension = 20;
+    Nested ext_nested = 30;
+  }
+}
+
+message FakeMessageSet {
+  extensions 4 to max;
+}
+
+message FakeMessageSetExtension {
+  string opt_string = 1;
+
+  extend FakeMessageSet {
+    FakeMessageSetExtension message_set_extension = 10;
+  }
+}
+
+extend MessageSet {
+  FakeMessageSetExtension message_set_extension = 50;
+}
+
+// Message contains well-known type fields.
+message KnownTypes {
+  google.protobuf.BoolValue opt_bool = 1;
+  google.protobuf.Int32Value opt_int32 = 2;
+  google.protobuf.Int64Value opt_int64 = 3;
+  google.protobuf.UInt32Value opt_uint32 = 4;
+  google.protobuf.UInt64Value opt_uint64 = 5;
+  google.protobuf.FloatValue opt_float = 6;
+  google.protobuf.DoubleValue opt_double = 7;
+  google.protobuf.StringValue opt_string = 8;
+  google.protobuf.BytesValue opt_bytes = 9;
+
+  google.protobuf.Duration opt_duration = 20;
+  google.protobuf.Timestamp opt_timestamp = 21;
+
+  google.protobuf.Struct opt_struct = 25;
+  google.protobuf.ListValue opt_list = 26;
+  google.protobuf.Value opt_value = 27;
+  google.protobuf.NullValue opt_null = 28;
+
+  google.protobuf.Empty opt_empty = 30;
+  google.protobuf.Any opt_any = 32;
+
+  google.protobuf.FieldMask opt_fieldmask = 40;
+}
\ No newline at end of file
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index 8d65e16..a551e7a 100644
--- a/types/descriptorpb/descriptor.pb.go
+++ b/types/descriptorpb/descriptor.pb.go
@@ -1205,12 +1205,11 @@
 // The protocol compiler can output a FileDescriptorSet containing the .proto
 // files it parses.
 type FileDescriptorSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	File            []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
 	extensionFields protoimpl.ExtensionFields
-
-	File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *FileDescriptorSet) Reset() {
@@ -1252,12 +1251,9 @@
 
 // Describes a complete .proto file.
 type FileDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`       // file name, relative to root of source tree
-	Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc.
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Name    *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`       // file name, relative to root of source tree
+	Package *string                `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc.
 	// Names of files imported by this file.
 	Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"`
 	// Indexes of the public imported files in the dependency list above.
@@ -1282,7 +1278,9 @@
 	// If `edition` is present, this value must be "editions".
 	Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"`
 	// The edition of the proto file.
-	Edition *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
+	Edition       *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FileDescriptorProto) Reset() {
@@ -1408,10 +1406,7 @@
 
 // Describes a message type.
 type DescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state          protoimpl.MessageState            `protogen:"open.v1"`
 	Name           *string                           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	Field          []*FieldDescriptorProto           `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
 	Extension      []*FieldDescriptorProto           `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"`
@@ -1423,7 +1418,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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *DescriptorProto) Reset() {
@@ -1527,11 +1524,7 @@
 }
 
 type ExtensionRangeOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
 	// For external users: DO NOT USE. We are in the process of open sourcing
@@ -1543,7 +1536,10 @@
 	// The verification state of the range.
 	// TODO: flip the default to DECLARATION once all empty ranges
 	// are marked as UNVERIFIED.
-	Verification *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"`
+	Verification    *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 // Default values for ExtensionRangeOptions fields.
@@ -1611,10 +1607,7 @@
 
 // Describes a field within a message.
 type FieldDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state  protoimpl.MessageState      `protogen:"open.v1"`
 	Name   *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	Number *int32                      `protobuf:"varint,3,opt,name=number" json:"number,omitempty"`
 	Label  *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"`
@@ -1666,6 +1659,8 @@
 	// Proto2 optional fields do not set this flag, because they already indicate
 	// optional with `LABEL_OPTIONAL`.
 	Proto3Optional *bool `protobuf:"varint,17,opt,name=proto3_optional,json=proto3Optional" json:"proto3_optional,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *FieldDescriptorProto) Reset() {
@@ -1777,12 +1772,11 @@
 
 // Describes a oneof.
 type OneofDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Options       *OneofOptions          `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Name    *string       `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *OneofDescriptorProto) Reset() {
@@ -1831,10 +1825,7 @@
 
 // Describes an enum type.
 type EnumDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state   protoimpl.MessageState      `protogen:"open.v1"`
 	Name    *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	Value   []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
 	Options *EnumOptions                `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
@@ -1844,7 +1835,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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumDescriptorProto) Reset() {
@@ -1914,13 +1907,12 @@
 
 // Describes a value within an enum.
 type EnumValueDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Number        *int32                 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
+	Options       *EnumValueOptions      `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Name    *string           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Number  *int32            `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
-	Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumValueDescriptorProto) Reset() {
@@ -1976,13 +1968,12 @@
 
 // Describes a service.
 type ServiceDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	Name          *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Method        []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
+	Options       *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Name    *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Method  []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
-	Options *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ServiceDescriptorProto) Reset() {
@@ -2038,11 +2029,8 @@
 
 // Describes a method of a service.
 type MethodDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Name  *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// Input and output type names.  These are resolved in the same way as
 	// FieldDescriptorProto.type_name, but must refer to a message type.
 	InputType  *string        `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
@@ -2052,6 +2040,8 @@
 	ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"`
 	// Identifies if server streams multiple server messages
 	ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 // Default values for MethodDescriptorProto fields.
@@ -2133,11 +2123,7 @@
 }
 
 type FileOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Sets the Java package where classes generated from this .proto will be
 	// placed.  By default, the proto package is used, but this is often
 	// inappropriate because proto packages do not normally start with backwards
@@ -2229,6 +2215,9 @@
 	// The parser stores options it doesn't recognize here.
 	// See the documentation for the "Options" section above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for FileOptions fields.
@@ -2422,11 +2411,7 @@
 }
 
 type MessageOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Set true to use the old proto1 MessageSet wire format for extensions.
 	// This is provided for backwards-compatibility with the MessageSet wire
 	// format.  You should not use this for any other reason:  It's less
@@ -2499,6 +2484,9 @@
 	Features *FeatureSet `protobuf:"bytes,12,opt,name=features" json:"features,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for MessageOptions fields.
@@ -2589,11 +2577,7 @@
 }
 
 type FieldOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
 	// The ctype option instructs the C++ code generator to use a different
 	// representation of the field than it normally would.  See the specific
@@ -2667,6 +2651,9 @@
 	FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,22,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for FieldOptions fields.
@@ -2809,15 +2796,14 @@
 }
 
 type OneofOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Any features defined in the specific edition.
 	Features *FeatureSet `protobuf:"bytes,1,opt,name=features" json:"features,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 func (x *OneofOptions) Reset() {
@@ -2865,11 +2851,7 @@
 }
 
 type EnumOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Set this option to true to allow mapping different tag names to the same
 	// value.
 	AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"`
@@ -2891,6 +2873,9 @@
 	Features *FeatureSet `protobuf:"bytes,7,opt,name=features" json:"features,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for EnumOptions fields.
@@ -2965,11 +2950,7 @@
 }
 
 type EnumValueOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Is this enum value deprecated?
 	// Depending on the target platform, this can emit Deprecated annotations
 	// for the enum value, or it will be completely ignored; in the very least,
@@ -2985,6 +2966,9 @@
 	FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,4,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for EnumValueOptions fields.
@@ -3059,11 +3043,7 @@
 }
 
 type ServiceOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Any features defined in the specific edition.
 	Features *FeatureSet `protobuf:"bytes,34,opt,name=features" json:"features,omitempty"`
 	// Is this service deprecated?
@@ -3073,6 +3053,9 @@
 	Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for ServiceOptions fields.
@@ -3132,11 +3115,7 @@
 }
 
 type MethodOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Is this method deprecated?
 	// Depending on the target platform, this can emit Deprecated annotations
 	// for the method, or it will be completely ignored; in the very least,
@@ -3147,6 +3126,9 @@
 	Features *FeatureSet `protobuf:"bytes,35,opt,name=features" json:"features,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
 	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	extensionFields     protoimpl.ExtensionFields
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
 // Default values for MethodOptions fields.
@@ -3220,11 +3202,8 @@
 // or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
 // in them.
 type UninterpretedOption struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
+	state protoimpl.MessageState          `protogen:"open.v1"`
+	Name  []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
 	// The value of the uninterpreted option, in whatever type the tokenizer
 	// identified it as during parsing. Exactly one of these should be set.
 	IdentifierValue  *string  `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"`
@@ -3233,6 +3212,8 @@
 	DoubleValue      *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
 	StringValue      []byte   `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
 	AggregateValue   *string  `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
 func (x *UninterpretedOption) Reset() {
@@ -3321,17 +3302,16 @@
 // be designed and implemented to handle this, hopefully before we ever hit a
 // conflict here.
 type FeatureSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	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"`
+	extensionFields       protoimpl.ExtensionFields
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
 func (x *FeatureSet) Reset() {
@@ -3411,10 +3391,7 @@
 // feature resolution. The resolution with this object becomes a simple search
 // for the closest matching edition, followed by proto merges.
 type FeatureSetDefaults struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state    protoimpl.MessageState                         `protogen:"open.v1"`
 	Defaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:"bytes,1,rep,name=defaults" json:"defaults,omitempty"`
 	// The minimum supported edition (inclusive) when this was constructed.
 	// Editions before this will not have defaults.
@@ -3422,6 +3399,8 @@
 	// The maximum known edition (inclusive) when this was constructed. Editions
 	// after this will not have reliable defaults.
 	MaximumEdition *Edition `protobuf:"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition" json:"maximum_edition,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *FeatureSetDefaults) Reset() {
@@ -3478,11 +3457,7 @@
 // Encapsulates information about the original source file from which a
 // FileDescriptorProto was generated.
 type SourceCodeInfo struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// A Location identifies a piece of source code in a .proto file which
 	// corresponds to a particular definition.  This information is intended
 	// to be useful to IDEs, code indexers, documentation generators, and similar
@@ -3531,7 +3506,10 @@
 	//   - Code which tries to interpret locations should probably be designed to
 	//     ignore those that it doesn't understand, as more types of locations could
 	//     be recorded in the future.
-	Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
+	Location        []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
+	extensionFields protoimpl.ExtensionFields
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *SourceCodeInfo) Reset() {
@@ -3575,13 +3553,12 @@
 // file. A GeneratedCodeInfo message is associated with only one generated
 // source file, but may contain references to different source .proto files.
 type GeneratedCodeInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// An Annotation connects some span of text in generated code to an element
 	// of its generating .proto file.
-	Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
+	Annotation    []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GeneratedCodeInfo) Reset() {
@@ -3622,13 +3599,12 @@
 }
 
 type DescriptorProto_ExtensionRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
+	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
+	Options       *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Start   *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End     *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
-	Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *DescriptorProto_ExtensionRange) Reset() {
@@ -3686,12 +3662,11 @@
 // fields or extension ranges in the same message. Reserved ranges may
 // not overlap.
 type DescriptorProto_ReservedRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
+	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
 	unknownFields protoimpl.UnknownFields
-
-	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *DescriptorProto_ReservedRange) Reset() {
@@ -3739,10 +3714,7 @@
 }
 
 type ExtensionRangeOptions_Declaration struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The extension number declared within the extension range.
 	Number *int32 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"`
 	// The fully-qualified name of the extension field. There must be a leading
@@ -3758,7 +3730,9 @@
 	Reserved *bool `protobuf:"varint,5,opt,name=reserved" json:"reserved,omitempty"`
 	// If true, indicates that the extension must be defined as repeated.
 	// Otherwise the extension must be defined as optional.
-	Repeated *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"`
+	Repeated      *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *ExtensionRangeOptions_Declaration) Reset() {
@@ -3833,12 +3807,11 @@
 // is inclusive such that it can appropriately represent the entire int32
 // domain.
 type EnumDescriptorProto_EnumReservedRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
+	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Inclusive.
 	unknownFields protoimpl.UnknownFields
-
-	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Inclusive.
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumDescriptorProto_EnumReservedRange) Reset() {
@@ -3886,12 +3859,11 @@
 }
 
 type FieldOptions_EditionDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Edition       *Edition               `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
+	Value         *string                `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value.
 	unknownFields protoimpl.UnknownFields
-
-	Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
-	Value   *string  `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value.
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FieldOptions_EditionDefault) Reset() {
@@ -3940,10 +3912,7 @@
 
 // Information about the support window of a feature.
 type FieldOptions_FeatureSupport struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The edition that this feature was first available in.  In editions
 	// earlier than this one, the default assigned to EDITION_LEGACY will be
 	// used, and proto files will not be able to override it.
@@ -3958,6 +3927,8 @@
 	// this one, the last default assigned will be used, and proto files will
 	// not be able to override it.
 	EditionRemoved *Edition `protobuf:"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition" json:"edition_removed,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *FieldOptions_FeatureSupport) Reset() {
@@ -4024,12 +3995,11 @@
 // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
 // "foo.(bar.baz).moo".
 type UninterpretedOption_NamePart struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	NamePart      *string                `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
+	IsExtension   *bool                  `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	NamePart    *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
-	IsExtension *bool   `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UninterpretedOption_NamePart) Reset() {
@@ -4081,15 +4051,14 @@
 // the defaults at the closest matching edition ordered at or before it should
 // be used.  This field must be in strict ascending order by edition.
 type FeatureSetDefaults_FeatureSetEditionDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Edition *Edition               `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
 	// Defaults of features that can be overridden in this edition.
 	OverridableFeatures *FeatureSet `protobuf:"bytes,4,opt,name=overridable_features,json=overridableFeatures" json:"overridable_features,omitempty"`
 	// Defaults of features that can't be overridden in this edition.
 	FixedFeatures *FeatureSet `protobuf:"bytes,5,opt,name=fixed_features,json=fixedFeatures" json:"fixed_features,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() {
@@ -4144,10 +4113,7 @@
 }
 
 type SourceCodeInfo_Location struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Identifies which part of the FileDescriptorProto was defined at this
 	// location.
 	//
@@ -4239,6 +4205,8 @@
 	LeadingComments         *string  `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"`
 	TrailingComments        *string  `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"`
 	LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
 func (x *SourceCodeInfo_Location) Reset() {
@@ -4307,10 +4275,7 @@
 }
 
 type GeneratedCodeInfo_Annotation struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Identifies the element in the original source .proto file. This field
 	// is formatted the same as SourceCodeInfo.Location.path.
 	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
@@ -4322,8 +4287,10 @@
 	// Identifies the ending offset in bytes in the generated code that
 	// relates to the identified object. The end offset should be one past
 	// the last relevant byte (so the length of the text = end - begin).
-	End      *int32                                 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
-	Semantic *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"`
+	End           *int32                                 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
+	Semantic      *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GeneratedCodeInfo_Annotation) Reset() {
diff --git a/types/known/anypb/any.pb.go b/types/known/anypb/any.pb.go
index 87da199..191552c 100644
--- a/types/known/anypb/any.pb.go
+++ b/types/known/anypb/any.pb.go
@@ -210,10 +210,7 @@
 //	  "value": "1.212s"
 //	}
 type Any struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// A URL/resource name that uniquely identifies the type of the serialized
 	// protocol buffer message. This string must contain at least
 	// one "/" character. The last segment of the URL's path must represent
@@ -244,7 +241,9 @@
 	// used with implementation specific semantics.
 	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
 	// Must be a valid serialized protocol buffer of the above specified type.
-	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	Value         []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // New marshals src into a new Any instance.
diff --git a/types/known/apipb/api.pb.go b/types/known/apipb/api.pb.go
index 575685e..4d9c6e9 100644
--- a/types/known/apipb/api.pb.go
+++ b/types/known/apipb/api.pb.go
@@ -52,10 +52,7 @@
 // this message itself. See https://cloud.google.com/apis/design/glossary for
 // detailed terminology.
 type Api struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The fully qualified name of this interface, including package name
 	// followed by the interface's simple name.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -89,7 +86,9 @@
 	// Included interfaces. See [Mixin][].
 	Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins,proto3" json:"mixins,omitempty"`
 	// The source syntax of the service.
-	Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
+	Syntax        typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Api) Reset() {
@@ -173,10 +172,7 @@
 
 // Method represents a method of an API interface.
 type Method struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The simple name of this method.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// A URL of the input message type.
@@ -190,7 +186,9 @@
 	// Any metadata attached to the method.
 	Options []*typepb.Option `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"`
 	// The source syntax of this method.
-	Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
+	Syntax        typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Method) Reset() {
@@ -351,15 +349,14 @@
 //	  ...
 //	}
 type Mixin struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The fully qualified name of the interface which is included.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// If non-empty specifies a path under which inherited HTTP paths
 	// are rooted.
-	Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
+	Root          string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Mixin) Reset() {
diff --git a/types/known/durationpb/duration.pb.go b/types/known/durationpb/duration.pb.go
index b99d4d2..34d76e6 100644
--- a/types/known/durationpb/duration.pb.go
+++ b/types/known/durationpb/duration.pb.go
@@ -141,10 +141,7 @@
 // be expressed in JSON format as "3.000000001s", and 3 seconds and 1
 // microsecond should be expressed in JSON format as "3.000001s".
 type Duration struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Signed seconds of the span of time. Must be from -315,576,000,000
 	// to +315,576,000,000 inclusive. Note: these bounds are computed from:
 	// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
@@ -155,7 +152,9 @@
 	// of one second or more, a non-zero value for the `nanos` field must be
 	// of the same sign as the `seconds` field. Must be from -999,999,999
 	// to +999,999,999 inclusive.
-	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // New constructs a new Duration from the provided time.Duration.
diff --git a/types/known/emptypb/empty.pb.go b/types/known/emptypb/empty.pb.go
index 1761bc9..7fcdd38 100644
--- a/types/known/emptypb/empty.pb.go
+++ b/types/known/emptypb/empty.pb.go
@@ -48,9 +48,9 @@
 //	  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
 //	}
 type Empty struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Empty) Reset() {
diff --git a/types/known/fieldmaskpb/field_mask.pb.go b/types/known/fieldmaskpb/field_mask.pb.go
index 19de8d3..e5d7da3 100644
--- a/types/known/fieldmaskpb/field_mask.pb.go
+++ b/types/known/fieldmaskpb/field_mask.pb.go
@@ -284,12 +284,11 @@
 // request should verify the included field paths, and return an
 // `INVALID_ARGUMENT` error if any path is unmappable.
 type FieldMask struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The set of field mask paths.
-	Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
+	Paths         []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // New constructs a field mask from a list of paths and verifies that
diff --git a/types/known/sourcecontextpb/source_context.pb.go b/types/known/sourcecontextpb/source_context.pb.go
index 4d15e97..d05e5fa 100644
--- a/types/known/sourcecontextpb/source_context.pb.go
+++ b/types/known/sourcecontextpb/source_context.pb.go
@@ -43,13 +43,12 @@
 // `SourceContext` represents information about the source of a
 // protobuf element, like the file in which it is defined.
 type SourceContext struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The path-qualified name of the .proto file that contained the associated
 	// protobuf element.  For example: `"google/protobuf/source_context.proto"`.
-	FileName string `protobuf:"bytes,1,opt,name=file_name,json=fileName,proto3" json:"file_name,omitempty"`
+	FileName      string `protobuf:"bytes,1,opt,name=file_name,json=fileName,proto3" json:"file_name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *SourceContext) Reset() {
diff --git a/types/known/structpb/struct.pb.go b/types/known/structpb/struct.pb.go
index 8f206a6..f2c53ea 100644
--- a/types/known/structpb/struct.pb.go
+++ b/types/known/structpb/struct.pb.go
@@ -187,12 +187,11 @@
 //
 // The JSON representation for `Struct` is JSON object.
 type Struct struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unordered map of dynamically typed values.
-	Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Fields        map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // NewStruct constructs a Struct from a general-purpose Go map.
@@ -276,13 +275,10 @@
 //
 // The JSON representation for `Value` is JSON value.
 type Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The kind of value.
 	//
-	// Types that are assignable to Kind:
+	// Types that are valid to be assigned to Kind:
 	//
 	//	*Value_NullValue
 	//	*Value_NumberValue
@@ -290,7 +286,9 @@
 	//	*Value_BoolValue
 	//	*Value_StructValue
 	//	*Value_ListValue
-	Kind isValue_Kind `protobuf_oneof:"kind"`
+	Kind          isValue_Kind `protobuf_oneof:"kind"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // NewValue constructs a Value from a general-purpose Go interface.
@@ -483,51 +481,63 @@
 	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Value) GetKind() isValue_Kind {
-	if m != nil {
-		return m.Kind
+func (x *Value) GetKind() isValue_Kind {
+	if x != nil {
+		return x.Kind
 	}
 	return nil
 }
 
 func (x *Value) GetNullValue() NullValue {
-	if x, ok := x.GetKind().(*Value_NullValue); ok {
-		return x.NullValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_NullValue); ok {
+			return x.NullValue
+		}
 	}
 	return NullValue_NULL_VALUE
 }
 
 func (x *Value) GetNumberValue() float64 {
-	if x, ok := x.GetKind().(*Value_NumberValue); ok {
-		return x.NumberValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_NumberValue); ok {
+			return x.NumberValue
+		}
 	}
 	return 0
 }
 
 func (x *Value) GetStringValue() string {
-	if x, ok := x.GetKind().(*Value_StringValue); ok {
-		return x.StringValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_StringValue); ok {
+			return x.StringValue
+		}
 	}
 	return ""
 }
 
 func (x *Value) GetBoolValue() bool {
-	if x, ok := x.GetKind().(*Value_BoolValue); ok {
-		return x.BoolValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_BoolValue); ok {
+			return x.BoolValue
+		}
 	}
 	return false
 }
 
 func (x *Value) GetStructValue() *Struct {
-	if x, ok := x.GetKind().(*Value_StructValue); ok {
-		return x.StructValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_StructValue); ok {
+			return x.StructValue
+		}
 	}
 	return nil
 }
 
 func (x *Value) GetListValue() *ListValue {
-	if x, ok := x.GetKind().(*Value_ListValue); ok {
-		return x.ListValue
+	if x != nil {
+		if x, ok := x.Kind.(*Value_ListValue); ok {
+			return x.ListValue
+		}
 	}
 	return nil
 }
@@ -582,12 +592,11 @@
 //
 // The JSON representation for `ListValue` is JSON array.
 type ListValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Repeated field of dynamically typed values.
-	Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
+	Values        []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // NewList constructs a ListValue from a general-purpose Go slice.
diff --git a/types/known/timestamppb/timestamp.pb.go b/types/known/timestamppb/timestamp.pb.go
index 0d20722..9550109 100644
--- a/types/known/timestamppb/timestamp.pb.go
+++ b/types/known/timestamppb/timestamp.pb.go
@@ -170,10 +170,7 @@
 // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
 // ) to obtain a formatter capable of generating timestamps in this format.
 type Timestamp struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Represents seconds of UTC time since Unix epoch
 	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
 	// 9999-12-31T23:59:59Z inclusive.
@@ -182,7 +179,9 @@
 	// second values with fractions must still have non-negative nanos values
 	// that count forward in time. Must be from 0 to 999,999,999
 	// inclusive.
-	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Now constructs a new Timestamp from the current time.
diff --git a/types/known/typepb/type.pb.go b/types/known/typepb/type.pb.go
index f0ca52a..c0f69a7 100644
--- a/types/known/typepb/type.pb.go
+++ b/types/known/typepb/type.pb.go
@@ -271,10 +271,7 @@
 
 // A protocol buffer message type.
 type Type struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The fully qualified message name.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The list of fields.
@@ -288,7 +285,9 @@
 	// The source syntax.
 	Syntax Syntax `protobuf:"varint,6,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
 	// The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-	Edition string `protobuf:"bytes,7,opt,name=edition,proto3" json:"edition,omitempty"`
+	Edition       string `protobuf:"bytes,7,opt,name=edition,proto3" json:"edition,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Type) Reset() {
@@ -372,10 +371,7 @@
 
 // A single field of a message type.
 type Field struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The field type.
 	Kind Field_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=google.protobuf.Field_Kind" json:"kind,omitempty"`
 	// The field cardinality.
@@ -397,7 +393,9 @@
 	// The field JSON name.
 	JsonName string `protobuf:"bytes,10,opt,name=json_name,json=jsonName,proto3" json:"json_name,omitempty"`
 	// The string value of the default value of this field. Proto2 syntax only.
-	DefaultValue string `protobuf:"bytes,11,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
+	DefaultValue  string `protobuf:"bytes,11,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Field) Reset() {
@@ -502,10 +500,7 @@
 
 // Enum type definition.
 type Enum struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Enum type name.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Enum value definitions.
@@ -517,7 +512,9 @@
 	// The source syntax.
 	Syntax Syntax `protobuf:"varint,5,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
 	// The source edition string, only valid when syntax is SYNTAX_EDITIONS.
-	Edition string `protobuf:"bytes,6,opt,name=edition,proto3" json:"edition,omitempty"`
+	Edition       string `protobuf:"bytes,6,opt,name=edition,proto3" json:"edition,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Enum) Reset() {
@@ -594,16 +591,15 @@
 
 // Enum value definition.
 type EnumValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Enum value name.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Enum value number.
 	Number int32 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
 	// Protocol buffer options.
-	Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"`
+	Options       []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *EnumValue) Reset() {
@@ -660,10 +656,7 @@
 // A protocol buffer option, which can be attached to a message, field,
 // enumeration, etc.
 type Option struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The option's name. For protobuf built-in options (options defined in
 	// descriptor.proto), this is the short name. For example, `"map_entry"`.
 	// For custom options, it should be the fully-qualified name. For example,
@@ -673,7 +666,9 @@
 	// the corresponding wrapper type defined in google/protobuf/wrappers.proto
 	// should be used. If the value is an enum, it should be stored as an int32
 	// value using the google.protobuf.Int32Value type.
-	Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	Value         *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Option) Reset() {
diff --git a/types/known/wrapperspb/wrappers.pb.go b/types/known/wrapperspb/wrappers.pb.go
index 006060e..15b424e 100644
--- a/types/known/wrapperspb/wrappers.pb.go
+++ b/types/known/wrapperspb/wrappers.pb.go
@@ -54,12 +54,11 @@
 //
 // The JSON representation for `DoubleValue` is JSON number.
 type DoubleValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The double value.
-	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Double stores v in a new DoubleValue and returns a pointer to it.
@@ -108,12 +107,11 @@
 //
 // The JSON representation for `FloatValue` is JSON number.
 type FloatValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The float value.
-	Value float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Float stores v in a new FloatValue and returns a pointer to it.
@@ -162,12 +160,11 @@
 //
 // The JSON representation for `Int64Value` is JSON string.
 type Int64Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The int64 value.
-	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Int64 stores v in a new Int64Value and returns a pointer to it.
@@ -216,12 +213,11 @@
 //
 // The JSON representation for `UInt64Value` is JSON string.
 type UInt64Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The uint64 value.
-	Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // UInt64 stores v in a new UInt64Value and returns a pointer to it.
@@ -270,12 +266,11 @@
 //
 // The JSON representation for `Int32Value` is JSON number.
 type Int32Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The int32 value.
-	Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Int32 stores v in a new Int32Value and returns a pointer to it.
@@ -324,12 +319,11 @@
 //
 // The JSON representation for `UInt32Value` is JSON number.
 type UInt32Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The uint32 value.
-	Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // UInt32 stores v in a new UInt32Value and returns a pointer to it.
@@ -378,12 +372,11 @@
 //
 // The JSON representation for `BoolValue` is JSON `true` and `false`.
 type BoolValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The bool value.
-	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Bool stores v in a new BoolValue and returns a pointer to it.
@@ -432,12 +425,11 @@
 //
 // The JSON representation for `StringValue` is JSON string.
 type StringValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The string value.
-	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // String stores v in a new StringValue and returns a pointer to it.
@@ -486,12 +478,11 @@
 //
 // The JSON representation for `BytesValue` is JSON string.
 type BytesValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The bytes value.
-	Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	Value         []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 // Bytes stores v in a new BytesValue and returns a pointer to it.
diff --git a/types/pluginpb/plugin.pb.go b/types/pluginpb/plugin.pb.go
index c6d90ca..a8f6898 100644
--- a/types/pluginpb/plugin.pb.go
+++ b/types/pluginpb/plugin.pb.go
@@ -93,16 +93,15 @@
 
 // The version number of protocol compiler.
 type Version struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
-	Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
-	Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Major *int32                 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
+	Minor *int32                 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
+	Patch *int32                 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
 	// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
 	// be empty for mainline stable releases.
-	Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
+	Suffix        *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Version) Reset() {
@@ -165,10 +164,7 @@
 
 // An encoded CodeGeneratorRequest is written to the plugin's stdin.
 type CodeGeneratorRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The .proto files that were explicitly listed on the command-line.  The
 	// code generator should generate code only for these files.  Each file's
 	// descriptor will be included in proto_file, below.
@@ -201,6 +197,8 @@
 	SourceFileDescriptors []*descriptorpb.FileDescriptorProto `protobuf:"bytes,17,rep,name=source_file_descriptors,json=sourceFileDescriptors" json:"source_file_descriptors,omitempty"`
 	// The version number of protocol compiler.
 	CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
 func (x *CodeGeneratorRequest) Reset() {
@@ -270,10 +268,7 @@
 
 // The plugin writes an encoded CodeGeneratorResponse to stdout.
 type CodeGeneratorResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Error message.  If non-empty, code generation failed.  The plugin process
 	// should exit with status code zero even if it reports an error in this way.
 	//
@@ -297,6 +292,8 @@
 	// effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.
 	MaximumEdition *int32                        `protobuf:"varint,4,opt,name=maximum_edition,json=maximumEdition" json:"maximum_edition,omitempty"`
 	File           []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
 func (x *CodeGeneratorResponse) Reset() {
@@ -366,10 +363,7 @@
 
 // Represents a single generated file.
 type CodeGeneratorResponse_File struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The file name, relative to the output directory.  The name must not
 	// contain "." or ".." components and must be relative, not be absolute (so,
 	// the file cannot lie outside the output directory).  "/" must be used as
@@ -430,6 +424,8 @@
 	// point is used, this information will be appropriately offset and inserted
 	// into the code generation metadata for the generated files.
 	GeneratedCodeInfo *descriptorpb.GeneratedCodeInfo `protobuf:"bytes,16,opt,name=generated_code_info,json=generatedCodeInfo" json:"generated_code_info,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
 func (x *CodeGeneratorResponse_File) Reset() {
