cmd/protoc-gen-go: remove json struct tags from unexported fields

This commit does not change behavior because the encoding/json
package ignores unexported fields. To encode a Protobuf message
into JSON, users should reach for protobuf/encoding/protojson.

With this change, the generated code (.pb.go files) passes go vet.
I also made the integration test run go vet so that we do not regress.

For golang/protobuf#1657

Fixes golang/protobuf#1658

Change-Id: I0a677d09e4517b2649bfcfe76a49194c7ccbb823
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/641036
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Chressie Himpel <chressie@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/cmd/protoc-gen-go/internal_gengo/opaque.go b/cmd/protoc-gen-go/internal_gengo/opaque.go
index dafa095..d10f61a 100644
--- a/cmd/protoc-gen-go/internal_gengo/opaque.go
+++ b/cmd/protoc-gen-go/internal_gengo/opaque.go
@@ -93,7 +93,9 @@
 	}
 	tags := structTags{
 		{"protobuf", protobufTagValue},
-		{"json", jsonTagValue},
+	}
+	if !message.isOpaque() {
+		tags = append(tags, structTags{{"json", jsonTagValue}}...)
 	}
 	if field.Desc.IsMap() {
 		keyTagValue := fieldProtobufTagValue(field.Message.Fields[0])
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid_protoopaque.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid_protoopaque.pb.go
index 42bec50..a28930d 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid_protoopaque.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid_protoopaque.pb.go
@@ -37,9 +37,9 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -182,9 +182,9 @@
 
 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_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -327,9 +327,9 @@
 
 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_hidden_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo_  int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -472,9 +472,9 @@
 
 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_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetFoo_  isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -671,9 +671,9 @@
 
 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_GetFoo       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
 	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_hidden_Foo_         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
 	XXX_presence            [1]uint32
 	unknownFields           protoimpl.UnknownFields
@@ -872,8 +872,8 @@
 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_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1070,7 +1070,7 @@
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1278,8 +1278,8 @@
 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_hidden_GetFoo_       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -1476,7 +1476,7 @@
 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_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -1683,8 +1683,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_SetFoo      int32                  `protobuf:"varint,2,opt,name=set_foo,json=setFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1793,7 +1793,7 @@
 
 type M11 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_SetFoo      isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -1953,7 +1953,7 @@
 
 type M12 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_SetSetFoo   isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2113,8 +2113,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_HasFoo      int32                  `protobuf:"varint,2,opt,name=has_foo,json=hasFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2223,7 +2223,7 @@
 
 type M14 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_HasFoo      isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2384,7 +2384,7 @@
 
 type M15 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_HasHasFoo   isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2545,8 +2545,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_ClearFoo    int32                  `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2655,7 +2655,7 @@
 
 type M17 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_ClearFoo    isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2816,7 +2816,7 @@
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
@@ -2977,7 +2977,7 @@
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
@@ -3138,7 +3138,7 @@
 
 type M20 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_WhichFoo    isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3_protoopaque.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3_protoopaque.pb.go
index d3af264..5ab5e15 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3_protoopaque.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3_protoopaque.pb.go
@@ -37,7 +37,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -94,9 +94,9 @@
 
 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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -222,9 +222,9 @@
 
 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"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -350,9 +350,9 @@
 
 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"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo_ *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -478,9 +478,9 @@
 
 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_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetFoo_ isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -665,9 +665,9 @@
 
 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_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
-	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields           protoimpl.UnknownFields
 	sizeCache               protoimpl.SizeCache
 }
@@ -854,8 +854,8 @@
 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"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1040,7 +1040,7 @@
 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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1241,8 +1241,8 @@
 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"`
+	xxx_hidden_GetFoo_       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1427,7 +1427,7 @@
 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"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1627,8 +1627,8 @@
 
 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"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -1725,7 +1725,7 @@
 
 type M11 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_SetFoo isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -1878,7 +1878,7 @@
 
 type M12 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_SetSetFoo isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2031,8 +2031,8 @@
 
 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"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -2129,7 +2129,7 @@
 
 type M14 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_HasFoo isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -2283,7 +2283,7 @@
 
 type M15 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_HasHasFoo isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2437,8 +2437,8 @@
 
 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"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
 }
@@ -2535,7 +2535,7 @@
 
 type M17 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_ClearFoo isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -2689,7 +2689,7 @@
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2843,7 +2843,7 @@
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2997,7 +2997,7 @@
 
 type M20 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_WhichFoo isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
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
index a240258..f0c3c62 100644
--- 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
@@ -35,9 +35,9 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -180,9 +180,9 @@
 
 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_hidden_GetGetFoo   int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -325,9 +325,9 @@
 
 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_hidden_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo_  int32                  `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -470,9 +470,9 @@
 
 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_GetFoo      int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetFoo_  isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_        int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -669,9 +669,9 @@
 
 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_GetFoo       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
 	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_hidden_Foo_         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
 	XXX_presence            [1]uint32
 	unknownFields           protoimpl.UnknownFields
@@ -870,8 +870,8 @@
 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_hidden_GetFoo_     int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1068,7 +1068,7 @@
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1276,8 +1276,8 @@
 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_hidden_GetFoo_       int32                  `protobuf:"varint,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -1474,7 +1474,7 @@
 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_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -1681,8 +1681,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_SetFoo      int32                  `protobuf:"varint,2,opt,name=set_foo,json=setFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1791,7 +1791,7 @@
 
 type M11 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_SetFoo      isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -1951,7 +1951,7 @@
 
 type M12 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_SetSetFoo   isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2111,8 +2111,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_HasFoo      int32                  `protobuf:"varint,2,opt,name=has_foo,json=hasFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2221,7 +2221,7 @@
 
 type M14 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_HasFoo      isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2382,7 +2382,7 @@
 
 type M15 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_HasHasFoo   isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2543,8 +2543,8 @@
 
 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_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
+	xxx_hidden_ClearFoo    int32                  `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2653,7 +2653,7 @@
 
 type M17 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_ClearFoo    isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
@@ -2814,7 +2814,7 @@
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
@@ -2975,7 +2975,7 @@
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
@@ -3136,7 +3136,7 @@
 
 type M20 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo         int32                  `protobuf:"varint,1,opt,name=foo"`
 	xxx_hidden_WhichFoo    isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
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
index b393d4e..bfbe2c2 100644
--- 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
@@ -35,7 +35,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -92,9 +92,9 @@
 
 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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -220,9 +220,9 @@
 
 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"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -348,9 +348,9 @@
 
 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"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetGetFoo_ *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -476,9 +476,9 @@
 
 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_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetFoo_ isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -663,9 +663,9 @@
 
 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_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
 	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
-	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields           protoimpl.UnknownFields
 	sizeCache               protoimpl.SizeCache
 }
@@ -852,8 +852,8 @@
 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"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1038,7 +1038,7 @@
 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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1239,8 +1239,8 @@
 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"`
+	xxx_hidden_GetFoo_       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1425,7 +1425,7 @@
 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"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1625,8 +1625,8 @@
 
 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"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -1723,7 +1723,7 @@
 
 type M11 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_SetFoo isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -1876,7 +1876,7 @@
 
 type M12 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_SetSetFoo isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2029,8 +2029,8 @@
 
 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"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -2127,7 +2127,7 @@
 
 type M14 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_HasFoo isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -2281,7 +2281,7 @@
 
 type M15 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_HasHasFoo isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2435,8 +2435,8 @@
 
 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"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
 }
@@ -2533,7 +2533,7 @@
 
 type M17 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_ClearFoo isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -2687,7 +2687,7 @@
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2841,7 +2841,7 @@
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2995,7 +2995,7 @@
 
 type M20 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
 	xxx_hidden_WhichFoo isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
diff --git a/integration_test.go b/integration_test.go
index 0ec126f..a050036 100644
--- a/integration_test.go
+++ b/integration_test.go
@@ -116,6 +116,17 @@
 			t.Fatalf("unformatted source files:\n%v", diff)
 		}
 	})
