all: regenerate.bash for Opaque API

For golang/protobuf#1657

Change-Id: I8081e04050a38b0cb1b48ad674b683de61d36770
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/634816
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
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() {