regenerate proto3test files (./regenerate.bash)

This is required for the previous commit (1eca8c0a65).

Unfortunately, copybara (the tool we use to export this repository)
does not currently support re-generating .pb.go files for us.

Change-Id: Ie02d0a731b0702132ae01a8e7276314eb012db2b
Reviewed-on: https://go-review.googlesource.com/c/open2opaque/+/652295
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Chressie Himpel <chressie@google.com>
diff --git a/internal/fix/testdata/proto3test_go_proto/proto3test.pb.go b/internal/fix/testdata/proto3test_go_proto/proto3test.pb.go
index 95d9148..670e281 100644
--- a/internal/fix/testdata/proto3test_go_proto/proto3test.pb.go
+++ b/internal/fix/testdata/proto3test_go_proto/proto3test.pb.go
@@ -91,8 +91,20 @@
 	//	*M3_Reset_
 	//	*M3_String_
 	//	*M3_Descriptor_
-	OneofField    isM3_OneofField `protobuf_oneof:"oneof_field"`
-	SecondI32     int32           `protobuf:"varint,30,opt,name=second_i32,json=secondI32,proto3" json:"second_i32,omitempty"`
+	OneofField isM3_OneofField `protobuf_oneof:"oneof_field"`
+	SecondI32  int32           `protobuf:"varint,30,opt,name=second_i32,json=secondI32,proto3" json:"second_i32,omitempty"`
+	OptB       *bool           `protobuf:"varint,31,opt,name=opt_b,json=optB,proto3,oneof" json:"opt_b,omitempty"`
+	OptBytes   []byte          `protobuf:"bytes,32,opt,name=opt_bytes,json=optBytes,proto3,oneof" json:"opt_bytes,omitempty"`
+	OptF32     *float32        `protobuf:"fixed32,33,opt,name=opt_f32,json=optF32,proto3,oneof" json:"opt_f32,omitempty"`
+	OptF64     *float64        `protobuf:"fixed64,34,opt,name=opt_f64,json=optF64,proto3,oneof" json:"opt_f64,omitempty"`
+	OptI32     *int32          `protobuf:"varint,35,opt,name=opt_i32,json=optI32,proto3,oneof" json:"opt_i32,omitempty"`
+	OptI64     *int64          `protobuf:"varint,36,opt,name=opt_i64,json=optI64,proto3,oneof" json:"opt_i64,omitempty"`
+	OptUi32    *uint32         `protobuf:"varint,37,opt,name=opt_ui32,json=optUi32,proto3,oneof" json:"opt_ui32,omitempty"`
+	OptUi64    *uint64         `protobuf:"varint,38,opt,name=opt_ui64,json=optUi64,proto3,oneof" json:"opt_ui64,omitempty"`
+	OptS       *string         `protobuf:"bytes,39,opt,name=opt_s,json=optS,proto3,oneof" json:"opt_s,omitempty"`
+	OptM       *M3             `protobuf:"bytes,40,opt,name=opt_m,json=optM,proto3,oneof" json:"opt_m,omitempty"`
+	// Repeated fields and maps cannot be optional.
+	OptE          *M3_Enum `protobuf:"varint,41,opt,name=opt_e,json=optE,proto3,enum=net.proto2.go.open2opaque.o2o.test3.M3_Enum,oneof" json:"opt_e,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -349,6 +361,83 @@
 	return 0
 }
 
+func (x *M3) GetOptB() bool {
+	if x != nil && x.OptB != nil {
+		return *x.OptB
+	}
+	return false
+}
+
+func (x *M3) GetOptBytes() []byte {
+	if x != nil {
+		return x.OptBytes
+	}
+	return nil
+}
+
+func (x *M3) GetOptF32() float32 {
+	if x != nil && x.OptF32 != nil {
+		return *x.OptF32
+	}
+	return 0
+}
+
+func (x *M3) GetOptF64() float64 {
+	if x != nil && x.OptF64 != nil {
+		return *x.OptF64
+	}
+	return 0
+}
+
+func (x *M3) GetOptI32() int32 {
+	if x != nil && x.OptI32 != nil {
+		return *x.OptI32
+	}
+	return 0
+}
+
+func (x *M3) GetOptI64() int64 {
+	if x != nil && x.OptI64 != nil {
+		return *x.OptI64
+	}
+	return 0
+}
+
+func (x *M3) GetOptUi32() uint32 {
+	if x != nil && x.OptUi32 != nil {
+		return *x.OptUi32
+	}
+	return 0
+}
+
+func (x *M3) GetOptUi64() uint64 {
+	if x != nil && x.OptUi64 != nil {
+		return *x.OptUi64
+	}
+	return 0
+}
+
+func (x *M3) GetOptS() string {
+	if x != nil && x.OptS != nil {
+		return *x.OptS
+	}
+	return ""
+}
+
+func (x *M3) GetOptM() *M3 {
+	if x != nil {
+		return x.OptM
+	}
+	return nil
+}
+
+func (x *M3) GetOptE() M3_Enum {
+	if x != nil && x.OptE != nil {
+		return *x.OptE
+	}
+	return M3_E_VAL
+}
+
 func (x *M3) SetB(v bool) {
 	x.B = v
 }
@@ -459,6 +548,53 @@
 	x.SecondI32 = v
 }
 
+func (x *M3) SetOptB(v bool) {
+	x.OptB = &v
+}
+
+func (x *M3) SetOptBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OptBytes = v
+}
+
+func (x *M3) SetOptF32(v float32) {
+	x.OptF32 = &v
+}
+
+func (x *M3) SetOptF64(v float64) {
+	x.OptF64 = &v
+}
+
+func (x *M3) SetOptI32(v int32) {
+	x.OptI32 = &v
+}
+
+func (x *M3) SetOptI64(v int64) {
+	x.OptI64 = &v
+}
+
+func (x *M3) SetOptUi32(v uint32) {
+	x.OptUi32 = &v
+}
+
+func (x *M3) SetOptUi64(v uint64) {
+	x.OptUi64 = &v
+}
+
+func (x *M3) SetOptS(v string) {
+	x.OptS = &v
+}
+
+func (x *M3) SetOptM(v *M3) {
+	x.OptM = v
+}
+
+func (x *M3) SetOptE(v M3_Enum) {
+	x.OptE = &v
+}
+
 func (x *M3) HasM() bool {
 	if x == nil {
 		return false
@@ -553,6 +689,83 @@
 	return ok
 }
 
+func (x *M3) HasOptB() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptB != nil
+}
+
+func (x *M3) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptBytes != nil
+}
+
+func (x *M3) HasOptF32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptF32 != nil
+}
+
+func (x *M3) HasOptF64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptF64 != nil
+}
+
+func (x *M3) HasOptI32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptI32 != nil
+}
+
+func (x *M3) HasOptI64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptI64 != nil
+}
+
+func (x *M3) HasOptUi32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUi32 != nil
+}
+
+func (x *M3) HasOptUi64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptUi64 != nil
+}
+
+func (x *M3) HasOptS() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptS != nil
+}
+
+func (x *M3) HasOptM() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptM != nil
+}
+
+func (x *M3) HasOptE() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptE != nil
+}
+
 func (x *M3) ClearM() {
 	x.M = nil
 }
@@ -621,6 +834,50 @@
 	}
 }
 
+func (x *M3) ClearOptB() {
+	x.OptB = nil
+}
+
+func (x *M3) ClearOptBytes() {
+	x.OptBytes = nil
+}
+
+func (x *M3) ClearOptF32() {
+	x.OptF32 = nil
+}
+
+func (x *M3) ClearOptF64() {
+	x.OptF64 = nil
+}
+
+func (x *M3) ClearOptI32() {
+	x.OptI32 = nil
+}
+
+func (x *M3) ClearOptI64() {
+	x.OptI64 = nil
+}
+
+func (x *M3) ClearOptUi32() {
+	x.OptUi32 = nil
+}
+
+func (x *M3) ClearOptUi64() {
+	x.OptUi64 = nil
+}
+
+func (x *M3) ClearOptS() {
+	x.OptS = nil
+}
+
+func (x *M3) ClearOptM() {
+	x.OptM = nil
+}
+
+func (x *M3) ClearOptE() {
+	x.OptE = nil
+}
+
 const M3_OneofField_not_set_case case_M3_OneofField = 0
 const M3_StringOneof_case case_M3_OneofField = 14
 const M3_IntOneof_case case_M3_OneofField = 15
@@ -693,6 +950,18 @@
 	Descriptor   *string
 	// -- end of OneofField
 	SecondI32 int32
+	OptB      *bool
+	OptBytes  []byte
+	OptF32    *float32
+	OptF64    *float64
+	OptI32    *int32
+	OptI64    *int64
+	OptUi32   *uint32
+	OptUi64   *uint64
+	OptS      *string
+	OptM      *M3
+	// Repeated fields and maps cannot be optional.
+	OptE *M3_Enum
 }
 
 func (b0 M3_builder) Build() *M3 {
@@ -744,6 +1013,17 @@
 		x.OneofField = &M3_Descriptor_{*b.Descriptor}
 	}
 	x.SecondI32 = b.SecondI32
+	x.OptB = b.OptB
+	x.OptBytes = b.OptBytes
+	x.OptF32 = b.OptF32
+	x.OptF64 = b.OptF64
+	x.OptI32 = b.OptI32
+	x.OptI64 = b.OptI64
+	x.OptUi32 = b.OptUi32
+	x.OptUi64 = b.OptUi64
+	x.OptS = b.OptS
+	x.OptM = b.OptM
+	x.OptE = b.OptE
 	return m0
 }
 
@@ -827,7 +1107,7 @@
 	0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x12, 0x23, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
 	0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0xb0, 0x07, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x0c,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0xc9, 0x0b, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x0c,
 	0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x01, 0x62, 0x12, 0x14, 0x0a, 0x05,
 	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74,
 	0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52,
@@ -881,13 +1161,46 @@
 	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
 	0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x69, 0x33, 0x32, 0x18,
 	0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x49, 0x33, 0x32,
-	0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x08, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x11, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x09, 0x0a, 0x05, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x10, 0x00, 0x42, 0x0d, 0x0a, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
+	0x12, 0x18, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x01, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x42, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6f, 0x70,
+	0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x02, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07,
+	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x33, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52,
+	0x06, 0x6f, 0x70, 0x74, 0x46, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70,
+	0x74, 0x5f, 0x66, 0x36, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x01, 0x48, 0x04, 0x52, 0x06, 0x6f,
+	0x70, 0x74, 0x46, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f,
+	0x69, 0x33, 0x32, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74,
+	0x49, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x36,
+	0x34, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x49, 0x36,
+	0x34, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x33, 0x32,
+	0x18, 0x25, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x33,
+	0x32, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x36, 0x34,
+	0x18, 0x26, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x36,
+	0x34, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x18, 0x27, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x53, 0x88, 0x01, 0x01, 0x12, 0x41,
+	0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x6f, 0x70,
+	0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x4d, 0x33, 0x48, 0x0a, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x4d, 0x88, 0x01,
+	0x01, 0x12, 0x46, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x2c, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x4d, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0b,
+	0x52, 0x04, 0x6f, 0x70, 0x74, 0x45, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70,
+	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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x22, 0x11, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x5f, 0x56,
+	0x41, 0x4c, 0x10, 0x00, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x42, 0x0c, 0x0a,
+	0x0a, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
+	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x33, 0x32, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f,
+	0x66, 0x36, 0x34, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x33, 0x32, 0x42,
+	0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x36, 0x34, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x33, 0x32, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x74,
+	0x5f, 0x75, 0x69, 0x36, 0x34, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x42,
+	0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70,
+	0x74, 0x5f, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var file_proto3test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
@@ -904,11 +1217,13 @@
 	0, // 3: net.proto2.go.open2opaque.o2o.test3.M3.e:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
 	1, // 4: net.proto2.go.open2opaque.o2o.test3.M3.msg_oneof:type_name -> net.proto2.go.open2opaque.o2o.test3.M3
 	0, // 5: net.proto2.go.open2opaque.o2o.test3.M3.enum_oneof:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
-	6, // [6:6] is the sub-list for method output_type
-	6, // [6:6] is the sub-list for method input_type
-	6, // [6:6] is the sub-list for extension type_name
-	6, // [6:6] is the sub-list for extension extendee
-	0, // [0:6] is the sub-list for field type_name
+	1, // 6: net.proto2.go.open2opaque.o2o.test3.M3.opt_m:type_name -> net.proto2.go.open2opaque.o2o.test3.M3
+	0, // 7: net.proto2.go.open2opaque.o2o.test3.M3.opt_e:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
+	8, // [8:8] is the sub-list for method output_type
+	8, // [8:8] is the sub-list for method input_type
+	8, // [8:8] is the sub-list for extension type_name
+	8, // [8:8] is the sub-list for extension extendee
+	0, // [0:8] is the sub-list for field type_name
 }
 
 func init() { file_proto3test_proto_init() }
diff --git a/internal/fix/testdata/proto3test_go_proto/proto3test_protoopaque.pb.go b/internal/fix/testdata/proto3test_go_proto/proto3test_protoopaque.pb.go
index fef9755..b4239a3 100644
--- a/internal/fix/testdata/proto3test_go_proto/proto3test_protoopaque.pb.go
+++ b/internal/fix/testdata/proto3test_go_proto/proto3test_protoopaque.pb.go
@@ -64,25 +64,38 @@
 }
 
 type M3 struct {
-	state                 protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_B          bool                   `protobuf:"varint,1,opt,name=b,proto3" json:"b,omitempty"`
-	xxx_hidden_Bytes      []byte                 `protobuf:"bytes,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
-	xxx_hidden_F32        float32                `protobuf:"fixed32,3,opt,name=f32,proto3" json:"f32,omitempty"`
-	xxx_hidden_F64        float64                `protobuf:"fixed64,4,opt,name=f64,proto3" json:"f64,omitempty"`
-	xxx_hidden_I32        int32                  `protobuf:"varint,5,opt,name=i32,proto3" json:"i32,omitempty"`
-	xxx_hidden_I64        int64                  `protobuf:"varint,6,opt,name=i64,proto3" json:"i64,omitempty"`
-	xxx_hidden_Ui32       uint32                 `protobuf:"varint,7,opt,name=ui32,proto3" json:"ui32,omitempty"`
-	xxx_hidden_Ui64       uint64                 `protobuf:"varint,8,opt,name=ui64,proto3" json:"ui64,omitempty"`
-	xxx_hidden_S          string                 `protobuf:"bytes,9,opt,name=s,proto3" json:"s,omitempty"`
-	xxx_hidden_M          *M3                    `protobuf:"bytes,10,opt,name=m,proto3" json:"m,omitempty"`
-	xxx_hidden_Is         []int32                `protobuf:"varint,11,rep,packed,name=is,proto3" json:"is,omitempty"`
-	xxx_hidden_Ms         *[]*M3                 `protobuf:"bytes,12,rep,name=ms,proto3" json:"ms,omitempty"`
-	xxx_hidden_Map        map[string]bool        `protobuf:"bytes,29,rep,name=map,proto3" json:"map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	xxx_hidden_E          M3_Enum                `protobuf:"varint,13,opt,name=e,proto3,enum=net.proto2.go.open2opaque.o2o.test3.M3_Enum" json:"e,omitempty"`
-	xxx_hidden_OneofField isM3_OneofField        `protobuf_oneof:"oneof_field"`
-	xxx_hidden_SecondI32  int32                  `protobuf:"varint,30,opt,name=second_i32,json=secondI32,proto3" json:"second_i32,omitempty"`
-	unknownFields         protoimpl.UnknownFields
-	sizeCache             protoimpl.SizeCache
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_B           bool                   `protobuf:"varint,1,opt,name=b,proto3" json:"b,omitempty"`
+	xxx_hidden_Bytes       []byte                 `protobuf:"bytes,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
+	xxx_hidden_F32         float32                `protobuf:"fixed32,3,opt,name=f32,proto3" json:"f32,omitempty"`
+	xxx_hidden_F64         float64                `protobuf:"fixed64,4,opt,name=f64,proto3" json:"f64,omitempty"`
+	xxx_hidden_I32         int32                  `protobuf:"varint,5,opt,name=i32,proto3" json:"i32,omitempty"`
+	xxx_hidden_I64         int64                  `protobuf:"varint,6,opt,name=i64,proto3" json:"i64,omitempty"`
+	xxx_hidden_Ui32        uint32                 `protobuf:"varint,7,opt,name=ui32,proto3" json:"ui32,omitempty"`
+	xxx_hidden_Ui64        uint64                 `protobuf:"varint,8,opt,name=ui64,proto3" json:"ui64,omitempty"`
+	xxx_hidden_S           string                 `protobuf:"bytes,9,opt,name=s,proto3" json:"s,omitempty"`
+	xxx_hidden_M           *M3                    `protobuf:"bytes,10,opt,name=m,proto3" json:"m,omitempty"`
+	xxx_hidden_Is          []int32                `protobuf:"varint,11,rep,packed,name=is,proto3" json:"is,omitempty"`
+	xxx_hidden_Ms          *[]*M3                 `protobuf:"bytes,12,rep,name=ms,proto3" json:"ms,omitempty"`
+	xxx_hidden_Map         map[string]bool        `protobuf:"bytes,29,rep,name=map,proto3" json:"map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_E           M3_Enum                `protobuf:"varint,13,opt,name=e,proto3,enum=net.proto2.go.open2opaque.o2o.test3.M3_Enum" json:"e,omitempty"`
+	xxx_hidden_OneofField  isM3_OneofField        `protobuf_oneof:"oneof_field"`
+	xxx_hidden_SecondI32   int32                  `protobuf:"varint,30,opt,name=second_i32,json=secondI32,proto3" json:"second_i32,omitempty"`
+	xxx_hidden_OptB        bool                   `protobuf:"varint,31,opt,name=opt_b,json=optB,proto3,oneof" json:"opt_b,omitempty"`
+	xxx_hidden_OptBytes    []byte                 `protobuf:"bytes,32,opt,name=opt_bytes,json=optBytes,proto3,oneof" json:"opt_bytes,omitempty"`
+	xxx_hidden_OptF32      float32                `protobuf:"fixed32,33,opt,name=opt_f32,json=optF32,proto3,oneof" json:"opt_f32,omitempty"`
+	xxx_hidden_OptF64      float64                `protobuf:"fixed64,34,opt,name=opt_f64,json=optF64,proto3,oneof" json:"opt_f64,omitempty"`
+	xxx_hidden_OptI32      int32                  `protobuf:"varint,35,opt,name=opt_i32,json=optI32,proto3,oneof" json:"opt_i32,omitempty"`
+	xxx_hidden_OptI64      int64                  `protobuf:"varint,36,opt,name=opt_i64,json=optI64,proto3,oneof" json:"opt_i64,omitempty"`
+	xxx_hidden_OptUi32     uint32                 `protobuf:"varint,37,opt,name=opt_ui32,json=optUi32,proto3,oneof" json:"opt_ui32,omitempty"`
+	xxx_hidden_OptUi64     uint64                 `protobuf:"varint,38,opt,name=opt_ui64,json=optUi64,proto3,oneof" json:"opt_ui64,omitempty"`
+	xxx_hidden_OptS        *string                `protobuf:"bytes,39,opt,name=opt_s,json=optS,proto3,oneof" json:"opt_s,omitempty"`
+	xxx_hidden_OptM        *M3                    `protobuf:"bytes,40,opt,name=opt_m,json=optM,proto3,oneof" json:"opt_m,omitempty"`
+	xxx_hidden_OptE        M3_Enum                `protobuf:"varint,41,opt,name=opt_e,json=optE,proto3,enum=net.proto2.go.open2opaque.o2o.test3.M3_Enum,oneof" json:"opt_e,omitempty"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
 func (x *M3) Reset() {
@@ -307,6 +320,88 @@
 	return 0
 }
 