+	t.Run("GeneratedVet", func(t *testing.T) {
+		files := strings.Split(strings.TrimSpace(mustRunCommand(t, "go", "list", "./internal/testprotos/...")), "\n")
+		filtered := make([]string, 0, len(files))
+		for _, f := range files {
+			if strings.Contains(f, "/legacy/") {
+				continue
+			}
+			filtered = append(filtered, f)
+		}
+		mustRunCommand(t, append([]string{"go", "vet"}, filtered...)...)
+	})
 	t.Run("CopyrightHeaders", func(t *testing.T) {
 		files := strings.Split(strings.TrimSpace(mustRunCommand(t, "git", "ls-files", "*.go", "*.proto")), "\n")
 		mustHaveCopyrightHeader(t, files)
diff --git a/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid_protoopaque.pb.go b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid_protoopaque.pb.go
index 8122f99..b94680c 100644
--- a/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/lazy/lazy_hybrid/lazy_tree.hybrid_protoopaque.pb.go
@@ -18,22 +18,22 @@
 
 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"`
+	xxx_hidden_Nested   *Node                  `protobuf:"bytes,99,opt,name=nested"`
+	xxx_hidden_Int32    int32                  `protobuf:"varint,1,opt,name=int32"`
+	xxx_hidden_Int64    int64                  `protobuf:"varint,2,opt,name=int64"`
+	xxx_hidden_Uint32   uint32                 `protobuf:"varint,3,opt,name=uint32"`
+	xxx_hidden_Uint64   uint64                 `protobuf:"varint,4,opt,name=uint64"`
+	xxx_hidden_Sint32   int32                  `protobuf:"zigzag32,5,opt,name=sint32"`
+	xxx_hidden_Sint64   int64                  `protobuf:"zigzag64,6,opt,name=sint64"`
+	xxx_hidden_Fixed32  uint32                 `protobuf:"fixed32,7,opt,name=fixed32"`
+	xxx_hidden_Fixed64  uint64                 `protobuf:"fixed64,8,opt,name=fixed64"`
+	xxx_hidden_Sfixed32 int32                  `protobuf:"fixed32,9,opt,name=sfixed32"`
+	xxx_hidden_Sfixed64 int64                  `protobuf:"fixed64,10,opt,name=sfixed64"`
+	xxx_hidden_Float    float32                `protobuf:"fixed32,11,opt,name=float"`
+	xxx_hidden_Double   float64                `protobuf:"fixed64,12,opt,name=double"`
+	xxx_hidden_Bool     bool                   `protobuf:"varint,13,opt,name=bool"`
+	xxx_hidden_String_  *string                `protobuf:"bytes,14,opt,name=string"`
+	xxx_hidden_Bytes    []byte                 `protobuf:"bytes,15,opt,name=bytes"`
 	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
diff --git a/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go
index ac12ec6..3df5cb0 100644
--- a/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go
+++ b/internal/testprotos/lazy/lazy_opaque/lazy_tree.opaque.pb.go
@@ -16,22 +16,22 @@
 
 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"`
+	xxx_hidden_Nested   *Node                  `protobuf:"bytes,99,opt,name=nested"`
+	xxx_hidden_Int32    int32                  `protobuf:"varint,1,opt,name=int32"`
+	xxx_hidden_Int64    int64                  `protobuf:"varint,2,opt,name=int64"`
+	xxx_hidden_Uint32   uint32                 `protobuf:"varint,3,opt,name=uint32"`
+	xxx_hidden_Uint64   uint64                 `protobuf:"varint,4,opt,name=uint64"`
+	xxx_hidden_Sint32   int32                  `protobuf:"zigzag32,5,opt,name=sint32"`
+	xxx_hidden_Sint64   int64                  `protobuf:"zigzag64,6,opt,name=sint64"`
+	xxx_hidden_Fixed32  uint32                 `protobuf:"fixed32,7,opt,name=fixed32"`
+	xxx_hidden_Fixed64  uint64                 `protobuf:"fixed64,8,opt,name=fixed64"`
+	xxx_hidden_Sfixed32 int32                  `protobuf:"fixed32,9,opt,name=sfixed32"`
+	xxx_hidden_Sfixed64 int64                  `protobuf:"fixed64,10,opt,name=sfixed64"`
+	xxx_hidden_Float    float32                `protobuf:"fixed32,11,opt,name=float"`
+	xxx_hidden_Double   float64                `protobuf:"fixed64,12,opt,name=double"`
+	xxx_hidden_Bool     bool                   `protobuf:"varint,13,opt,name=bool"`
+	xxx_hidden_String_  *string                `protobuf:"bytes,14,opt,name=string"`
+	xxx_hidden_Bytes    []byte                 `protobuf:"bytes,15,opt,name=bytes"`
 	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
diff --git a/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid_protoopaque.pb.go b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid_protoopaque.pb.go
index a46607f..e5924a2 100644
--- a/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_hybrid/message_set.hybrid_protoopaque.pb.go
@@ -62,7 +62,7 @@
 
 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"`
+	xxx_hidden_MessageSet *MessageSet            `protobuf:"bytes,1,opt,name=message_set,json=messageSet"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
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
index ba2b0db..9f7759e 100644
--- a/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.pb.go
+++ b/internal/testprotos/messageset/messagesetpb/messagesetpb_opaque/message_set.opaque.pb.go
@@ -60,7 +60,7 @@
 
 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"`
+	xxx_hidden_MessageSet *MessageSet            `protobuf:"bytes,1,opt,name=message_set,json=messageSet"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid_protoopaque.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid_protoopaque.pb.go
index 9de220b..b84cd02 100644
--- a/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_hybrid/msetextpb.hybrid_protoopaque.pb.go
@@ -19,8 +19,8 @@
 
 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_hidden_Ext1Field1  int32                  `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1"`
+	xxx_hidden_Ext1Field2  int32                  `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -124,7 +124,7 @@
 
 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_hidden_Ext2Field1  int32                  `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -199,7 +199,7 @@
 
 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_hidden_RequiredField1 int32                  `protobuf:"varint,1,req,name=required_field1,json=requiredField1"`
 	XXX_raceDetectHookData    protoimpl.RaceDetectHookData
 	XXX_presence              [1]uint32
 	unknownFields             protoimpl.UnknownFields
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go
index 8f60524..2d6dcc1 100644
--- a/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go
+++ b/internal/testprotos/messageset/msetextpb/msetextpb_opaque/msetextpb.opaque.pb.go
@@ -17,8 +17,8 @@
 
 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_hidden_Ext1Field1  int32                  `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1"`
+	xxx_hidden_Ext1Field2  int32                  `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -122,7 +122,7 @@
 
 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_hidden_Ext2Field1  int32                  `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -197,7 +197,7 @@
 
 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_hidden_RequiredField1 int32                  `protobuf:"varint,1,req,name=required_field1,json=requiredField1"`
 	XXX_raceDetectHookData    protoimpl.RaceDetectHookData
 	XXX_presence              [1]uint32
 	unknownFields             protoimpl.UnknownFields
diff --git a/internal/testprotos/mixed/mixed.pb.go b/internal/testprotos/mixed/mixed.pb.go
index 2bc2b56..bd6a5bb 100644
--- a/internal/testprotos/mixed/mixed.pb.go
+++ b/internal/testprotos/mixed/mixed.pb.go
@@ -235,10 +235,10 @@
 
 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_hidden_Open          *Open                  `protobuf:"bytes,1,opt,name=open"`
+	xxx_hidden_Hybrid        *Hybrid                `protobuf:"bytes,2,opt,name=hybrid"`
+	xxx_hidden_Opaque        *Opaque                `protobuf:"bytes,3,opt,name=opaque"`
+	xxx_hidden_OptionalInt32 int32                  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -600,10 +600,10 @@
 
 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"`
+	xxx_hidden_Open          *OpenLazy              `protobuf:"bytes,1,opt,name=open"`
+	xxx_hidden_Hybrid        *HybridLazy            `protobuf:"bytes,2,opt,name=hybrid"`
+	xxx_hidden_Opaque        *OpaqueLazy            `protobuf:"bytes,3,opt,name=opaque"`
+	xxx_hidden_OptionalInt32 int32                  `protobuf:"varint,4,opt,name=optional_int32,json=optionalInt32"`
 	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
diff --git a/internal/testprotos/required/required_hybrid/required.hybrid_protoopaque.pb.go b/internal/testprotos/required/required_hybrid/required.hybrid_protoopaque.pb.go
index 68b1ef1..cb585ef 100644
--- a/internal/testprotos/required/required_hybrid/required.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/required/required_hybrid/required.hybrid_protoopaque.pb.go
@@ -18,7 +18,7 @@
 
 type Int32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -93,7 +93,7 @@
 
 type Int64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int64                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int64                  `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -168,7 +168,7 @@
 
 type Uint32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint32                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint32                 `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -243,7 +243,7 @@
 
 type Uint64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint64                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint64                 `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -318,7 +318,7 @@
 
 type Sint32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"zigzag32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -393,7 +393,7 @@
 
 type Sint64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int64                  `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int64                  `protobuf:"zigzag64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -468,7 +468,7 @@
 
 type Fixed32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint32                 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint32                 `protobuf:"fixed32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -543,7 +543,7 @@
 
 type Fixed64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint64                 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint64                 `protobuf:"fixed64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -618,7 +618,7 @@
 
 type Float struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           float32                `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           float32                `protobuf:"fixed32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -693,7 +693,7 @@
 
 type Double struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           float64                `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           float64                `protobuf:"fixed64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -768,7 +768,7 @@
 
 type Bool struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           bool                   `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           bool                   `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -843,7 +843,7 @@
 
 type String struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           *string                `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           *string                `protobuf:"bytes,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -921,7 +921,7 @@
 
 type Bytes struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           []byte                 `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           []byte                 `protobuf:"bytes,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -999,7 +999,7 @@
 
 type Message struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V  *Message_M             `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V  *Message_M             `protobuf:"bytes,1,req,name=v"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1067,7 +1067,7 @@
 
 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"`
+	xxx_hidden_Group *Group_Group           `protobuf:"group,1,req,name=Group,json=group"`
 	unknownFields    protoimpl.UnknownFields
 	sizeCache        protoimpl.SizeCache
 }
@@ -1178,7 +1178,7 @@
 
 type Group_Group struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,opt,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/required/required_opaque/required.opaque.pb.go b/internal/testprotos/required/required_opaque/required.opaque.pb.go
index 665ccaa..ff59bb8 100644
--- a/internal/testprotos/required/required_opaque/required.opaque.pb.go
+++ b/internal/testprotos/required/required_opaque/required.opaque.pb.go
@@ -16,7 +16,7 @@
 
 type Int32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -91,7 +91,7 @@
 
 type Int64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int64                  `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int64                  `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -166,7 +166,7 @@
 
 type Uint32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint32                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint32                 `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -241,7 +241,7 @@
 
 type Uint64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint64                 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint64                 `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -316,7 +316,7 @@
 
 type Sint32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"zigzag32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -391,7 +391,7 @@
 
 type Sint64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int64                  `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int64                  `protobuf:"zigzag64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -466,7 +466,7 @@
 
 type Fixed32 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint32                 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint32                 `protobuf:"fixed32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -541,7 +541,7 @@
 
 type Fixed64 struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           uint64                 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           uint64                 `protobuf:"fixed64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -616,7 +616,7 @@
 
 type Float struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           float32                `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           float32                `protobuf:"fixed32,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -691,7 +691,7 @@
 
 type Double struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           float64                `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           float64                `protobuf:"fixed64,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -766,7 +766,7 @@
 
 type Bool struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           bool                   `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           bool                   `protobuf:"varint,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -841,7 +841,7 @@
 
 type String struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           *string                `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           *string                `protobuf:"bytes,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -919,7 +919,7 @@
 
 type Bytes struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           []byte                 `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V           []byte                 `protobuf:"bytes,1,req,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -997,7 +997,7 @@
 
 type Message struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V  *Message_M             `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
+	xxx_hidden_V  *Message_M             `protobuf:"bytes,1,req,name=v"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1065,7 +1065,7 @@
 
 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"`
+	xxx_hidden_Group *Group_Group           `protobuf:"group,1,req,name=Group,json=group"`
 	unknownFields    protoimpl.UnknownFields
 	sizeCache        protoimpl.SizeCache
 }