+func (x *M3) GetOptB() bool {
+	if x != nil {
+		return x.xxx_hidden_OptB
+	}
+	return false
+}
+
+func (x *M3) GetOptBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_OptBytes
+	}
+	return nil
+}
+
+func (x *M3) GetOptF32() float32 {
+	if x != nil {
+		return x.xxx_hidden_OptF32
+	}
+	return 0
+}
+
+func (x *M3) GetOptF64() float64 {
+	if x != nil {
+		return x.xxx_hidden_OptF64
+	}
+	return 0
+}
+
+func (x *M3) GetOptI32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptI32
+	}
+	return 0
+}
+
+func (x *M3) GetOptI64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptI64
+	}
+	return 0
+}
+
+func (x *M3) GetOptUi32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptUi32
+	}
+	return 0
+}
+
+func (x *M3) GetOptUi64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptUi64
+	}
+	return 0
+}
+
+func (x *M3) GetOptS() string {
+	if x != nil {
+		if x.xxx_hidden_OptS != nil {
+			return *x.xxx_hidden_OptS
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M3) GetOptM() *M3 {
+	if x != nil {
+		return x.xxx_hidden_OptM
+	}
+	return nil
+}
+
+func (x *M3) GetOptE() M3_Enum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[0]), 26) {
+			return x.xxx_hidden_OptE
+		}
+	}
+	return M3_E_VAL
+}
+
 func (x *M3) SetB(v bool) {
 	x.xxx_hidden_B = v
 }