@@ -1176,7 +1176,7 @@
 
 type Group_Group struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_V           int32                  `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
+	xxx_hidden_V           int32                  `protobuf:"varint,1,opt,name=v"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go b/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go
index 6cdaf42..0bfafd1 100644
--- a/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go
@@ -111,86 +111,86 @@
 
 type TestAllTypes struct {
 	state                             protoimpl.MessageState                 `protogen:"opaque.v1"`
-	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
-	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
-	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
-	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
-	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
-	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
-	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
-	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
-	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
-	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
-	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
-	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
-	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
-	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
-	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
-	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
-	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
-	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
-	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
-	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
-	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
-	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
-	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
-	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
-	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
-	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
-	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
-	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
-	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
-	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
-	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
-	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
-	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
-	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
-	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
-	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
-	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
-	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
-	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
-	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
-	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
-	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
-	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
-	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
-	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
-	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3"`
+	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3"`
+	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3"`
+	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3"`
+	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3"`
+	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3"`
+	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3"`
+	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3"`
+	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3"`
+	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3"`
+	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3"`
+	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3"`
+	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3"`
+	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3"`
+	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3"`
+	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3"`
+	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3"`
+	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3"`
+	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum"`
+	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum"`
+	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof"`
+	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof"`
+	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof"`
+	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof"`
+	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof"`
+	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof"`
+	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof"`
+	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof"`
+	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof"`
+	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof"`
+	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof"`
+	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof"`
+	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof"`
+	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof"`
+	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof"`
+	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof"`
+	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof"`
+	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof"`
+	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
+	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum,oneof"`
+	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum,oneof"`
+	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3"`
+	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3"`
+	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3"`
+	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3"`
+	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3"`
+	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3"`
+	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3"`
+	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3"`
+	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3"`
+	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3"`
+	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3"`
+	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3"`
+	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3"`
+	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3"`
+	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3"`
+	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3"`
+	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3"`
+	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3"`
+	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum"`
+	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum"`
+	xxx_hidden_MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
 	xxx_hidden_OneofField             isTestAllTypes_OneofField              `protobuf_oneof:"oneof_field"`
 	XXX_raceDetectHookData            protoimpl.RaceDetectHookData
 	XXX_presence                      [3]uint32
@@ -2058,8 +2058,8 @@
 
 type ForeignMessage struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3"`
+	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -2129,8 +2129,8 @@
 
 type TestAllTypes_NestedMessage struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3"`
 	unknownFields          protoimpl.UnknownFields
 	sizeCache              protoimpl.SizeCache
 }
diff --git a/internal/testprotos/test3/test3_opaque/test.opaque.pb.go b/internal/testprotos/test3/test3_opaque/test.opaque.pb.go
index f51c61a..8bb5fd1 100644
--- a/internal/testprotos/test3/test3_opaque/test.opaque.pb.go
+++ b/internal/testprotos/test3/test3_opaque/test.opaque.pb.go
@@ -109,86 +109,86 @@
 
 type TestAllTypes struct {
 	state                             protoimpl.MessageState                 `protogen:"opaque.v1"`
-	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
-	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
-	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
-	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
-	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
-	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
-	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
-	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
-	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
-	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
-	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
-	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
-	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
-	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
-	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
-	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
-	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
-	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
-	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
-	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
-	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
-	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
-	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
-	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
-	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
-	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
-	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
-	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
-	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
-	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
-	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
-	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
-	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
-	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
-	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
-	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
-	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
-	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
-	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
-	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
-	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
-	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
-	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
-	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
-	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
-	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=opaque.goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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"`
-	xxx_hidden_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=opaque.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3"`
+	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3"`
+	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3"`
+	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3"`
+	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3"`
+	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3"`
+	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3"`
+	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3"`
+	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3"`
+	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3"`
+	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3"`
+	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3"`
+	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3"`
+	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3"`
+	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3"`
+	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3"`
+	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3"`
+	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3"`
+	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum"`
+	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum"`
+	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof"`
+	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof"`
+	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof"`
+	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof"`
+	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof"`
+	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof"`
+	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof"`
+	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof"`
+	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof"`
+	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof"`
+	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof"`
+	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof"`
+	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof"`
+	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof"`
+	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof"`
+	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof"`
+	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof"`
+	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof"`
+	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
+	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum,oneof"`
+	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum,oneof"`
+	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3"`
+	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3"`
+	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3"`
+	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3"`
+	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3"`
+	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3"`
+	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3"`
+	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3"`
+	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3"`
+	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3"`
+	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3"`
+	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3"`
+	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3"`
+	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3"`
+	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3"`
+	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3"`
+	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3"`
+	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3"`
+	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum"`
+	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=opaque.goproto.proto.test3.ImportEnum"`
+	xxx_hidden_MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" 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,proto3" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum"`
 	xxx_hidden_OneofField             isTestAllTypes_OneofField              `protobuf_oneof:"oneof_field"`
 	XXX_raceDetectHookData            protoimpl.RaceDetectHookData
 	XXX_presence                      [3]uint32
@@ -2056,8 +2056,8 @@
 
 type ForeignMessage struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3"`
+	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -2127,8 +2127,8 @@
 
 type TestAllTypes_NestedMessage struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3"`
 	unknownFields          protoimpl.UnknownFields
 	sizeCache              protoimpl.SizeCache
 }
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid_protoopaque.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid_protoopaque.pb.go
index 27186bf..233f3b3 100644
--- a/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test.hybrid_protoopaque.pb.go
@@ -113,104 +113,104 @@
 
 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=hybrid.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=hybrid.goproto.proto.testeditions.ForeignEnum" json:"singular_foreign_enum,omitempty"`
-	xxx_hidden_SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=hybrid.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=hybrid.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=hybrid.goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
-	xxx_hidden_OptionalImportEnum        ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=hybrid.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=hybrid.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=hybrid.goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	xxx_hidden_RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=hybrid.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=hybrid.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=hybrid.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=hybrid.goproto.proto.testeditions.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
+	xxx_hidden_SingularInt32             int32                                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32"`
+	xxx_hidden_SingularInt64             int64                                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64"`
+	xxx_hidden_SingularUint32            uint32                                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32"`
+	xxx_hidden_SingularUint64            uint64                                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64"`
+	xxx_hidden_SingularSint32            int32                                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32"`
+	xxx_hidden_SingularSint64            int64                                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64"`
+	xxx_hidden_SingularFixed32           uint32                                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32"`
+	xxx_hidden_SingularFixed64           uint64                                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64"`
+	xxx_hidden_SingularSfixed32          int32                                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32"`
+	xxx_hidden_SingularSfixed64          int64                                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64"`
+	xxx_hidden_SingularFloat             float32                                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat"`
+	xxx_hidden_SingularDouble            float64                                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble"`
+	xxx_hidden_SingularBool              bool                                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool"`
+	xxx_hidden_SingularString            string                                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString"`
+	xxx_hidden_SingularBytes             []byte                                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes"`
+	xxx_hidden_SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=hybrid.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_OptionalInt32             int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32"`
+	xxx_hidden_OptionalInt64             int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64"`
+	xxx_hidden_OptionalUint32            uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32"`
+	xxx_hidden_OptionalUint64            uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64"`
+	xxx_hidden_OptionalSint32            int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32"`
+	xxx_hidden_OptionalSint64            int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64"`
+	xxx_hidden_OptionalFixed32           uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32"`
+	xxx_hidden_OptionalFixed64           uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64"`
+	xxx_hidden_OptionalSfixed32          int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32"`
+	xxx_hidden_OptionalSfixed64          int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64"`
+	xxx_hidden_OptionalFloat             float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat"`
+	xxx_hidden_OptionalDouble            float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble"`
+	xxx_hidden_OptionalBool              bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool"`
+	xxx_hidden_OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString"`
+	xxx_hidden_OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes"`
+	xxx_hidden_Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup"`
+	xxx_hidden_NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited"`
+	xxx_hidden_OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage"`
+	xxx_hidden_OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage"`
+	xxx_hidden_OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage"`
+	xxx_hidden_OptionalNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_OptionalForeignEnum       ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_OptionalImportEnum        ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=hybrid.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage"`
+	xxx_hidden_RepeatedInt32             []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32"`
+	xxx_hidden_RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64"`
+	xxx_hidden_RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32"`
+	xxx_hidden_RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64"`
+	xxx_hidden_RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32"`
+	xxx_hidden_RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64"`
+	xxx_hidden_RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32"`
+	xxx_hidden_RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64"`
+	xxx_hidden_RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32"`
+	xxx_hidden_RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64"`
+	xxx_hidden_RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat"`
+	xxx_hidden_RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble"`
+	xxx_hidden_RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool"`
+	xxx_hidden_RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString"`
+	xxx_hidden_RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes"`
+	xxx_hidden_Repeatedgroup             *[]*TestAllTypes_RepeatedGroup         `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup"`
+	xxx_hidden_RepeatedNestedMessage     *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage"`
+	xxx_hidden_RepeatedForeignMessage    *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage"`
+	xxx_hidden_RepeatedImportmessage     *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage"`
+	xxx_hidden_RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=hybrid.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_DefaultInt32              int32                                  `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81"`
+	xxx_hidden_DefaultInt64              int64                                  `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82"`
+	xxx_hidden_DefaultUint32             uint32                                 `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83"`
+	xxx_hidden_DefaultUint64             uint64                                 `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84"`
+	xxx_hidden_DefaultSint32             int32                                  `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85"`
+	xxx_hidden_DefaultSint64             int64                                  `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86"`
+	xxx_hidden_DefaultFixed32            uint32                                 `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87"`
+	xxx_hidden_DefaultFixed64            uint64                                 `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88"`
+	xxx_hidden_DefaultSfixed32           int32                                  `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89"`
+	xxx_hidden_DefaultSfixed64           int64                                  `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90"`
+	xxx_hidden_DefaultFloat              float32                                `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5"`
+	xxx_hidden_DefaultDouble             float64                                `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000"`
+	xxx_hidden_DefaultBool               bool                                   `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1"`
+	xxx_hidden_DefaultString             *string                                `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello"`
+	xxx_hidden_DefaultBytes              []byte                                 `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world"`
+	xxx_hidden_DefaultNestedEnum         TestAllTypes_NestedEnum                `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum,def=1"`
+	xxx_hidden_DefaultForeignEnum        ForeignEnum                            `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum,def=5"`
 	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.
@@ -2780,106 +2780,106 @@
 
 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"`