@@ -417,6 +512,63 @@
 	x.xxx_hidden_SecondI32 = v
 }
 
+func (x *M3) SetOptB(v bool) {
+	x.xxx_hidden_OptB = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 16, 27)
+}
+
+func (x *M3) SetOptBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OptBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 17, 27)
+}
+
+func (x *M3) SetOptF32(v float32) {
+	x.xxx_hidden_OptF32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 18, 27)
+}
+
+func (x *M3) SetOptF64(v float64) {
+	x.xxx_hidden_OptF64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 19, 27)
+}
+
+func (x *M3) SetOptI32(v int32) {
+	x.xxx_hidden_OptI32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 20, 27)
+}
+
+func (x *M3) SetOptI64(v int64) {
+	x.xxx_hidden_OptI64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 21, 27)
+}
+
+func (x *M3) SetOptUi32(v uint32) {
+	x.xxx_hidden_OptUi32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 22, 27)
+}
+
+func (x *M3) SetOptUi64(v uint64) {
+	x.xxx_hidden_OptUi64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 23, 27)
+}
+
+func (x *M3) SetOptS(v string) {
+	x.xxx_hidden_OptS = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 24, 27)
+}
+
+func (x *M3) SetOptM(v *M3) {
+	x.xxx_hidden_OptM = v
+}
+
+func (x *M3) SetOptE(v M3_Enum) {
+	x.xxx_hidden_OptE = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 26, 27)
+}
+
 func (x *M3) HasM() bool {
 	if x == nil {
 		return false
@@ -511,6 +663,83 @@
 	return ok
 }
 
+func (x *M3) HasOptB() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 16)
+}
+
+func (x *M3) HasOptBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 17)
+}
+
+func (x *M3) HasOptF32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 18)
+}
+
+func (x *M3) HasOptF64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 19)
+}
+
+func (x *M3) HasOptI32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 20)
+}
+
+func (x *M3) HasOptI64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 21)
+}
+
+func (x *M3) HasOptUi32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 22)
+}
+
+func (x *M3) HasOptUi64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 23)
+}
+
+func (x *M3) HasOptS() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 24)
+}
+
+func (x *M3) HasOptM() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptM != nil
+}
+
+func (x *M3) HasOptE() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 26)
+}
+
 func (x *M3) ClearM() {
 	x.xxx_hidden_M = nil
 }
@@ -579,6 +808,60 @@
 	}
 }
 
+func (x *M3) ClearOptB() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 16)
+	x.xxx_hidden_OptB = false
+}
+
+func (x *M3) ClearOptBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 17)
+	x.xxx_hidden_OptBytes = nil
+}
+
+func (x *M3) ClearOptF32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 18)
+	x.xxx_hidden_OptF32 = 0
+}
+
+func (x *M3) ClearOptF64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 19)
+	x.xxx_hidden_OptF64 = 0
+}
+
+func (x *M3) ClearOptI32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 20)
+	x.xxx_hidden_OptI32 = 0
+}
+
+func (x *M3) ClearOptI64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 21)
+	x.xxx_hidden_OptI64 = 0
+}
+
+func (x *M3) ClearOptUi32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 22)
+	x.xxx_hidden_OptUi32 = 0
+}
+
+func (x *M3) ClearOptUi64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 23)
+	x.xxx_hidden_OptUi64 = 0
+}
+
+func (x *M3) ClearOptS() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 24)
+	x.xxx_hidden_OptS = nil
+}
+
+func (x *M3) ClearOptM() {
+	x.xxx_hidden_OptM = nil
+}
+
+func (x *M3) ClearOptE() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 26)
+	x.xxx_hidden_OptE = M3_E_VAL
+}
+
 const M3_OneofField_not_set_case case_M3_OneofField = 0
 const M3_StringOneof_case case_M3_OneofField = 14
 const M3_IntOneof_case case_M3_OneofField = 15