+	xxx_hidden_F1   *TestAllTypes          `protobuf:"bytes,1,opt,name=f1"`
+	xxx_hidden_F2   *TestAllTypes          `protobuf:"bytes,2,opt,name=f2"`
+	xxx_hidden_F3   *TestAllTypes          `protobuf:"bytes,3,opt,name=f3"`
+	xxx_hidden_F4   *TestAllTypes          `protobuf:"bytes,4,opt,name=f4"`
+	xxx_hidden_F5   *TestAllTypes          `protobuf:"bytes,5,opt,name=f5"`
+	xxx_hidden_F6   *TestAllTypes          `protobuf:"bytes,6,opt,name=f6"`
+	xxx_hidden_F7   *TestAllTypes          `protobuf:"bytes,7,opt,name=f7"`
+	xxx_hidden_F8   *TestAllTypes          `protobuf:"bytes,8,opt,name=f8"`
+	xxx_hidden_F9   *TestAllTypes          `protobuf:"bytes,9,opt,name=f9"`
+	xxx_hidden_F10  *TestAllTypes          `protobuf:"bytes,10,opt,name=f10"`
+	xxx_hidden_F11  *TestAllTypes          `protobuf:"bytes,11,opt,name=f11"`
+	xxx_hidden_F12  *TestAllTypes          `protobuf:"bytes,12,opt,name=f12"`
+	xxx_hidden_F13  *TestAllTypes          `protobuf:"bytes,13,opt,name=f13"`
+	xxx_hidden_F14  *TestAllTypes          `protobuf:"bytes,14,opt,name=f14"`
+	xxx_hidden_F15  *TestAllTypes          `protobuf:"bytes,15,opt,name=f15"`
+	xxx_hidden_F16  *TestAllTypes          `protobuf:"bytes,16,opt,name=f16"`
+	xxx_hidden_F17  *TestAllTypes          `protobuf:"bytes,17,opt,name=f17"`
+	xxx_hidden_F18  *TestAllTypes          `protobuf:"bytes,18,opt,name=f18"`
+	xxx_hidden_F19  *TestAllTypes          `protobuf:"bytes,19,opt,name=f19"`
+	xxx_hidden_F20  *TestAllTypes          `protobuf:"bytes,20,opt,name=f20"`
+	xxx_hidden_F21  *TestAllTypes          `protobuf:"bytes,21,opt,name=f21"`
+	xxx_hidden_F22  *TestAllTypes          `protobuf:"bytes,22,opt,name=f22"`
+	xxx_hidden_F23  *TestAllTypes          `protobuf:"bytes,23,opt,name=f23"`
+	xxx_hidden_F24  *TestAllTypes          `protobuf:"bytes,24,opt,name=f24"`
+	xxx_hidden_F25  *TestAllTypes          `protobuf:"bytes,25,opt,name=f25"`
+	xxx_hidden_F26  *TestAllTypes          `protobuf:"bytes,26,opt,name=f26"`
+	xxx_hidden_F27  *TestAllTypes          `protobuf:"bytes,27,opt,name=f27"`
+	xxx_hidden_F28  *TestAllTypes          `protobuf:"bytes,28,opt,name=f28"`
+	xxx_hidden_F29  *TestAllTypes          `protobuf:"bytes,29,opt,name=f29"`
+	xxx_hidden_F30  *TestAllTypes          `protobuf:"bytes,30,opt,name=f30"`
+	xxx_hidden_F31  *TestAllTypes          `protobuf:"bytes,31,opt,name=f31"`
+	xxx_hidden_F32  *TestAllTypes          `protobuf:"bytes,32,opt,name=f32"`
+	xxx_hidden_F33  *TestAllTypes          `protobuf:"bytes,33,opt,name=f33"`
+	xxx_hidden_F34  *TestAllTypes          `protobuf:"bytes,34,opt,name=f34"`
+	xxx_hidden_F35  *TestAllTypes          `protobuf:"bytes,35,opt,name=f35"`
+	xxx_hidden_F36  *TestAllTypes          `protobuf:"bytes,36,opt,name=f36"`
+	xxx_hidden_F37  *TestAllTypes          `protobuf:"bytes,37,opt,name=f37"`
+	xxx_hidden_F38  *TestAllTypes          `protobuf:"bytes,38,opt,name=f38"`
+	xxx_hidden_F39  *TestAllTypes          `protobuf:"bytes,39,opt,name=f39"`
+	xxx_hidden_F40  *TestAllTypes          `protobuf:"bytes,40,opt,name=f40"`
+	xxx_hidden_F41  *TestAllTypes          `protobuf:"bytes,41,opt,name=f41"`
+	xxx_hidden_F42  *TestAllTypes          `protobuf:"bytes,42,opt,name=f42"`
+	xxx_hidden_F43  *TestAllTypes          `protobuf:"bytes,43,opt,name=f43"`
+	xxx_hidden_F44  *TestAllTypes          `protobuf:"bytes,44,opt,name=f44"`
+	xxx_hidden_F45  *TestAllTypes          `protobuf:"bytes,45,opt,name=f45"`
+	xxx_hidden_F46  *TestAllTypes          `protobuf:"bytes,46,opt,name=f46"`
+	xxx_hidden_F47  *TestAllTypes          `protobuf:"bytes,47,opt,name=f47"`
+	xxx_hidden_F48  *TestAllTypes          `protobuf:"bytes,48,opt,name=f48"`
+	xxx_hidden_F49  *TestAllTypes          `protobuf:"bytes,49,opt,name=f49"`
+	xxx_hidden_F50  *TestAllTypes          `protobuf:"bytes,50,opt,name=f50"`
+	xxx_hidden_F51  *TestAllTypes          `protobuf:"bytes,51,opt,name=f51"`
+	xxx_hidden_F52  *TestAllTypes          `protobuf:"bytes,52,opt,name=f52"`
+	xxx_hidden_F53  *TestAllTypes          `protobuf:"bytes,53,opt,name=f53"`
+	xxx_hidden_F54  *TestAllTypes          `protobuf:"bytes,54,opt,name=f54"`
+	xxx_hidden_F55  *TestAllTypes          `protobuf:"bytes,55,opt,name=f55"`
+	xxx_hidden_F56  *TestAllTypes          `protobuf:"bytes,56,opt,name=f56"`
+	xxx_hidden_F57  *TestAllTypes          `protobuf:"bytes,57,opt,name=f57"`
+	xxx_hidden_F58  *TestAllTypes          `protobuf:"bytes,58,opt,name=f58"`
+	xxx_hidden_F59  *TestAllTypes          `protobuf:"bytes,59,opt,name=f59"`
+	xxx_hidden_F60  *TestAllTypes          `protobuf:"bytes,60,opt,name=f60"`
+	xxx_hidden_F61  *TestAllTypes          `protobuf:"bytes,61,opt,name=f61"`
+	xxx_hidden_F62  *TestAllTypes          `protobuf:"bytes,62,opt,name=f62"`
+	xxx_hidden_F63  *TestAllTypes          `protobuf:"bytes,63,opt,name=f63"`
+	xxx_hidden_F64  *TestAllTypes          `protobuf:"bytes,64,opt,name=f64"`
+	xxx_hidden_F65  *TestAllTypes          `protobuf:"bytes,65,opt,name=f65"`
+	xxx_hidden_F66  *TestAllTypes          `protobuf:"bytes,66,opt,name=f66"`
+	xxx_hidden_F67  *TestAllTypes          `protobuf:"bytes,67,opt,name=f67"`
+	xxx_hidden_F68  *TestAllTypes          `protobuf:"bytes,68,opt,name=f68"`
+	xxx_hidden_F69  *TestAllTypes          `protobuf:"bytes,69,opt,name=f69"`
+	xxx_hidden_F70  *TestAllTypes          `protobuf:"bytes,70,opt,name=f70"`
+	xxx_hidden_F71  *TestAllTypes          `protobuf:"bytes,71,opt,name=f71"`
+	xxx_hidden_F72  *TestAllTypes          `protobuf:"bytes,72,opt,name=f72"`
+	xxx_hidden_F73  *TestAllTypes          `protobuf:"bytes,73,opt,name=f73"`
+	xxx_hidden_F74  *TestAllTypes          `protobuf:"bytes,74,opt,name=f74"`
+	xxx_hidden_F75  *TestAllTypes          `protobuf:"bytes,75,opt,name=f75"`
+	xxx_hidden_F76  *TestAllTypes          `protobuf:"bytes,76,opt,name=f76"`
+	xxx_hidden_F77  *TestAllTypes          `protobuf:"bytes,77,opt,name=f77"`
+	xxx_hidden_F78  *TestAllTypes          `protobuf:"bytes,78,opt,name=f78"`
+	xxx_hidden_F79  *TestAllTypes          `protobuf:"bytes,79,opt,name=f79"`
+	xxx_hidden_F80  *TestAllTypes          `protobuf:"bytes,80,opt,name=f80"`
+	xxx_hidden_F81  *TestAllTypes          `protobuf:"bytes,81,opt,name=f81"`
+	xxx_hidden_F82  *TestAllTypes          `protobuf:"bytes,82,opt,name=f82"`
+	xxx_hidden_F83  *TestAllTypes          `protobuf:"bytes,83,opt,name=f83"`
+	xxx_hidden_F84  *TestAllTypes          `protobuf:"bytes,84,opt,name=f84"`
+	xxx_hidden_F85  *TestAllTypes          `protobuf:"bytes,85,opt,name=f85"`
+	xxx_hidden_F86  *TestAllTypes          `protobuf:"bytes,86,opt,name=f86"`
+	xxx_hidden_F87  *TestAllTypes          `protobuf:"bytes,87,opt,name=f87"`
+	xxx_hidden_F88  *TestAllTypes          `protobuf:"bytes,88,opt,name=f88"`
+	xxx_hidden_F89  *TestAllTypes          `protobuf:"bytes,89,opt,name=f89"`
+	xxx_hidden_F90  *TestAllTypes          `protobuf:"bytes,90,opt,name=f90"`
+	xxx_hidden_F91  *TestAllTypes          `protobuf:"bytes,91,opt,name=f91"`
+	xxx_hidden_F92  *TestAllTypes          `protobuf:"bytes,92,opt,name=f92"`
+	xxx_hidden_F93  *TestAllTypes          `protobuf:"bytes,93,opt,name=f93"`
+	xxx_hidden_F94  *TestAllTypes          `protobuf:"bytes,94,opt,name=f94"`
+	xxx_hidden_F95  *TestAllTypes          `protobuf:"bytes,95,opt,name=f95"`
+	xxx_hidden_F96  *TestAllTypes          `protobuf:"bytes,96,opt,name=f96"`
+	xxx_hidden_F97  *TestAllTypes          `protobuf:"bytes,97,opt,name=f97"`
+	xxx_hidden_F98  *TestAllTypes          `protobuf:"bytes,98,opt,name=f98"`
+	xxx_hidden_F99  *TestAllTypes          `protobuf:"bytes,99,opt,name=f99"`
+	xxx_hidden_F100 *TestAllTypes          `protobuf:"bytes,100,opt,name=f100"`
 	unknownFields   protoimpl.UnknownFields
 	sizeCache       protoimpl.SizeCache
 }
@@ -5323,8 +5323,8 @@
 
 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_hidden_C           int32                  `protobuf:"varint,1,opt,name=c"`
+	xxx_hidden_D           int32                  `protobuf:"varint,2,opt,name=d"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -5428,7 +5428,7 @@
 
 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_hidden_RequiredField int32                  `protobuf:"varint,1,req,name=required_field,json=requiredField"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -5503,9 +5503,9 @@
 
 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_OptionalMessage *TestRequired                    `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage"`
+	xxx_hidden_RepeatedMessage *[]*TestRequired                 `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage"`
+	xxx_hidden_MapMessage      map[int32]*TestRequired          `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" 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
@@ -5685,8 +5685,8 @@
 
 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"`
+	xxx_hidden_Optionalgroup *TestRequiredGroupFields_OptionalGroup    `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup"`
+	xxx_hidden_Repeatedgroup *[]*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -5769,7 +5769,7 @@
 
 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"`
+	xxx_hidden_OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage"`
 	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
@@ -5857,20 +5857,20 @@
 
 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=hybrid.goproto.proto.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
+	xxx_hidden_PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32"`
+	xxx_hidden_PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64"`
+	xxx_hidden_PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32"`
+	xxx_hidden_PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64"`
+	xxx_hidden_PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32"`
+	xxx_hidden_PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64"`
+	xxx_hidden_PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32"`
+	xxx_hidden_PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64"`
+	xxx_hidden_PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32"`
+	xxx_hidden_PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64"`
+	xxx_hidden_PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat"`
+	xxx_hidden_PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble"`
+	xxx_hidden_PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool"`
+	xxx_hidden_PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=hybrid.goproto.proto.testeditions.ForeignEnum"`
 	unknownFields             protoimpl.UnknownFields
 	sizeCache                 protoimpl.SizeCache
 }
@@ -6140,14 +6140,14 @@
 
 type RemoteDefault struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Default     enums_hybrid.Enum      `protobuf:"varint,1,opt,name=default,enum=hybrid.goproto.proto.enums.Enum" json:"default,omitempty"`
-	xxx_hidden_Zero        enums_hybrid.Enum      `protobuf:"varint,2,opt,name=zero,enum=hybrid.goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
-	xxx_hidden_One         enums_hybrid.Enum      `protobuf:"varint,3,opt,name=one,enum=hybrid.goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
-	xxx_hidden_Elevent     enums_hybrid.Enum      `protobuf:"varint,4,opt,name=elevent,enum=hybrid.goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
-	xxx_hidden_Seventeen   enums_hybrid.Enum      `protobuf:"varint,5,opt,name=seventeen,enum=hybrid.goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
-	xxx_hidden_Thirtyseven enums_hybrid.Enum      `protobuf:"varint,6,opt,name=thirtyseven,enum=hybrid.goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
-	xxx_hidden_Sixtyseven  enums_hybrid.Enum      `protobuf:"varint,7,opt,name=sixtyseven,enum=hybrid.goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
-	xxx_hidden_Negative    enums_hybrid.Enum      `protobuf:"varint,8,opt,name=negative,enum=hybrid.goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
+	xxx_hidden_Default     enums_hybrid.Enum      `protobuf:"varint,1,opt,name=default,enum=hybrid.goproto.proto.enums.Enum"`
+	xxx_hidden_Zero        enums_hybrid.Enum      `protobuf:"varint,2,opt,name=zero,enum=hybrid.goproto.proto.enums.Enum,def=0"`
+	xxx_hidden_One         enums_hybrid.Enum      `protobuf:"varint,3,opt,name=one,enum=hybrid.goproto.proto.enums.Enum,def=1"`
+	xxx_hidden_Elevent     enums_hybrid.Enum      `protobuf:"varint,4,opt,name=elevent,enum=hybrid.goproto.proto.enums.Enum,def=11"`
+	xxx_hidden_Seventeen   enums_hybrid.Enum      `protobuf:"varint,5,opt,name=seventeen,enum=hybrid.goproto.proto.enums.Enum,def=17"`
+	xxx_hidden_Thirtyseven enums_hybrid.Enum      `protobuf:"varint,6,opt,name=thirtyseven,enum=hybrid.goproto.proto.enums.Enum,def=37"`
+	xxx_hidden_Sixtyseven  enums_hybrid.Enum      `protobuf:"varint,7,opt,name=sixtyseven,enum=hybrid.goproto.proto.enums.Enum,def=67"`
+	xxx_hidden_Negative    enums_hybrid.Enum      `protobuf:"varint,8,opt,name=negative,enum=hybrid.goproto.proto.enums.Enum,def=-1"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6445,8 +6445,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6545,9 +6545,9 @@
 
 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_hidden_A                     int32                       `protobuf:"varint,17,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
+	xxx_hidden_SameFieldNumber       int32                       `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -6675,8 +6675,8 @@
 
 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_hidden_A                     int32                       `protobuf:"varint,47,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -6775,8 +6775,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_B           int32                  `protobuf:"varint,2,opt,name=b"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6880,7 +6880,7 @@
 
 type TestRequiredGroupFields_OptionalGroup struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,2,req,name=a"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6955,7 +6955,7 @@
 
 type TestRequiredGroupFields_RepeatedGroup struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,4,req,name=a"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid_protoopaque.pb.go b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid_protoopaque.pb.go
index 7d0d8e8..7d4f5ac 100644
--- a/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid_protoopaque.pb.go
@@ -62,9 +62,9 @@
 
 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_hidden_A                     int32                            `protobuf:"varint,17,opt,name=a"`
+	xxx_hidden_SameFieldNumber       int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -192,8 +192,8 @@
 
 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_hidden_A                     int32                            `protobuf:"varint,47,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -379,8 +379,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_Corecursive *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go
index 5021e4d..5f003fa 100644
--- a/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go
+++ b/internal/testprotos/testeditions/testeditions_opaque/test.opaque.pb.go
@@ -111,104 +111,104 @@
 
 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_SingularInt32             int32                                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32"`
+	xxx_hidden_SingularInt64             int64                                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64"`
+	xxx_hidden_SingularUint32            uint32                                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32"`
+	xxx_hidden_SingularUint64            uint64                                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64"`
+	xxx_hidden_SingularSint32            int32                                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32"`
+	xxx_hidden_SingularSint64            int64                                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64"`
+	xxx_hidden_SingularFixed32           uint32                                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32"`
+	xxx_hidden_SingularFixed64           uint64                                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64"`
+	xxx_hidden_SingularSfixed32          int32                                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32"`
+	xxx_hidden_SingularSfixed64          int64                                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64"`
+	xxx_hidden_SingularFloat             float32                                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat"`
+	xxx_hidden_SingularDouble            float64                                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble"`
+	xxx_hidden_SingularBool              bool                                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool"`
+	xxx_hidden_SingularString            string                                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString"`
+	xxx_hidden_SingularBytes             []byte                                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes"`
+	xxx_hidden_SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=opaque.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_OptionalInt32             int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32"`
+	xxx_hidden_OptionalInt64             int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64"`
+	xxx_hidden_OptionalUint32            uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32"`
+	xxx_hidden_OptionalUint64            uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64"`
+	xxx_hidden_OptionalSint32            int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32"`
+	xxx_hidden_OptionalSint64            int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64"`
+	xxx_hidden_OptionalFixed32           uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32"`
+	xxx_hidden_OptionalFixed64           uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64"`
+	xxx_hidden_OptionalSfixed32          int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32"`
+	xxx_hidden_OptionalSfixed64          int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64"`
+	xxx_hidden_OptionalFloat             float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat"`
+	xxx_hidden_OptionalDouble            float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble"`
+	xxx_hidden_OptionalBool              bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool"`
+	xxx_hidden_OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString"`
+	xxx_hidden_OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes"`
+	xxx_hidden_Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup"`
+	xxx_hidden_NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited"`
+	xxx_hidden_OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage"`
+	xxx_hidden_OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage"`
+	xxx_hidden_OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage"`
+	xxx_hidden_OptionalNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_OptionalForeignEnum       ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_OptionalImportEnum        ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=opaque.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage"`
+	xxx_hidden_RepeatedInt32             []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32"`
+	xxx_hidden_RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64"`
+	xxx_hidden_RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32"`
+	xxx_hidden_RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64"`
+	xxx_hidden_RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32"`
+	xxx_hidden_RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64"`
+	xxx_hidden_RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32"`
+	xxx_hidden_RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64"`
+	xxx_hidden_RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32"`
+	xxx_hidden_RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64"`
+	xxx_hidden_RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat"`
+	xxx_hidden_RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble"`
+	xxx_hidden_RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool"`
+	xxx_hidden_RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString"`
+	xxx_hidden_RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes"`
+	xxx_hidden_Repeatedgroup             *[]*TestAllTypes_RepeatedGroup         `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup"`
+	xxx_hidden_RepeatedNestedMessage     *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage"`
+	xxx_hidden_RepeatedForeignMessage    *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage"`
+	xxx_hidden_RepeatedImportmessage     *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage"`
+	xxx_hidden_RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum"`
+	xxx_hidden_RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum"`
+	xxx_hidden_RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=opaque.goproto.proto.testeditions.ImportEnum"`
+	xxx_hidden_MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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"`
+	xxx_hidden_DefaultInt64              int64                                  `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82"`
+	xxx_hidden_DefaultUint32             uint32                                 `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83"`
+	xxx_hidden_DefaultUint64             uint64                                 `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84"`
+	xxx_hidden_DefaultSint32             int32                                  `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85"`
+	xxx_hidden_DefaultSint64             int64                                  `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86"`
+	xxx_hidden_DefaultFixed32            uint32                                 `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87"`
+	xxx_hidden_DefaultFixed64            uint64                                 `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88"`
+	xxx_hidden_DefaultSfixed32           int32                                  `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89"`
+	xxx_hidden_DefaultSfixed64           int64                                  `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90"`
+	xxx_hidden_DefaultFloat              float32                                `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5"`
+	xxx_hidden_DefaultDouble             float64                                `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000"`
+	xxx_hidden_DefaultBool               bool                                   `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1"`
+	xxx_hidden_DefaultString             *string                                `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello"`
+	xxx_hidden_DefaultBytes              []byte                                 `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world"`
+	xxx_hidden_DefaultNestedEnum         TestAllTypes_NestedEnum                `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum,def=1"`
+	xxx_hidden_DefaultForeignEnum        ForeignEnum                            `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum,def=5"`
 	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.
@@ -2778,106 +2778,106 @@
 
 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"`