@@ -651,6 +934,18 @@
 	Descriptor   *string
 	// -- end of xxx_hidden_OneofField
 	SecondI32 int32
+	OptB      *bool
+	OptBytes  []byte
+	OptF32    *float32
+	OptF64    *float64
+	OptI32    *int32
+	OptI64    *int64
+	OptUi32   *uint32
+	OptUi64   *uint64
+	OptS      *string
+	OptM      *M3
+	// Repeated fields and maps cannot be optional.
+	OptE *M3_Enum
 }
 
 func (b0 M3_builder) Build() *M3 {
@@ -702,6 +997,47 @@
 		x.xxx_hidden_OneofField = &m3_Descriptor_{*b.Descriptor}
 	}
 	x.xxx_hidden_SecondI32 = b.SecondI32
+	if b.OptB != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 16, 27)
+		x.xxx_hidden_OptB = *b.OptB
+	}
+	if b.OptBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 17, 27)
+		x.xxx_hidden_OptBytes = b.OptBytes
+	}
+	if b.OptF32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 18, 27)
+		x.xxx_hidden_OptF32 = *b.OptF32
+	}
+	if b.OptF64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 19, 27)
+		x.xxx_hidden_OptF64 = *b.OptF64
+	}
+	if b.OptI32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 20, 27)
+		x.xxx_hidden_OptI32 = *b.OptI32
+	}
+	if b.OptI64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 21, 27)
+		x.xxx_hidden_OptI64 = *b.OptI64
+	}
+	if b.OptUi32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 22, 27)
+		x.xxx_hidden_OptUi32 = *b.OptUi32
+	}
+	if b.OptUi64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 23, 27)
+		x.xxx_hidden_OptUi64 = *b.OptUi64
+	}
+	if b.OptS != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 24, 27)
+		x.xxx_hidden_OptS = b.OptS
+	}
+	x.xxx_hidden_OptM = b.OptM
+	if b.OptE != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 26, 27)
+		x.xxx_hidden_OptE = *b.OptE
+	}
 	return m0
 }
 