+	xxx_hidden_F1   *TestAllTypes          `protobuf:"bytes,1,opt,name=f1"`
+	xxx_hidden_F2   *TestAllTypes          `protobuf:"bytes,2,opt,name=f2"`
+	xxx_hidden_F3   *TestAllTypes          `protobuf:"bytes,3,opt,name=f3"`
+	xxx_hidden_F4   *TestAllTypes          `protobuf:"bytes,4,opt,name=f4"`
+	xxx_hidden_F5   *TestAllTypes          `protobuf:"bytes,5,opt,name=f5"`
+	xxx_hidden_F6   *TestAllTypes          `protobuf:"bytes,6,opt,name=f6"`
+	xxx_hidden_F7   *TestAllTypes          `protobuf:"bytes,7,opt,name=f7"`
+	xxx_hidden_F8   *TestAllTypes          `protobuf:"bytes,8,opt,name=f8"`
+	xxx_hidden_F9   *TestAllTypes          `protobuf:"bytes,9,opt,name=f9"`
+	xxx_hidden_F10  *TestAllTypes          `protobuf:"bytes,10,opt,name=f10"`
+	xxx_hidden_F11  *TestAllTypes          `protobuf:"bytes,11,opt,name=f11"`
+	xxx_hidden_F12  *TestAllTypes          `protobuf:"bytes,12,opt,name=f12"`
+	xxx_hidden_F13  *TestAllTypes          `protobuf:"bytes,13,opt,name=f13"`
+	xxx_hidden_F14  *TestAllTypes          `protobuf:"bytes,14,opt,name=f14"`
+	xxx_hidden_F15  *TestAllTypes          `protobuf:"bytes,15,opt,name=f15"`
+	xxx_hidden_F16  *TestAllTypes          `protobuf:"bytes,16,opt,name=f16"`
+	xxx_hidden_F17  *TestAllTypes          `protobuf:"bytes,17,opt,name=f17"`
+	xxx_hidden_F18  *TestAllTypes          `protobuf:"bytes,18,opt,name=f18"`
+	xxx_hidden_F19  *TestAllTypes          `protobuf:"bytes,19,opt,name=f19"`
+	xxx_hidden_F20  *TestAllTypes          `protobuf:"bytes,20,opt,name=f20"`
+	xxx_hidden_F21  *TestAllTypes          `protobuf:"bytes,21,opt,name=f21"`
+	xxx_hidden_F22  *TestAllTypes          `protobuf:"bytes,22,opt,name=f22"`
+	xxx_hidden_F23  *TestAllTypes          `protobuf:"bytes,23,opt,name=f23"`
+	xxx_hidden_F24  *TestAllTypes          `protobuf:"bytes,24,opt,name=f24"`
+	xxx_hidden_F25  *TestAllTypes          `protobuf:"bytes,25,opt,name=f25"`
+	xxx_hidden_F26  *TestAllTypes          `protobuf:"bytes,26,opt,name=f26"`
+	xxx_hidden_F27  *TestAllTypes          `protobuf:"bytes,27,opt,name=f27"`
+	xxx_hidden_F28  *TestAllTypes          `protobuf:"bytes,28,opt,name=f28"`
+	xxx_hidden_F29  *TestAllTypes          `protobuf:"bytes,29,opt,name=f29"`
+	xxx_hidden_F30  *TestAllTypes          `protobuf:"bytes,30,opt,name=f30"`
+	xxx_hidden_F31  *TestAllTypes          `protobuf:"bytes,31,opt,name=f31"`
+	xxx_hidden_F32  *TestAllTypes          `protobuf:"bytes,32,opt,name=f32"`
+	xxx_hidden_F33  *TestAllTypes          `protobuf:"bytes,33,opt,name=f33"`
+	xxx_hidden_F34  *TestAllTypes          `protobuf:"bytes,34,opt,name=f34"`
+	xxx_hidden_F35  *TestAllTypes          `protobuf:"bytes,35,opt,name=f35"`
+	xxx_hidden_F36  *TestAllTypes          `protobuf:"bytes,36,opt,name=f36"`
+	xxx_hidden_F37  *TestAllTypes          `protobuf:"bytes,37,opt,name=f37"`
+	xxx_hidden_F38  *TestAllTypes          `protobuf:"bytes,38,opt,name=f38"`
+	xxx_hidden_F39  *TestAllTypes          `protobuf:"bytes,39,opt,name=f39"`
+	xxx_hidden_F40  *TestAllTypes          `protobuf:"bytes,40,opt,name=f40"`
+	xxx_hidden_F41  *TestAllTypes          `protobuf:"bytes,41,opt,name=f41"`
+	xxx_hidden_F42  *TestAllTypes          `protobuf:"bytes,42,opt,name=f42"`
+	xxx_hidden_F43  *TestAllTypes          `protobuf:"bytes,43,opt,name=f43"`
+	xxx_hidden_F44  *TestAllTypes          `protobuf:"bytes,44,opt,name=f44"`
+	xxx_hidden_F45  *TestAllTypes          `protobuf:"bytes,45,opt,name=f45"`
+	xxx_hidden_F46  *TestAllTypes          `protobuf:"bytes,46,opt,name=f46"`
+	xxx_hidden_F47  *TestAllTypes          `protobuf:"bytes,47,opt,name=f47"`
+	xxx_hidden_F48  *TestAllTypes          `protobuf:"bytes,48,opt,name=f48"`
+	xxx_hidden_F49  *TestAllTypes          `protobuf:"bytes,49,opt,name=f49"`
+	xxx_hidden_F50  *TestAllTypes          `protobuf:"bytes,50,opt,name=f50"`
+	xxx_hidden_F51  *TestAllTypes          `protobuf:"bytes,51,opt,name=f51"`
+	xxx_hidden_F52  *TestAllTypes          `protobuf:"bytes,52,opt,name=f52"`
+	xxx_hidden_F53  *TestAllTypes          `protobuf:"bytes,53,opt,name=f53"`
+	xxx_hidden_F54  *TestAllTypes          `protobuf:"bytes,54,opt,name=f54"`
+	xxx_hidden_F55  *TestAllTypes          `protobuf:"bytes,55,opt,name=f55"`
+	xxx_hidden_F56  *TestAllTypes          `protobuf:"bytes,56,opt,name=f56"`
+	xxx_hidden_F57  *TestAllTypes          `protobuf:"bytes,57,opt,name=f57"`
+	xxx_hidden_F58  *TestAllTypes          `protobuf:"bytes,58,opt,name=f58"`
+	xxx_hidden_F59  *TestAllTypes          `protobuf:"bytes,59,opt,name=f59"`
+	xxx_hidden_F60  *TestAllTypes          `protobuf:"bytes,60,opt,name=f60"`
+	xxx_hidden_F61  *TestAllTypes          `protobuf:"bytes,61,opt,name=f61"`
+	xxx_hidden_F62  *TestAllTypes          `protobuf:"bytes,62,opt,name=f62"`
+	xxx_hidden_F63  *TestAllTypes          `protobuf:"bytes,63,opt,name=f63"`
+	xxx_hidden_F64  *TestAllTypes          `protobuf:"bytes,64,opt,name=f64"`
+	xxx_hidden_F65  *TestAllTypes          `protobuf:"bytes,65,opt,name=f65"`
+	xxx_hidden_F66  *TestAllTypes          `protobuf:"bytes,66,opt,name=f66"`
+	xxx_hidden_F67  *TestAllTypes          `protobuf:"bytes,67,opt,name=f67"`
+	xxx_hidden_F68  *TestAllTypes          `protobuf:"bytes,68,opt,name=f68"`
+	xxx_hidden_F69  *TestAllTypes          `protobuf:"bytes,69,opt,name=f69"`
+	xxx_hidden_F70  *TestAllTypes          `protobuf:"bytes,70,opt,name=f70"`
+	xxx_hidden_F71  *TestAllTypes          `protobuf:"bytes,71,opt,name=f71"`
+	xxx_hidden_F72  *TestAllTypes          `protobuf:"bytes,72,opt,name=f72"`
+	xxx_hidden_F73  *TestAllTypes          `protobuf:"bytes,73,opt,name=f73"`
+	xxx_hidden_F74  *TestAllTypes          `protobuf:"bytes,74,opt,name=f74"`
+	xxx_hidden_F75  *TestAllTypes          `protobuf:"bytes,75,opt,name=f75"`
+	xxx_hidden_F76  *TestAllTypes          `protobuf:"bytes,76,opt,name=f76"`
+	xxx_hidden_F77  *TestAllTypes          `protobuf:"bytes,77,opt,name=f77"`
+	xxx_hidden_F78  *TestAllTypes          `protobuf:"bytes,78,opt,name=f78"`
+	xxx_hidden_F79  *TestAllTypes          `protobuf:"bytes,79,opt,name=f79"`
+	xxx_hidden_F80  *TestAllTypes          `protobuf:"bytes,80,opt,name=f80"`
+	xxx_hidden_F81  *TestAllTypes          `protobuf:"bytes,81,opt,name=f81"`
+	xxx_hidden_F82  *TestAllTypes          `protobuf:"bytes,82,opt,name=f82"`
+	xxx_hidden_F83  *TestAllTypes          `protobuf:"bytes,83,opt,name=f83"`
+	xxx_hidden_F84  *TestAllTypes          `protobuf:"bytes,84,opt,name=f84"`
+	xxx_hidden_F85  *TestAllTypes          `protobuf:"bytes,85,opt,name=f85"`
+	xxx_hidden_F86  *TestAllTypes          `protobuf:"bytes,86,opt,name=f86"`
+	xxx_hidden_F87  *TestAllTypes          `protobuf:"bytes,87,opt,name=f87"`
+	xxx_hidden_F88  *TestAllTypes          `protobuf:"bytes,88,opt,name=f88"`
+	xxx_hidden_F89  *TestAllTypes          `protobuf:"bytes,89,opt,name=f89"`
+	xxx_hidden_F90  *TestAllTypes          `protobuf:"bytes,90,opt,name=f90"`
+	xxx_hidden_F91  *TestAllTypes          `protobuf:"bytes,91,opt,name=f91"`
+	xxx_hidden_F92  *TestAllTypes          `protobuf:"bytes,92,opt,name=f92"`
+	xxx_hidden_F93  *TestAllTypes          `protobuf:"bytes,93,opt,name=f93"`
+	xxx_hidden_F94  *TestAllTypes          `protobuf:"bytes,94,opt,name=f94"`
+	xxx_hidden_F95  *TestAllTypes          `protobuf:"bytes,95,opt,name=f95"`
+	xxx_hidden_F96  *TestAllTypes          `protobuf:"bytes,96,opt,name=f96"`
+	xxx_hidden_F97  *TestAllTypes          `protobuf:"bytes,97,opt,name=f97"`
+	xxx_hidden_F98  *TestAllTypes          `protobuf:"bytes,98,opt,name=f98"`
+	xxx_hidden_F99  *TestAllTypes          `protobuf:"bytes,99,opt,name=f99"`
+	xxx_hidden_F100 *TestAllTypes          `protobuf:"bytes,100,opt,name=f100"`
 	unknownFields   protoimpl.UnknownFields
 	sizeCache       protoimpl.SizeCache
 }
@@ -5321,8 +5321,8 @@
 
 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_hidden_C           int32                  `protobuf:"varint,1,opt,name=c"`
+	xxx_hidden_D           int32                  `protobuf:"varint,2,opt,name=d"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -5426,7 +5426,7 @@
 
 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_hidden_RequiredField int32                  `protobuf:"varint,1,req,name=required_field,json=requiredField"`
 	XXX_raceDetectHookData   protoimpl.RaceDetectHookData
 	XXX_presence             [1]uint32
 	unknownFields            protoimpl.UnknownFields
@@ -5501,9 +5501,9 @@
 
 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_OptionalMessage *TestRequired                    `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage"`
+	xxx_hidden_RepeatedMessage *[]*TestRequired                 `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage"`
+	xxx_hidden_MapMessage      map[int32]*TestRequired          `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" 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
@@ -5683,8 +5683,8 @@
 
 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"`
+	xxx_hidden_Optionalgroup *TestRequiredGroupFields_OptionalGroup    `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup"`
+	xxx_hidden_Repeatedgroup *[]*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -5767,7 +5767,7 @@
 
 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"`
+	xxx_hidden_OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage"`
 	// Deprecated: Do not use. This will be deleted in the near future.
 	XXX_lazyUnmarshalInfo  protoimpl.LazyUnmarshalInfo
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
@@ -5855,20 +5855,20 @@
 
 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"`
+	xxx_hidden_PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32"`
+	xxx_hidden_PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64"`
+	xxx_hidden_PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32"`
+	xxx_hidden_PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64"`
+	xxx_hidden_PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32"`
+	xxx_hidden_PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64"`
+	xxx_hidden_PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32"`
+	xxx_hidden_PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64"`
+	xxx_hidden_PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32"`
+	xxx_hidden_PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64"`
+	xxx_hidden_PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat"`
+	xxx_hidden_PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble"`
+	xxx_hidden_PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool"`
+	xxx_hidden_PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=opaque.goproto.proto.testeditions.ForeignEnum"`
 	unknownFields             protoimpl.UnknownFields
 	sizeCache                 protoimpl.SizeCache
 }
@@ -6138,14 +6138,14 @@
 
 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_hidden_Default     enums_opaque.Enum      `protobuf:"varint,1,opt,name=default,enum=opaque.goproto.proto.enums.Enum"`
+	xxx_hidden_Zero        enums_opaque.Enum      `protobuf:"varint,2,opt,name=zero,enum=opaque.goproto.proto.enums.Enum,def=0"`
+	xxx_hidden_One         enums_opaque.Enum      `protobuf:"varint,3,opt,name=one,enum=opaque.goproto.proto.enums.Enum,def=1"`
+	xxx_hidden_Elevent     enums_opaque.Enum      `protobuf:"varint,4,opt,name=elevent,enum=opaque.goproto.proto.enums.Enum,def=11"`
+	xxx_hidden_Seventeen   enums_opaque.Enum      `protobuf:"varint,5,opt,name=seventeen,enum=opaque.goproto.proto.enums.Enum,def=17"`
+	xxx_hidden_Thirtyseven enums_opaque.Enum      `protobuf:"varint,6,opt,name=thirtyseven,enum=opaque.goproto.proto.enums.Enum,def=37"`
+	xxx_hidden_Sixtyseven  enums_opaque.Enum      `protobuf:"varint,7,opt,name=sixtyseven,enum=opaque.goproto.proto.enums.Enum,def=67"`
+	xxx_hidden_Negative    enums_opaque.Enum      `protobuf:"varint,8,opt,name=negative,enum=opaque.goproto.proto.enums.Enum,def=-1"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6443,8 +6443,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6543,9 +6543,9 @@
 
 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_hidden_A                     int32                       `protobuf:"varint,17,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
+	xxx_hidden_SameFieldNumber       int32                       `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -6673,8 +6673,8 @@
 
 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_hidden_A                     int32                       `protobuf:"varint,47,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -6773,8 +6773,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_B           int32                  `protobuf:"varint,2,opt,name=b"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6878,7 +6878,7 @@
 
 type TestRequiredGroupFields_OptionalGroup struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,2,req,name=a"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -6953,7 +6953,7 @@
 
 type TestRequiredGroupFields_RepeatedGroup struct {
 	state                  protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_A           int32                  `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
+	xxx_hidden_A           int32                  `protobuf:"varint,4,req,name=a"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go
index 027a744..7270f9d 100644
--- a/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go
+++ b/internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.pb.go
@@ -60,9 +60,9 @@
 
 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_hidden_A                     int32                            `protobuf:"varint,17,opt,name=a"`
+	xxx_hidden_SameFieldNumber       int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -190,8 +190,8 @@
 
 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_hidden_A                     int32                            `protobuf:"varint,47,opt,name=a"`
+	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
 	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
 	XXX_presence                     [1]uint32
 	unknownFields                    protoimpl.UnknownFields
@@ -377,8 +377,8 @@
 
 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_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
+	xxx_hidden_Corecursive *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid_protoopaque.pb.go b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid_protoopaque.pb.go
index 96f66af..3a3d3d3 100644
--- a/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid_protoopaque.pb.go
+++ b/internal/testprotos/textpbeditions/textpbeditions_hybrid/test2.hybrid_protoopaque.pb.go
@@ -210,21 +210,21 @@
 // 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_hidden_OptBool     bool                   `protobuf:"varint,1,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32"`
+	xxx_hidden_OptInt64    int64                  `protobuf:"varint,3,opt,name=opt_int64,json=optInt64"`
+	xxx_hidden_OptUint32   uint32                 `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32"`
+	xxx_hidden_OptUint64   uint64                 `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64"`
+	xxx_hidden_OptSint32   int32                  `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32"`
+	xxx_hidden_OptSint64   int64                  `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64"`
+	xxx_hidden_OptFixed32  uint32                 `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32"`
+	xxx_hidden_OptFixed64  uint64                 `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64"`
+	xxx_hidden_OptSfixed32 int32                  `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32"`
+	xxx_hidden_OptSfixed64 int64                  `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64"`
+	xxx_hidden_OptFloat    float32                `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat"`
+	xxx_hidden_OptDouble   float64                `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble"`
+	xxx_hidden_OptBytes    []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -712,21 +712,21 @@
 // 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"`
+	xxx_hidden_SBool     bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool"`
+	xxx_hidden_SInt32    int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32"`
+	xxx_hidden_SInt64    int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64"`
+	xxx_hidden_SUint32   uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32"`
+	xxx_hidden_SUint64   uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64"`
+	xxx_hidden_SSint32   int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32"`
+	xxx_hidden_SSint64   int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64"`
+	xxx_hidden_SFixed32  uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32"`
+	xxx_hidden_SFixed64  uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64"`
+	xxx_hidden_SSfixed32 int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32"`
+	xxx_hidden_SSfixed64 int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64"`
+	xxx_hidden_SFloat    float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat"`
+	xxx_hidden_SDouble   float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble"`
+	xxx_hidden_SBytes    []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes"`
+	xxx_hidden_SString   string                 `protobuf:"bytes,13,opt,name=s_string,json=sString"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -968,7 +968,7 @@
 
 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"`
+	xxx_hidden_ValidatedString string                 `protobuf:"bytes,1,opt,name=validated_string,json=validatedString"`
 	unknownFields              protoimpl.UnknownFields
 	sizeCache                  protoimpl.SizeCache
 }
@@ -1025,7 +1025,7 @@
 
 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"`
+	xxx_hidden_ValidatedMessage *UTF8Validated         `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage"`
 	unknownFields               protoimpl.UnknownFields
 	sizeCache                   protoimpl.SizeCache
 }
@@ -1094,12 +1094,12 @@
 // 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=hybrid.pbeditions.Enum" json:"opt_enum,omitempty"`
-	xxx_hidden_RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=hybrid.pbeditions.Enum" json:"rpt_enum,omitempty"`
-	xxx_hidden_ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=hybrid.pbeditions.OpenEnum" json:"implicit_enum,omitempty"`
-	xxx_hidden_OptNestedEnum      Enums_NestedEnum       `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=hybrid.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=hybrid.pbeditions.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
-	xxx_hidden_ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=hybrid.pbeditions.Enums_NestedOpenEnum" json:"implicit_nested_enum,omitempty"`
+	xxx_hidden_OptEnum            Enum                   `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=hybrid.pbeditions.Enum"`
+	xxx_hidden_RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=hybrid.pbeditions.Enum"`
+	xxx_hidden_ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=hybrid.pbeditions.OpenEnum"`
+	xxx_hidden_OptNestedEnum      Enums_NestedEnum       `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=hybrid.pbeditions.Enums_NestedEnum"`
+	xxx_hidden_RptNestedEnum      []Enums_NestedEnum     `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=hybrid.pbeditions.Enums_NestedEnum"`
+	xxx_hidden_ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=hybrid.pbeditions.Enums_NestedOpenEnum"`
 	XXX_raceDetectHookData        protoimpl.RaceDetectHookData
 	XXX_presence                  [1]uint32
 	unknownFields                 protoimpl.UnknownFields
@@ -1260,15 +1260,15 @@
 // 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"`
+	xxx_hidden_RptBool   []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool"`
+	xxx_hidden_RptInt32  []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32"`
+	xxx_hidden_RptInt64  []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64"`
+	xxx_hidden_RptUint32 []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32"`
+	xxx_hidden_RptUint64 []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64"`
+	xxx_hidden_RptFloat  []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat"`
+	xxx_hidden_RptDouble []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString"`
+	xxx_hidden_RptBytes  [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1430,8 +1430,8 @@
 // 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"`
+	xxx_hidden_Int32ToStr  map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" 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" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields          protoimpl.UnknownFields
 	sizeCache              protoimpl.SizeCache
 }
@@ -1502,8 +1502,8 @@
 // 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptNested   *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1606,11 +1606,11 @@
 // 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"`
+	xxx_hidden_OptNested      *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_Optgroup       *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup"`
+	xxx_hidden_DelimitedField *Nests_OptGroup        `protobuf:"group,3,opt,name=OptGroup,json=delimitedField"`
+	xxx_hidden_RptNested      *[]*Nested             `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested"`
+	xxx_hidden_Rptgroup       *[]*Nests_RptGroup     `protobuf:"group,5,rep,name=RptGroup,json=rptgroup"`
 	unknownFields             protoimpl.UnknownFields
 	sizeCache                 protoimpl.SizeCache
 }
@@ -1757,12 +1757,12 @@
 // 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=hybrid.pbeditions.Enum" json:"req_enum,omitempty"`
-	xxx_hidden_ReqNested   *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	xxx_hidden_ReqBool     bool                   `protobuf:"varint,1,req,name=req_bool,json=reqBool"`
+	xxx_hidden_ReqSfixed64 int64                  `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64"`
+	xxx_hidden_ReqDouble   float64                `protobuf:"fixed64,3,req,name=req_double,json=reqDouble"`
+	xxx_hidden_ReqString   *string                `protobuf:"bytes,4,req,name=req_string,json=reqString"`
+	xxx_hidden_ReqEnum     Enum                   `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=hybrid.pbeditions.Enum"`
+	xxx_hidden_ReqNested   *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1983,8 +1983,8 @@
 // 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_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2094,7 +2094,7 @@
 
 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_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2172,9 +2172,9 @@
 
 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_OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_RptNested   *[]*NestedWithRequired         `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested"`
+	xxx_hidden_StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" 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
@@ -2354,9 +2354,9 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptBool     bool                   `protobuf:"varint,101,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	extensionFields        protoimpl.ExtensionFields
@@ -2580,7 +2580,7 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2702,7 +2702,7 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2781,24 +2781,24 @@
 // 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_hidden_OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32"`