@@ -785,7 +1121,7 @@
 	0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x12, 0x23, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67,
 	0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0xb0, 0x07, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x0c,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0xc9, 0x0b, 0x0a, 0x02, 0x4d, 0x33, 0x12, 0x0c,
 	0x0a, 0x01, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x01, 0x62, 0x12, 0x14, 0x0a, 0x05,
 	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74,
 	0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52,
@@ -839,13 +1175,46 @@
 	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
 	0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x69, 0x33, 0x32, 0x18,
 	0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x49, 0x33, 0x32,
-	0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x08, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x11, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x09, 0x0a, 0x05, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x10, 0x00, 0x42, 0x0d, 0x0a, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
+	0x12, 0x18, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x01, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x42, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6f, 0x70,
+	0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x02, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07,
+	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x33, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52,
+	0x06, 0x6f, 0x70, 0x74, 0x46, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70,
+	0x74, 0x5f, 0x66, 0x36, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x01, 0x48, 0x04, 0x52, 0x06, 0x6f,
+	0x70, 0x74, 0x46, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f,
+	0x69, 0x33, 0x32, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74,
+	0x49, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x36,
+	0x34, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x49, 0x36,
+	0x34, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x33, 0x32,
+	0x18, 0x25, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x33,
+	0x32, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x36, 0x34,
+	0x18, 0x26, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x36,
+	0x34, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x18, 0x27, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x53, 0x88, 0x01, 0x01, 0x12, 0x41,
+	0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
+	0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x6f, 0x70,
+	0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x4d, 0x33, 0x48, 0x0a, 0x52, 0x04, 0x6f, 0x70, 0x74, 0x4d, 0x88, 0x01,
+	0x01, 0x12, 0x46, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x2c, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f,
+	0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x32, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x6f, 0x32, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x4d, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0b,
+	0x52, 0x04, 0x6f, 0x70, 0x74, 0x45, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70,
+	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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x22, 0x11, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x5f, 0x56,
+	0x41, 0x4c, 0x10, 0x00, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x42, 0x0c, 0x0a,
+	0x0a, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
+	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x33, 0x32, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f,
+	0x66, 0x36, 0x34, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x33, 0x32, 0x42,
+	0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x36, 0x34, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x33, 0x32, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x74,
+	0x5f, 0x75, 0x69, 0x36, 0x34, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x42,
+	0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x70,
+	0x74, 0x5f, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var file_proto3test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
@@ -862,11 +1231,13 @@
 	0, // 3: net.proto2.go.open2opaque.o2o.test3.M3.e:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
 	1, // 4: net.proto2.go.open2opaque.o2o.test3.M3.msg_oneof:type_name -> net.proto2.go.open2opaque.o2o.test3.M3
 	0, // 5: net.proto2.go.open2opaque.o2o.test3.M3.enum_oneof:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
-	6, // [6:6] is the sub-list for method output_type
-	6, // [6:6] is the sub-list for method input_type
-	6, // [6:6] is the sub-list for extension type_name
-	6, // [6:6] is the sub-list for extension extendee
-	0, // [0:6] is the sub-list for field type_name
+	1, // 6: net.proto2.go.open2opaque.o2o.test3.M3.opt_m:type_name -> net.proto2.go.open2opaque.o2o.test3.M3
+	0, // 7: net.proto2.go.open2opaque.o2o.test3.M3.opt_e:type_name -> net.proto2.go.open2opaque.o2o.test3.M3.Enum
+	8, // [8:8] is the sub-list for method output_type
+	8, // [8:8] is the sub-list for method input_type
+	8, // [8:8] is the sub-list for extension type_name
+	8, // [8:8] is the sub-list for extension extendee
+	0, // [0:8] is the sub-list for field type_name
 }
 
 func init() { file_proto3test_proto_init() }