+	xxx_hidden_OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64"`
+	xxx_hidden_OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32"`
+	xxx_hidden_OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64"`
+	xxx_hidden_OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat"`
+	xxx_hidden_OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble"`
+	xxx_hidden_OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes"`
+	xxx_hidden_OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration"`
+	xxx_hidden_OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp"`
+	xxx_hidden_OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct"`
+	xxx_hidden_OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList"`
+	xxx_hidden_OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue"`
+	xxx_hidden_OptNull      structpb.NullValue      `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue"`
+	xxx_hidden_OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty"`
+	xxx_hidden_OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny"`
+	xxx_hidden_OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask"`
 	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
 	XXX_presence            [1]uint32
 	unknownFields           protoimpl.UnknownFields
@@ -3283,10 +3283,10 @@
 
 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_hidden_OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup"`
+	xxx_hidden_NestedDelimitedField *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=nestedDelimitedField"`
 	XXX_raceDetectHookData          protoimpl.RaceDetectHookData
 	XXX_presence                    [1]uint32
 	unknownFields                   protoimpl.UnknownFields
@@ -3436,7 +3436,7 @@
 
 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"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -3493,7 +3493,7 @@
 
 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_hidden_OptFixed32  uint32                 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
diff --git a/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go
index 152e2c6..ebe7758 100644
--- a/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go
+++ b/internal/testprotos/textpbeditions/textpbeditions_opaque/test2.opaque.pb.go
@@ -208,21 +208,21 @@
 // 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_hidden_OptBool     bool                   `protobuf:"varint,1,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32"`
+	xxx_hidden_OptInt64    int64                  `protobuf:"varint,3,opt,name=opt_int64,json=optInt64"`
+	xxx_hidden_OptUint32   uint32                 `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32"`
+	xxx_hidden_OptUint64   uint64                 `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64"`
+	xxx_hidden_OptSint32   int32                  `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32"`
+	xxx_hidden_OptSint64   int64                  `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64"`
+	xxx_hidden_OptFixed32  uint32                 `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32"`
+	xxx_hidden_OptFixed64  uint64                 `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64"`
+	xxx_hidden_OptSfixed32 int32                  `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32"`
+	xxx_hidden_OptSfixed64 int64                  `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64"`
+	xxx_hidden_OptFloat    float32                `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat"`
+	xxx_hidden_OptDouble   float64                `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble"`
+	xxx_hidden_OptBytes    []byte                 `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,13,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -710,21 +710,21 @@
 // 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"`
+	xxx_hidden_SBool     bool                   `protobuf:"varint,1,opt,name=s_bool,json=sBool"`
+	xxx_hidden_SInt32    int32                  `protobuf:"varint,2,opt,name=s_int32,json=sInt32"`
+	xxx_hidden_SInt64    int64                  `protobuf:"varint,3,opt,name=s_int64,json=sInt64"`
+	xxx_hidden_SUint32   uint32                 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32"`
+	xxx_hidden_SUint64   uint64                 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64"`
+	xxx_hidden_SSint32   int32                  `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32"`
+	xxx_hidden_SSint64   int64                  `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64"`
+	xxx_hidden_SFixed32  uint32                 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32"`
+	xxx_hidden_SFixed64  uint64                 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64"`
+	xxx_hidden_SSfixed32 int32                  `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32"`
+	xxx_hidden_SSfixed64 int64                  `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64"`
+	xxx_hidden_SFloat    float32                `protobuf:"fixed32,20,opt,name=s_float,json=sFloat"`
+	xxx_hidden_SDouble   float64                `protobuf:"fixed64,21,opt,name=s_double,json=sDouble"`
+	xxx_hidden_SBytes    []byte                 `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes"`
+	xxx_hidden_SString   string                 `protobuf:"bytes,13,opt,name=s_string,json=sString"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -966,7 +966,7 @@
 
 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"`
+	xxx_hidden_ValidatedString string                 `protobuf:"bytes,1,opt,name=validated_string,json=validatedString"`
 	unknownFields              protoimpl.UnknownFields
 	sizeCache                  protoimpl.SizeCache
 }
@@ -1023,7 +1023,7 @@
 
 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"`
+	xxx_hidden_ValidatedMessage *UTF8Validated         `protobuf:"bytes,1,opt,name=validated_message,json=validatedMessage"`
 	unknownFields               protoimpl.UnknownFields
 	sizeCache                   protoimpl.SizeCache
 }
@@ -1092,12 +1092,12 @@
 // 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_hidden_OptEnum            Enum                   `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=opaque.pbeditions.Enum"`
+	xxx_hidden_RptEnum            []Enum                 `protobuf:"varint,2,rep,packed,name=rpt_enum,json=rptEnum,enum=opaque.pbeditions.Enum"`
+	xxx_hidden_ImplicitEnum       OpenEnum               `protobuf:"varint,5,opt,name=implicit_enum,json=implicitEnum,enum=opaque.pbeditions.OpenEnum"`
+	xxx_hidden_OptNestedEnum      Enums_NestedEnum       `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=opaque.pbeditions.Enums_NestedEnum"`
+	xxx_hidden_RptNestedEnum      []Enums_NestedEnum     `protobuf:"varint,4,rep,packed,name=rpt_nested_enum,json=rptNestedEnum,enum=opaque.pbeditions.Enums_NestedEnum"`
+	xxx_hidden_ImplicitNestedEnum Enums_NestedOpenEnum   `protobuf:"varint,6,opt,name=implicit_nested_enum,json=implicitNestedEnum,enum=opaque.pbeditions.Enums_NestedOpenEnum"`
 	XXX_raceDetectHookData        protoimpl.RaceDetectHookData
 	XXX_presence                  [1]uint32
 	unknownFields                 protoimpl.UnknownFields
@@ -1258,15 +1258,15 @@
 // 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"`
+	xxx_hidden_RptBool   []bool                 `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool"`
+	xxx_hidden_RptInt32  []int32                `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32"`
+	xxx_hidden_RptInt64  []int64                `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64"`
+	xxx_hidden_RptUint32 []uint32               `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32"`
+	xxx_hidden_RptUint64 []uint64               `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64"`
+	xxx_hidden_RptFloat  []float32              `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat"`
+	xxx_hidden_RptDouble []float64              `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,8,rep,name=rpt_string,json=rptString"`
+	xxx_hidden_RptBytes  [][]byte               `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1428,8 +1428,8 @@
 // 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"`
+	xxx_hidden_Int32ToStr  map[int32]string       `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" 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" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	unknownFields          protoimpl.UnknownFields
 	sizeCache              protoimpl.SizeCache
 }
@@ -1500,8 +1500,8 @@
 // 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptNested   *Nested                `protobuf:"bytes,2,opt,name=opt_nested,json=optNested"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1604,11 +1604,11 @@
 // 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"`
+	xxx_hidden_OptNested      *Nested                `protobuf:"bytes,1,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_Optgroup       *Nests_OptGroup        `protobuf:"group,2,opt,name=OptGroup,json=optgroup"`
+	xxx_hidden_DelimitedField *Nests_OptGroup        `protobuf:"group,3,opt,name=OptGroup,json=delimitedField"`
+	xxx_hidden_RptNested      *[]*Nested             `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested"`
+	xxx_hidden_Rptgroup       *[]*Nests_RptGroup     `protobuf:"group,5,rep,name=RptGroup,json=rptgroup"`
 	unknownFields             protoimpl.UnknownFields
 	sizeCache                 protoimpl.SizeCache
 }
@@ -1755,12 +1755,12 @@
 // 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_hidden_ReqBool     bool                   `protobuf:"varint,1,req,name=req_bool,json=reqBool"`
+	xxx_hidden_ReqSfixed64 int64                  `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64"`
+	xxx_hidden_ReqDouble   float64                `protobuf:"fixed64,3,req,name=req_double,json=reqDouble"`
+	xxx_hidden_ReqString   *string                `protobuf:"bytes,4,req,name=req_string,json=reqString"`
+	xxx_hidden_ReqEnum     Enum                   `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=opaque.pbeditions.Enum"`
+	xxx_hidden_ReqNested   *Nested                `protobuf:"bytes,6,req,name=req_nested,json=reqNested"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -1981,8 +1981,8 @@
 // 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_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString"`
+	xxx_hidden_OptString   *string                `protobuf:"bytes,2,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2092,7 +2092,7 @@
 
 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_hidden_ReqString   *string                `protobuf:"bytes,1,req,name=req_string,json=reqString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2170,9 +2170,9 @@
 
 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_OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_RptNested   *[]*NestedWithRequired         `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested"`
+	xxx_hidden_StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" 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
@@ -2352,9 +2352,9 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptBool     bool                   `protobuf:"varint,101,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32    int32                  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	extensionFields        protoimpl.ExtensionFields
@@ -2578,7 +2578,7 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2700,7 +2700,7 @@
 
 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_hidden_OptString   *string                `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields
@@ -2779,24 +2779,24 @@
 // 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_hidden_OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool"`
+	xxx_hidden_OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32"`
+	xxx_hidden_OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64"`
+	xxx_hidden_OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32"`
+	xxx_hidden_OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64"`
+	xxx_hidden_OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat"`
+	xxx_hidden_OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble"`
+	xxx_hidden_OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes"`
+	xxx_hidden_OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration"`
+	xxx_hidden_OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp"`
+	xxx_hidden_OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct"`
+	xxx_hidden_OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList"`
+	xxx_hidden_OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue"`
+	xxx_hidden_OptNull      structpb.NullValue      `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue"`
+	xxx_hidden_OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty"`
+	xxx_hidden_OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny"`
+	xxx_hidden_OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask"`
 	XXX_raceDetectHookData  protoimpl.RaceDetectHookData
 	XXX_presence            [1]uint32
 	unknownFields           protoimpl.UnknownFields
@@ -3281,10 +3281,10 @@
 
 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_hidden_OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString"`
+	xxx_hidden_OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested"`
+	xxx_hidden_Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup"`
+	xxx_hidden_NestedDelimitedField *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=nestedDelimitedField"`
 	XXX_raceDetectHookData          protoimpl.RaceDetectHookData
 	XXX_presence                    [1]uint32
 	unknownFields                   protoimpl.UnknownFields
@@ -3434,7 +3434,7 @@
 
 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"`
+	xxx_hidden_RptString []string               `protobuf:"bytes,1,rep,name=rpt_string,json=rptString"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -3491,7 +3491,7 @@
 
 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_hidden_OptFixed32  uint32                 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32"`
 	XXX_raceDetectHookData protoimpl.RaceDetectHookData
 	XXX_presence           [1]uint32
 	unknownFields          protoimpl.UnknownFields