diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid.proto
index d15394c..dbb4229 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid.proto
@@ -331,3 +331,9 @@
     int32 which_which_foo = 2;
   }
 }
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go
index 607ba7b..197f9b2 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid/test_name_clash_hybrid.pb.go
@@ -3585,6 +3585,139 @@
 
 func (*M20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	XFoo          *string                `protobuf:"bytes,1,opt,name=_foo,json=Foo" json:"_foo,omitempty"`
+	XFoo_         *string                `protobuf:"bytes,2,opt,name=X_foo,json=XFoo" json:"X_foo,omitempty"`
+	GetXFoo__     *string                `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo" json:"get_x_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil && x.XFoo != nil {
+		return *x.XFoo
+	}
+	return ""
+}
+
+// Deprecated: Use GetXFoo_1 instead.
+func (x *M21) GetXFoo() string {
+	return x.GetXFoo_1()
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil && x.XFoo_ != nil {
+		return *x.XFoo_
+	}
+	return ""
+}
+
+// Deprecated: Use GetXFoo_2 instead.
+func (x *M21) GetXFoo_() string {
+	return x.GetXFoo_2()
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil && x.GetXFoo__ != nil {
+		return *x.GetXFoo__
+	}
+	return ""
+}
+
+// Deprecated: Use GetGetXFoo instead.
+func (x *M21) GetGetXFoo__() string {
+	return x.GetGetXFoo()
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.XFoo = &v
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.XFoo_ = &v
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.GetXFoo__ = &v
+}
+
+func (x *M21) HasXFoo_1() bool {
+	if x == nil {
+		return false
+	}
+	return x.XFoo != nil
+}
+
+func (x *M21) HasXFoo_2() bool {
+	if x == nil {
+		return false
+	}
+	return x.XFoo_ != nil
+}
+
+func (x *M21) HasGetXFoo() bool {
+	if x == nil {
+		return false
+	}
+	return x.GetXFoo__ != nil
+}
+
+func (x *M21) ClearXFoo_1() {
+	x.XFoo = nil
+}
+
+func (x *M21) ClearXFoo_2() {
+	x.XFoo_ = nil
+}
+
+func (x *M21) ClearGetXFoo() {
+	x.GetXFoo__ = nil
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  *string
+	XFoo_2  *string
+	GetXFoo *string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.XFoo = b.XFoo_1
+	x.XFoo_ = b.XFoo_2
+	x.GetXFoo__ = b.GetXFoo
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc = string([]byte{
@@ -3695,17 +3828,22 @@
 	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63,
 	0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
 	0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68, 0x46,
-	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x42,
-	0x60, 0x5a, 0x56, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
-	0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12, 0x1a,
+	0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x60, 0x5a, 0x56, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_goTypes = []any{
 	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid.M1
 	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid.M2
@@ -3727,6 +3865,7 @@
 	(*M18)(nil), // 17: net.proto2.go.testdata.nameclashhybrid.M18
 	(*M19)(nil), // 18: net.proto2.go.testdata.nameclashhybrid.M19
 	(*M20)(nil), // 19: net.proto2.go.testdata.nameclashhybrid.M20
+	(*M21)(nil), // 20: net.proto2.go.testdata.nameclashhybrid.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_depIdxs = []int32{
 	0, // [0:0] is the sub-list for method output_type
@@ -3791,7 +3930,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   20,
+			NumMessages:   21,
 			NumExtensions: 0,
 			NumServices:   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 e369008..969754a 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
@@ -3298,6 +3298,150 @@
 
 func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_XFoo        *string                `protobuf:"bytes,1,opt,name=_foo,json=Foo"`
+	xxx_hidden_XFoo_       *string                `protobuf:"bytes,2,opt,name=X_foo,json=XFoo"`
+	xxx_hidden_GetXFoo__   *string                `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil {
+		if x.xxx_hidden_XFoo != nil {
+			return *x.xxx_hidden_XFoo
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil {
+		if x.xxx_hidden_XFoo_ != nil {
+			return *x.xxx_hidden_XFoo_
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil {
+		if x.xxx_hidden_GetXFoo__ != nil {
+			return *x.xxx_hidden_GetXFoo__
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.xxx_hidden_XFoo = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.xxx_hidden_XFoo_ = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.xxx_hidden_GetXFoo__ = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M21) HasXFoo_1() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M21) HasXFoo_2() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M21) HasGetXFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M21) ClearXFoo_1() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_XFoo = nil
+}
+
+func (x *M21) ClearXFoo_2() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_XFoo_ = nil
+}
+
+func (x *M21) ClearGetXFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_GetXFoo__ = nil
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  *string
+	XFoo_2  *string
+	GetXFoo *string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.XFoo_1 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_XFoo = b.XFoo_1
+	}
+	if b.XFoo_2 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_XFoo_ = b.XFoo_2
+	}
+	if b.GetXFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_GetXFoo__ = b.GetXFoo
+	}
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc = string([]byte{
@@ -3408,17 +3552,22 @@
 	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63,
 	0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
 	0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68, 0x46,
-	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x42,
-	0x60, 0x5a, 0x56, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
-	0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12, 0x1a,
+	0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x60, 0x5a, 0x56, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x02, 0x62, 0x08, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_goTypes = []any{
 	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid.M1
 	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid.M2
@@ -3440,6 +3589,7 @@
 	(*M18)(nil), // 17: net.proto2.go.testdata.nameclashhybrid.M18
 	(*M19)(nil), // 18: net.proto2.go.testdata.nameclashhybrid.M19
 	(*M20)(nil), // 19: net.proto2.go.testdata.nameclashhybrid.M20
+	(*M21)(nil), // 20: net.proto2.go.testdata.nameclashhybrid.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_depIdxs = []int32{
 	0, // [0:0] is the sub-list for method output_type
@@ -3504,7 +3654,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   20,
+			NumMessages:   21,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3.proto
index 8be92f6..c5d230b 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3.proto
@@ -21,7 +21,7 @@
 // 1 - My field name clashes with their getter name
 // 2 - My getter name clashes with their field name
 
-edition = "2023";
+syntax = "proto3";
 
 package net.proto2.go.testdata.nameclashhybrid3;
 
@@ -29,9 +29,6 @@
 
 option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3";
 
-option features.field_presence = IMPLICIT;
-option features.(pb.go).api_level = API_HYBRID;
-
 message M0 {
   int32 i1 = 1;
 }
@@ -336,3 +333,9 @@
     int32 which_which_foo = 2;
   }
 }
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go
index 48e7408..4e700e9 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3/test_name_clash_hybrid3.pb.go
@@ -38,7 +38,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"hybrid.v1"`
-	I1            int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	I1            int32                  `protobuf:"varint,1,opt,name=i1,proto3" json:"i1,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -105,9 +105,9 @@
 	// Foo                    | get_foo            | G    | Get_Foo
 	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
 	// GetGetFoo              | -                  | -    | GetGetGetFoo
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
-	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -253,9 +253,9 @@
 	// Foo                    | get_foo            | G    | Get_Foo
 	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
 	// GetGetFoo              | -                  | -    | GetGetGetFoo
-	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
-	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -401,9 +401,9 @@
 	// Foo                    | get_foo            | G    | Get_Foo
 	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
 	// GetGetFoo              | -                  | -    | GetGetGetFoo
-	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
-	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
+	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -558,12 +558,12 @@
 	// Foo                    | get_foo            | G    | Get_Foo
 	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
 	// GetGetGetFoo           | -                  | -    | GetGetGetGetFoo
-	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
 	// Types that are valid to be assigned to GetGetFoo_:
 	//
 	//	*M4_GetGetGetFoo
 	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
-	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -758,7 +758,7 @@
 }
 
 type M4_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
@@ -780,12 +780,12 @@
 	// Foo                    | get_foo            | G    | Get_Foo
 	// GetFoo                 | get_get_foo        | G    | Get_GetFoo
 	// GetGetFoo              | get_get_get_foo    | G    | Get_GetGetFoo
-	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
 	// Types that are valid to be assigned to GetGetGetFoo:
 	//
 	//	*M5_GetGetFoo_
 	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
-	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -986,7 +986,7 @@
 }
 
 type M5_GetGetFoo_ struct {
-	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
@@ -1012,8 +1012,8 @@
 	//
 	//	*M6_GetGetGetFoo
 	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
-	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1207,7 +1207,7 @@
 }
 
 type M6_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
@@ -1234,7 +1234,7 @@
 	//	*M7_Bar
 	//	*M7_GetFoo_
 	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
-	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1438,11 +1438,11 @@
 }
 
 type M7_Bar struct {
-	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+	Bar bool `protobuf:"varint,4,opt,name=bar,proto3,oneof"`
 }
 
 type M7_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*M7_Bar) isM7_GetGetFoo() {}
@@ -1470,8 +1470,8 @@
 	//
 	//	*M8_GetGetFoo
 	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
-	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1670,7 +1670,7 @@
 }
 
 type M8_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
@@ -1697,7 +1697,7 @@
 	//	*M9_GetGetFoo
 	//	*M9_GetFoo_
 	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
-	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1906,11 +1906,11 @@
 }
 
 type M9_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 type M9_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
@@ -1924,8 +1924,8 @@
 	// initial name in Go     | Clashes with field | Setter name
 	// Foo                    | set_foo            | Set_Foo
 	// SetFoo                 | -                  | SetSetFoo
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
-	SetFoo        *M0 `protobuf:"bytes,2,opt,name=set_foo,json=setFoo" json:"set_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
+	SetFoo        *M0 `protobuf:"bytes,2,opt,name=set_foo,json=setFoo,proto3" json:"set_foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -2032,7 +2032,7 @@
 	// initial name in Go     | Clashes with field | Setter name
 	// Foo                    | set_foo            | Set_Foo
 	// SetSetFoo              | -                  | SetSetSetFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to SetFoo:
 	//
 	//	*M11_SetSetFoo
@@ -2193,7 +2193,7 @@
 }
 
 type M11_SetSetFoo struct {
-	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,proto3,oneof"`
 }
 
 func (*M11_SetSetFoo) isM11_SetFoo() {}
@@ -2205,7 +2205,7 @@
 	// initial name in Go     | Clashes with field | Setter name
 	// Foo                    | set_foo            | Set_Foo
 	// SetFoo                 | set_set_foo        | Set_SetFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to SetSetFoo:
 	//
 	//	*M12_SetFoo
@@ -2371,7 +2371,7 @@
 }
 
 type M12_SetFoo struct {
-	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,proto3,oneof"`
 }
 
 func (*M12_SetFoo) isM12_SetSetFoo() {}
@@ -2383,8 +2383,8 @@
 	// initial name in Go     | Clashes with field | Hasser name
 	// Foo                    | has_foo            | Has_Foo
 	// HasFoo                 | -                  | HasHasFoo
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
-	HasFoo        *M0 `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo" json:"has_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
+	HasFoo        *M0 `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo,proto3" json:"has_foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -2492,7 +2492,7 @@
 	// Foo                    | has_foo            | Has_Foo
 	// HasFoo                 | has_has_foo        | Has_HasFoo
 	// HasHasFoo              | -                  | HasHasHasFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to HasFoo:
 	//
 	//	*M14_HasHasFoo
@@ -2654,7 +2654,7 @@
 }
 
 type M14_HasHasFoo struct {
-	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,proto3,oneof"`
 }
 
 func (*M14_HasHasFoo) isM14_HasFoo() {}
@@ -2667,7 +2667,7 @@
 	// Foo                    | has_foo            | Has_Foo
 	// HasFoo                 | has_has_foo        | Has_HasFoo
 	// HasHasFoo              | -                  | HasHasHasFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to HasHasFoo:
 	//
 	//	*M15_HasFoo
@@ -2834,7 +2834,7 @@
 }
 
 type M15_HasFoo struct {
-	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,proto3,oneof"`
 }
 
 func (*M15_HasFoo) isM15_HasHasFoo() {}
@@ -2846,8 +2846,8 @@
 	// initial name in Go     | Clashes with field | Clearer name
 	// Foo                    | clear_foo            | Clear_Foo
 	// ClearFoo               | -                  | ClearClearFoo
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
-	ClearFoo      *M0 `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo" json:"clear_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
+	ClearFoo      *M0 `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo,proto3" json:"clear_foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -2955,7 +2955,7 @@
 	// Foo                    | clear_foo          | Clear_Foo
 	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
 	// ClearClearFoo          | -                  | ClearClearClearFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to ClearFoo:
 	//
 	//	*M17_ClearClearFoo
@@ -3117,7 +3117,7 @@
 }
 
 type M17_ClearClearFoo struct {
-	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,proto3,oneof"`
 }
 
 func (*M17_ClearClearFoo) isM17_ClearFoo() {}
@@ -3130,7 +3130,7 @@
 	// Foo                    | clear_foo          | Clear_Foo
 	// ClearFoo               | clear_clear_foo    | Clear_ClearFoo
 	// ClearClearFoo          | -                  | ClearClearClearFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to ClearClearFoo:
 	//
 	//	*M18_ClearFoo
@@ -3297,7 +3297,7 @@
 }
 
 type M18_ClearFoo struct {
-	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,proto3,oneof"`
 }
 
 func (*M18_ClearFoo) isM18_ClearClearFoo() {}
@@ -3310,7 +3310,7 @@
 	// Foo                    | -                  | -
 	// WhichFoo               | -                  | -
 	// WhichWhichFoo          | -                  | WhichWhichWhichFoo
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to WhichWhichFoo:
 	//
 	//	*M19_WhichFoo
@@ -3467,7 +3467,7 @@
 }
 
 type M19_WhichFoo struct {
-	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,proto3,oneof"`
 }
 
 func (*M19_WhichFoo) isM19_WhichWhichFoo() {}
@@ -3480,7 +3480,7 @@
 	// Foo                    | -                  | -
 	// WhichFoo               | which_which_foo    | Which_WhichFoo
 	// WhichWhichFoo          | -                  | -
-	Foo *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	// Types that are valid to be assigned to WhichFoo:
 	//
 	//	*M20_WhichWhichFoo
@@ -3637,11 +3637,111 @@
 }
 
 type M20_WhichWhichFoo struct {
-	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,proto3,oneof"`
 }
 
 func (*M20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	XFoo          string                 `protobuf:"bytes,1,opt,name=_foo,json=Foo,proto3" json:"_foo,omitempty"`
+	XFoo_         string                 `protobuf:"bytes,2,opt,name=X_foo,json=XFoo,proto3" json:"X_foo,omitempty"`
+	GetXFoo__     string                 `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo,proto3" json:"get_x_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil {
+		return x.XFoo
+	}
+	return ""
+}
+
+// Deprecated: Use GetXFoo_1 instead.
+func (x *M21) GetXFoo() string {
+	return x.GetXFoo_1()
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil {
+		return x.XFoo_
+	}
+	return ""
+}
+
+// Deprecated: Use GetXFoo_2 instead.
+func (x *M21) GetXFoo_() string {
+	return x.GetXFoo_2()
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil {
+		return x.GetXFoo__
+	}
+	return ""
+}
+
+// Deprecated: Use GetGetXFoo instead.
+func (x *M21) GetGetXFoo__() string {
+	return x.GetGetXFoo()
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.XFoo = v
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.XFoo_ = v
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.GetXFoo__ = v
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  string
+	XFoo_2  string
+	GetXFoo string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.XFoo = b.XFoo_1
+	x.XFoo_ = b.XFoo_2
+	x.GetXFoo__ = b.GetXFoo
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc = string([]byte{
@@ -3848,17 +3948,20 @@
 	0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
 	0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68,
 	0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f,
-	0x42, 0x63, 0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63,
-	0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e,
-	0x02, 0x10, 0x02, 0x08, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
-	0xe8, 0x07,
+	0x22, 0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12,
+	0x1a, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x59, 0x5a, 0x57, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_goTypes = []any{
 	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid3.M0
 	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid3.M1
@@ -3881,6 +3984,7 @@
 	(*M18)(nil), // 18: net.proto2.go.testdata.nameclashhybrid3.M18
 	(*M19)(nil), // 19: net.proto2.go.testdata.nameclashhybrid3.M19
 	(*M20)(nil), // 20: net.proto2.go.testdata.nameclashhybrid3.M20
+	(*M21)(nil), // 21: net.proto2.go.testdata.nameclashhybrid3.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_depIdxs = []int32{
 	0,  // 0: net.proto2.go.testdata.nameclashhybrid3.M1.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
@@ -3978,7 +4082,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   21,
+			NumMessages:   22,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
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 9ad9799..2f66ef2 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
@@ -38,7 +38,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1"`
+	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1,proto3"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -95,9 +95,9 @@
 
 type M1 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -223,9 +223,9 @@
 
 type M2 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -351,9 +351,9 @@
 
 type M3 struct {
 	state                 protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_GetGetFoo_ *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -479,9 +479,9 @@
 
 type M4 struct {
 	state                 protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
 	xxx_hidden_GetGetFoo_ isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -659,16 +659,16 @@
 }
 
 type m4_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*m4_GetGetGetFoo) isM4_GetGetFoo_() {}
 
 type M5 struct {
 	state                   protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
 	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
-	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields           protoimpl.UnknownFields
 	sizeCache               protoimpl.SizeCache
 }
@@ -847,7 +847,7 @@
 }
 
 type m5_GetGetFoo_ struct {
-	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*m5_GetGetFoo_) isM5_GetGetGetFoo() {}
@@ -855,8 +855,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"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1033,7 +1033,7 @@
 }
 
 type m6_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*m6_GetGetGetFoo) isM6_GetGetFoo() {}
@@ -1041,7 +1041,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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1228,11 +1228,11 @@
 }
 
 type m7_Bar struct {
-	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+	Bar bool `protobuf:"varint,4,opt,name=bar,proto3,oneof"`
 }
 
 type m7_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*m7_Bar) isM7_GetGetFoo() {}
@@ -1242,8 +1242,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"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1420,7 +1420,7 @@
 }
 
 type m8_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*m8_GetGetFoo) isM8_GetGetGetFoo_() {}
@@ -1428,7 +1428,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"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1615,11 +1615,11 @@
 }
 
 type m9_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 type m9_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*m9_GetGetFoo) isM9_GetGetGetFoo_() {}
@@ -1628,8 +1628,8 @@
 
 type M10 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo,proto3"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -1726,7 +1726,7 @@
 
 type M11 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_SetFoo isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -1872,14 +1872,14 @@
 }
 
 type m11_SetSetFoo struct {
-	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,proto3,oneof"`
 }
 
 func (*m11_SetSetFoo) isM11_SetFoo() {}
 
 type M12 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_SetSetFoo isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2025,15 +2025,15 @@
 }
 
 type m12_SetFoo struct {
-	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,proto3,oneof"`
 }
 
 func (*m12_SetFoo) isM12_SetSetFoo() {}
 
 type M13 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo,proto3"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -2130,7 +2130,7 @@
 
 type M14 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_HasFoo isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -2277,14 +2277,14 @@
 }
 
 type m14_HasHasFoo struct {
-	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,proto3,oneof"`
 }
 
 func (*m14_HasHasFoo) isM14_HasFoo() {}
 
 type M15 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_HasHasFoo isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2431,15 +2431,15 @@
 }
 
 type m15_HasFoo struct {
-	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,proto3,oneof"`
 }
 
 func (*m15_HasFoo) isM15_HasHasFoo() {}
 
 type M16 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo,proto3"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
 }
@@ -2536,7 +2536,7 @@
 
 type M17 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_ClearFoo isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -2683,14 +2683,14 @@
 }
 
 type m17_ClearClearFoo struct {
-	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,proto3,oneof"`
 }
 
 func (*m17_ClearClearFoo) isM17_ClearFoo() {}
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2837,14 +2837,14 @@
 }
 
 type m18_ClearFoo struct {
-	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,proto3,oneof"`
 }
 
 func (*m18_ClearFoo) isM18_ClearClearFoo() {}
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2991,14 +2991,14 @@
 }
 
 type m19_WhichFoo struct {
-	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,proto3,oneof"`
 }
 
 func (*m19_WhichFoo) isM19_WhichWhichFoo() {}
 
 type M20 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_WhichFoo isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -3145,11 +3145,96 @@
 }
 
 type m20_WhichWhichFoo struct {
-	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,proto3,oneof"`
 }
 
 func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_XFoo      string                 `protobuf:"bytes,1,opt,name=_foo,json=Foo,proto3"`
+	xxx_hidden_XFoo_     string                 `protobuf:"bytes,2,opt,name=X_foo,json=XFoo,proto3"`
+	xxx_hidden_GetXFoo__ string                 `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo,proto3"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil {
+		return x.xxx_hidden_XFoo
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil {
+		return x.xxx_hidden_XFoo_
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil {
+		return x.xxx_hidden_GetXFoo__
+	}
+	return ""
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.xxx_hidden_XFoo = v
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.xxx_hidden_XFoo_ = v
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.xxx_hidden_GetXFoo__ = v
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  string
+	XFoo_2  string
+	GetXFoo string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_XFoo = b.XFoo_1
+	x.xxx_hidden_XFoo_ = b.XFoo_2
+	x.xxx_hidden_GetXFoo__ = b.GetXFoo
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc = string([]byte{
@@ -3356,17 +3441,20 @@
 	0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
 	0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68,
 	0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f,
-	0x42, 0x63, 0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63,
-	0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e,
-	0x02, 0x10, 0x02, 0x08, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
-	0xe8, 0x07,
+	0x22, 0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12,
+	0x1a, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x59, 0x5a, 0x57, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_goTypes = []any{
 	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashhybrid3.M0
 	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashhybrid3.M1
@@ -3389,6 +3477,7 @@
 	(*M18)(nil), // 18: net.proto2.go.testdata.nameclashhybrid3.M18
 	(*M19)(nil), // 19: net.proto2.go.testdata.nameclashhybrid3.M19
 	(*M20)(nil), // 20: net.proto2.go.testdata.nameclashhybrid3.M20
+	(*M21)(nil), // 21: net.proto2.go.testdata.nameclashhybrid3.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_depIdxs = []int32{
 	0,  // 0: net.proto2.go.testdata.nameclashhybrid3.M1.foo:type_name -> net.proto2.go.testdata.nameclashhybrid3.M0
@@ -3486,7 +3575,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_hybrid3_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   21,
+			NumMessages:   22,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque.proto
index e23674c..81e234b 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque.proto
@@ -331,3 +331,9 @@
     int32 which_which_foo = 2;
   }
 }
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
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 291c4c9..a8a67d5 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
@@ -3296,6 +3296,150 @@
 
 func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_XFoo        *string                `protobuf:"bytes,1,opt,name=_foo,json=Foo"`
+	xxx_hidden_XFoo_       *string                `protobuf:"bytes,2,opt,name=X_foo,json=XFoo"`
+	xxx_hidden_GetXFoo__   *string                `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo"`
+	XXX_raceDetectHookData protoimpl.RaceDetectHookData
+	XXX_presence           [1]uint32
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil {
+		if x.xxx_hidden_XFoo != nil {
+			return *x.xxx_hidden_XFoo
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil {
+		if x.xxx_hidden_XFoo_ != nil {
+			return *x.xxx_hidden_XFoo_
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil {
+		if x.xxx_hidden_GetXFoo__ != nil {
+			return *x.xxx_hidden_GetXFoo__
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.xxx_hidden_XFoo = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.xxx_hidden_XFoo_ = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.xxx_hidden_GetXFoo__ = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 3)
+}
+
+func (x *M21) HasXFoo_1() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
+}
+
+func (x *M21) HasXFoo_2() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
+}
+
+func (x *M21) HasGetXFoo() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 2)
+}
+
+func (x *M21) ClearXFoo_1() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
+	x.xxx_hidden_XFoo = nil
+}
+
+func (x *M21) ClearXFoo_2() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
+	x.xxx_hidden_XFoo_ = nil
+}
+
+func (x *M21) ClearGetXFoo() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2)
+	x.xxx_hidden_GetXFoo__ = nil
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  *string
+	XFoo_2  *string
+	GetXFoo *string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	if b.XFoo_1 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
+		x.xxx_hidden_XFoo = b.XFoo_1
+	}
+	if b.XFoo_2 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
+		x.xxx_hidden_XFoo_ = b.XFoo_2
+	}
+	if b.GetXFoo != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 3)
+		x.xxx_hidden_GetXFoo__ = b.GetXFoo
+	}
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc = string([]byte{
@@ -3406,17 +3550,22 @@
 	0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x63,
 	0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
 	0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68, 0x46,
-	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x42,
-	0x60, 0x5a, 0x56, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61,
-	0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10,
-	0x03, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x22,
+	0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f, 0x66,
+	0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12, 0x1a,
+	0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x60, 0x5a, 0x56, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
+	0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x03, 0x62, 0x08, 0x65, 0x64,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_goTypes = []any{
 	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashopaque.M1
 	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashopaque.M2
@@ -3438,6 +3587,7 @@
 	(*M18)(nil), // 17: net.proto2.go.testdata.nameclashopaque.M18
 	(*M19)(nil), // 18: net.proto2.go.testdata.nameclashopaque.M19
 	(*M20)(nil), // 19: net.proto2.go.testdata.nameclashopaque.M20
+	(*M21)(nil), // 20: net.proto2.go.testdata.nameclashopaque.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_depIdxs = []int32{
 	0, // [0:0] is the sub-list for method output_type
@@ -3502,7 +3652,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   20,
+			NumMessages:   21,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3.proto
index fdafeee..7e31716 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3.proto
@@ -21,7 +21,7 @@
 // 1 - My field name clashes with their getter name
 // 2 - My getter name clashes with their field name
 
-edition = "2023";
+syntax = "proto3";
 
 package net.proto2.go.testdata.nameclashopaque3;
 
@@ -29,9 +29,6 @@
 
 option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3";
 
-option features.field_presence = IMPLICIT;
-option features.(pb.go).api_level = API_OPAQUE;
-
 message M0 {
   int32 i1 = 1;
 }
@@ -336,3 +333,9 @@
     int32 which_which_foo = 2;
   }
 }
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
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 5f00aab..784c6ad 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
@@ -36,7 +36,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1"`
+	xxx_hidden_I1 int32                  `protobuf:"varint,1,opt,name=i1,proto3"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -93,9 +93,9 @@
 
 type M1 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -221,9 +221,9 @@
 
 type M2 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_GetGetFoo *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -349,9 +349,9 @@
 
 type M3 struct {
 	state                 protoimpl.MessageState `protogen:"opaque.v1"`
-	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"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_GetGetFoo_ *M0                    `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -477,9 +477,9 @@
 
 type M4 struct {
 	state                 protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetFoo     *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
 	xxx_hidden_GetGetFoo_ isM4_GetGetFoo_        `protobuf_oneof:"get_get_foo"`
-	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo_       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields         protoimpl.UnknownFields
 	sizeCache             protoimpl.SizeCache
 }
@@ -657,16 +657,16 @@
 }
 
 type m4_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*m4_GetGetGetFoo) isM4_GetGetFoo_() {}
 
 type M5 struct {
 	state                   protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo"`
+	xxx_hidden_GetFoo       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
 	xxx_hidden_GetGetGetFoo isM5_GetGetGetFoo      `protobuf_oneof:"get_get_get_foo"`
-	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo_         *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields           protoimpl.UnknownFields
 	sizeCache               protoimpl.SizeCache
 }
@@ -845,7 +845,7 @@
 }
 
 type m5_GetGetFoo_ struct {
-	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*m5_GetGetFoo_) isM5_GetGetGetFoo() {}
@@ -853,8 +853,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"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_   *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1031,7 +1031,7 @@
 }
 
 type m6_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*m6_GetGetGetFoo) isM6_GetGetFoo() {}
@@ -1039,7 +1039,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"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
 }
@@ -1226,11 +1226,11 @@
 }
 
 type m7_Bar struct {
-	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+	Bar bool `protobuf:"varint,4,opt,name=bar,proto3,oneof"`
 }
 
 type m7_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*m7_Bar) isM7_GetGetFoo() {}
@@ -1240,8 +1240,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"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_GetFoo_       *M0                    `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1418,7 +1418,7 @@
 }
 
 type m8_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*m8_GetGetFoo) isM8_GetGetGetFoo_() {}
@@ -1426,7 +1426,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"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
 }
@@ -1613,11 +1613,11 @@
 }
 
 type m9_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 type m9_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*m9_GetGetFoo) isM9_GetGetGetFoo_() {}
@@ -1626,8 +1626,8 @@
 
 type M10 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_SetFoo *M0                    `protobuf:"bytes,2,opt,name=set_foo,json=setFoo,proto3"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -1724,7 +1724,7 @@
 
 type M11 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_SetFoo isM11_SetFoo           `protobuf_oneof:"set_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -1870,14 +1870,14 @@
 }
 
 type m11_SetSetFoo struct {
-	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,oneof"`
+	SetSetFoo int32 `protobuf:"varint,2,opt,name=set_set_foo,json=setSetFoo,proto3,oneof"`
 }
 
 func (*m11_SetSetFoo) isM11_SetFoo() {}
 
 type M12 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_SetSetFoo isM12_SetSetFoo        `protobuf_oneof:"set_set_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2023,15 +2023,15 @@
 }
 
 type m12_SetFoo struct {
-	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,oneof"`
+	SetFoo int32 `protobuf:"varint,2,opt,name=set_foo,json=setFoo,proto3,oneof"`
 }
 
 func (*m12_SetFoo) isM12_SetSetFoo() {}
 
 type M13 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_HasFoo *M0                    `protobuf:"bytes,2,opt,name=has_foo,json=hasFoo,proto3"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
 }
@@ -2128,7 +2128,7 @@
 
 type M14 struct {
 	state             protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo    *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_HasFoo isM14_HasFoo           `protobuf_oneof:"has_foo"`
 	unknownFields     protoimpl.UnknownFields
 	sizeCache         protoimpl.SizeCache
@@ -2275,14 +2275,14 @@
 }
 
 type m14_HasHasFoo struct {
-	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,oneof"`
+	HasHasFoo int32 `protobuf:"varint,2,opt,name=has_has_foo,json=hasHasFoo,proto3,oneof"`
 }
 
 func (*m14_HasHasFoo) isM14_HasFoo() {}
 
 type M15 struct {
 	state                protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo       *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_HasHasFoo isM15_HasHasFoo        `protobuf_oneof:"has_has_foo"`
 	unknownFields        protoimpl.UnknownFields
 	sizeCache            protoimpl.SizeCache
@@ -2429,15 +2429,15 @@
 }
 
 type m15_HasFoo struct {
-	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,oneof"`
+	HasFoo int32 `protobuf:"varint,2,opt,name=has_foo,json=hasFoo,proto3,oneof"`
 }
 
 func (*m15_HasFoo) isM15_HasHasFoo() {}
 
 type M16 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
-	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
+	xxx_hidden_ClearFoo *M0                    `protobuf:"bytes,2,opt,name=clear_foo,json=clearFoo,proto3"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
 }
@@ -2534,7 +2534,7 @@
 
 type M17 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_ClearFoo isM17_ClearFoo         `protobuf_oneof:"clear_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -2681,14 +2681,14 @@
 }
 
 type m17_ClearClearFoo struct {
-	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,oneof"`
+	ClearClearFoo int32 `protobuf:"varint,2,opt,name=clear_clear_foo,json=clearClearFoo,proto3,oneof"`
 }
 
 func (*m17_ClearClearFoo) isM17_ClearFoo() {}
 
 type M18 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_ClearClearFoo isM18_ClearClearFoo    `protobuf_oneof:"clear_clear_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2835,14 +2835,14 @@
 }
 
 type m18_ClearFoo struct {
-	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,oneof"`
+	ClearFoo int32 `protobuf:"varint,2,opt,name=clear_foo,json=clearFoo,proto3,oneof"`
 }
 
 func (*m18_ClearFoo) isM18_ClearClearFoo() {}
 
 type M19 struct {
 	state                    protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo           *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_WhichWhichFoo isM19_WhichWhichFoo    `protobuf_oneof:"which_which_foo"`
 	unknownFields            protoimpl.UnknownFields
 	sizeCache                protoimpl.SizeCache
@@ -2989,14 +2989,14 @@
 }
 
 type m19_WhichFoo struct {
-	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,oneof"`
+	WhichFoo int32 `protobuf:"varint,2,opt,name=which_foo,json=whichFoo,proto3,oneof"`
 }
 
 func (*m19_WhichFoo) isM19_WhichWhichFoo() {}
 
 type M20 struct {
 	state               protoimpl.MessageState `protogen:"opaque.v1"`
-	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo"`
+	xxx_hidden_Foo      *M0                    `protobuf:"bytes,1,opt,name=foo,proto3"`
 	xxx_hidden_WhichFoo isM20_WhichFoo         `protobuf_oneof:"which_foo"`
 	unknownFields       protoimpl.UnknownFields
 	sizeCache           protoimpl.SizeCache
@@ -3143,11 +3143,96 @@
 }
 
 type m20_WhichWhichFoo struct {
-	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,oneof"`
+	WhichWhichFoo int32 `protobuf:"varint,2,opt,name=which_which_foo,json=whichWhichFoo,proto3,oneof"`
 }
 
 func (*m20_WhichWhichFoo) isM20_WhichFoo() {}
 
+type M21 struct {
+	state                protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_XFoo      string                 `protobuf:"bytes,1,opt,name=_foo,json=Foo,proto3"`
+	xxx_hidden_XFoo_     string                 `protobuf:"bytes,2,opt,name=X_foo,json=XFoo,proto3"`
+	xxx_hidden_GetXFoo__ string                 `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo,proto3"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *M21) GetXFoo_1() string {
+	if x != nil {
+		return x.xxx_hidden_XFoo
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_2() string {
+	if x != nil {
+		return x.xxx_hidden_XFoo_
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo() string {
+	if x != nil {
+		return x.xxx_hidden_GetXFoo__
+	}
+	return ""
+}
+
+func (x *M21) SetXFoo_1(v string) {
+	x.xxx_hidden_XFoo = v
+}
+
+func (x *M21) SetXFoo_2(v string) {
+	x.xxx_hidden_XFoo_ = v
+}
+
+func (x *M21) SetGetXFoo(v string) {
+	x.xxx_hidden_GetXFoo__ = v
+}
+
+type M21_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	XFoo_1  string
+	XFoo_2  string
+	GetXFoo string
+}
+
+func (b0 M21_builder) Build() *M21 {
+	m0 := &M21{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_XFoo = b.XFoo_1
+	x.xxx_hidden_XFoo_ = b.XFoo_2
+	x.xxx_hidden_GetXFoo__ = b.GetXFoo
+	return m0
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc = string([]byte{
@@ -3354,17 +3439,20 @@
 	0x63, 0x68, 0x5f, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
 	0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x63, 0x68, 0x57, 0x68, 0x69, 0x63, 0x68,
 	0x46, 0x6f, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x6f,
-	0x42, 0x63, 0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63,
-	0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c,
-	0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e,
-	0x02, 0x10, 0x03, 0x08, 0x02, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70,
-	0xe8, 0x07,
+	0x22, 0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f,
+	0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12,
+	0x1a, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x59, 0x5a, 0x57, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 })
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_goTypes = []any{
 	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashopaque3.M0
 	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashopaque3.M1
@@ -3387,6 +3475,7 @@
 	(*M18)(nil), // 18: net.proto2.go.testdata.nameclashopaque3.M18
 	(*M19)(nil), // 19: net.proto2.go.testdata.nameclashopaque3.M19
 	(*M20)(nil), // 20: net.proto2.go.testdata.nameclashopaque3.M20
+	(*M21)(nil), // 21: net.proto2.go.testdata.nameclashopaque3.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_depIdxs = []int32{
 	0,  // 0: net.proto2.go.testdata.nameclashopaque3.M1.foo:type_name -> net.proto2.go.testdata.nameclashopaque3.M0
@@ -3484,7 +3573,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_opaque3_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   21,
+			NumMessages:   22,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open.proto
index 10775a9..4c2a0b9 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open.proto
@@ -149,3 +149,10 @@
   }
   int32 foo = 1;
 }
+
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
index caa1988..7e79258 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
@@ -792,6 +792,66 @@
 
 func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
 
+type M21 struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	XFoo          *string                `protobuf:"bytes,1,opt,name=_foo,json=Foo" json:"_foo,omitempty"`
+	XFoo_         *string                `protobuf:"bytes,2,opt,name=X_foo,json=XFoo" json:"X_foo,omitempty"`
+	GetXFoo__     *string                `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo" json:"get_x_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use M21.ProtoReflect.Descriptor instead.
+func (*M21) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *M21) GetXFoo() string {
+	if x != nil && x.XFoo != nil {
+		return *x.XFoo
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_() string {
+	if x != nil && x.XFoo_ != nil {
+		return *x.XFoo_
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo__() string {
+	if x != nil && x.GetXFoo__ != nil {
+		return *x.GetXFoo__
+	}
+	return ""
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc = string([]byte{
@@ -856,14 +916,19 @@
 	0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65,
 	0x74, 0x46, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x65,
-	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x42, 0x5e, 0x5a, 0x54, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65,
-	0x6e, 0x92, 0x03, 0x05, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x32, 0x31,
+	0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12, 0x1a, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f,
+	0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x74,
+	0x58, 0x46, 0x6f, 0x6f, 0x42, 0x5e, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
+	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61,
+	0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x92, 0x03, 0x05, 0xd2,
+	0x3e, 0x02, 0x10, 0x01, 0x62, 0x08, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8,
+	0x07,
 })
 
 var (
@@ -878,17 +943,18 @@
 	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData
 }
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_goTypes = []any{
-	(*M1)(nil), // 0: net.proto2.go.testdata.nameclashopen.M1
-	(*M2)(nil), // 1: net.proto2.go.testdata.nameclashopen.M2
-	(*M3)(nil), // 2: net.proto2.go.testdata.nameclashopen.M3
-	(*M4)(nil), // 3: net.proto2.go.testdata.nameclashopen.M4
-	(*M5)(nil), // 4: net.proto2.go.testdata.nameclashopen.M5
-	(*M6)(nil), // 5: net.proto2.go.testdata.nameclashopen.M6
-	(*M7)(nil), // 6: net.proto2.go.testdata.nameclashopen.M7
-	(*M8)(nil), // 7: net.proto2.go.testdata.nameclashopen.M8
-	(*M9)(nil), // 8: net.proto2.go.testdata.nameclashopen.M9
+	(*M1)(nil),  // 0: net.proto2.go.testdata.nameclashopen.M1
+	(*M2)(nil),  // 1: net.proto2.go.testdata.nameclashopen.M2
+	(*M3)(nil),  // 2: net.proto2.go.testdata.nameclashopen.M3
+	(*M4)(nil),  // 3: net.proto2.go.testdata.nameclashopen.M4
+	(*M5)(nil),  // 4: net.proto2.go.testdata.nameclashopen.M5
+	(*M6)(nil),  // 5: net.proto2.go.testdata.nameclashopen.M6
+	(*M7)(nil),  // 6: net.proto2.go.testdata.nameclashopen.M7
+	(*M8)(nil),  // 7: net.proto2.go.testdata.nameclashopen.M8
+	(*M9)(nil),  // 8: net.proto2.go.testdata.nameclashopen.M9
+	(*M21)(nil), // 9: net.proto2.go.testdata.nameclashopen.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_depIdxs = []int32{
 	0, // [0:0] is the sub-list for method output_type
@@ -929,7 +995,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   9,
+			NumMessages:   10,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3.proto b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3.proto
index 442c046..14a6205 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3.proto
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3.proto
@@ -21,7 +21,7 @@
 // 1 - My field name clashes with their getter name
 // 2 - My getter name clashes with their field name
 
-edition = "2023";
+syntax = "proto3";
 
 package net.proto2.go.testdata.nameclashopen3;
 
@@ -29,9 +29,6 @@
 
 option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3";
 
-option features.field_presence = IMPLICIT;
-option features.(pb.go).api_level = API_OPEN;
-
 message M0 {
   int32 i1 = 1;
 }
@@ -162,3 +159,10 @@
 
   M0 foo = 1;
 }
+
+
+message M21 {
+  string _foo = 1;
+  string X_foo = 2;
+  string get_x_foo = 3;
+}
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
index 002402e..0db45e0 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
@@ -37,7 +37,7 @@
 
 type M0 struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
-	I1            int32                  `protobuf:"varint,1,opt,name=i1" json:"i1,omitempty"`
+	I1            int32                  `protobuf:"varint,1,opt,name=i1,proto3" json:"i1,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -85,9 +85,9 @@
 	// Foo                    | -                  | -    | Foo
 	// GetFoo                 | foo                | 1    | GetFoo_
 	// GetGetFoo              | -                  | -    | GetGetFoo
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
-	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -149,9 +149,9 @@
 	// GetGetFoo              | -                  | -    | GetGetFoo
 	// GetFoo                 | get_get_foo        | 2    | GetFoo_
 	// Foo                    | -                  | -    | Foo
-	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
-	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetGetFoo     *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
+	GetFoo_       *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -213,9 +213,9 @@
 	// GetFoo                 | -                  | -    | GetFoo
 	// GetGetFoo              | get_foo            | 1    | GetGetFoo_
 	// Foo                    | get_foo            | 2    | Foo_
-	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo" json:"get_get_foo,omitempty"`
-	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo        *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	GetGetFoo_    *M0 `protobuf:"bytes,3,opt,name=get_get_foo,json=getGetFoo,proto3" json:"get_get_foo,omitempty"`
+	Foo_          *M0 `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -281,12 +281,12 @@
 	//	                      |                    |      |
 	//
 	// Foo                    | get_foo            | 2    | Foo_
-	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
 	// Types that are valid to be assigned to GetGetFoo_:
 	//
 	//	*M4_GetGetGetFoo
 	GetGetFoo_    isM4_GetGetFoo_ `protobuf_oneof:"get_get_foo"`
-	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo_          *M0             `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -356,7 +356,7 @@
 }
 
 type M4_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*M4_GetGetGetFoo) isM4_GetGetFoo_() {}
@@ -372,12 +372,12 @@
 	//	                      |                    |      |
 	//
 	// Foo                    | get_foo            | 2    | Foo_
-	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
+	GetFoo *M0 `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
 	// Types that are valid to be assigned to GetGetGetFoo:
 	//
 	//	*M5_GetGetFoo_
 	GetGetGetFoo  isM5_GetGetGetFoo `protobuf_oneof:"get_get_get_foo"`
-	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo_          *M0               `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -447,7 +447,7 @@
 }
 
 type M5_GetGetFoo_ struct {
-	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo_ int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*M5_GetGetFoo_) isM5_GetGetGetFoo() {}
@@ -468,8 +468,8 @@
 	//
 	//	*M6_GetGetGetFoo
 	GetGetFoo     isM6_GetGetFoo `protobuf_oneof:"get_get_foo"`
-	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0            `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -539,7 +539,7 @@
 }
 
 type M6_GetGetGetFoo struct {
-	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,oneof"`
+	GetGetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_get_foo,json=getGetGetFoo,proto3,oneof"`
 }
 
 func (*M6_GetGetGetFoo) isM6_GetGetFoo() {}
@@ -561,7 +561,7 @@
 	//	*M7_Bar
 	//	*M7_GetFoo_
 	GetGetFoo     isM7_GetGetFoo `protobuf_oneof:"get_get_foo"`
-	Foo           *M0            `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo           *M0            `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -633,11 +633,11 @@
 }
 
 type M7_Bar struct {
-	Bar bool `protobuf:"varint,4,opt,name=bar,oneof"`
+	Bar bool `protobuf:"varint,4,opt,name=bar,proto3,oneof"`
 }
 
 type M7_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,3,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*M7_Bar) isM7_GetGetFoo() {}
@@ -660,8 +660,8 @@
 	//
 	//	*M8_GetGetFoo
 	GetGetGetFoo_ isM8_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
-	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo" json:"get_foo,omitempty"`
-	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	GetFoo_       *M0                `protobuf:"bytes,2,opt,name=get_foo,json=getFoo,proto3" json:"get_foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -731,7 +731,7 @@
 }
 
 type M8_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 func (*M8_GetGetFoo) isM8_GetGetGetFoo_() {}
@@ -753,7 +753,7 @@
 	//	*M9_GetGetFoo
 	//	*M9_GetFoo_
 	GetGetGetFoo_ isM9_GetGetGetFoo_ `protobuf_oneof:"get_get_get_foo"`
-	Foo           *M0                `protobuf:"bytes,1,opt,name=foo" json:"foo,omitempty"`
+	Foo           *M0                `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -825,17 +825,77 @@
 }
 
 type M9_GetGetFoo struct {
-	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,oneof"`
+	GetGetFoo int32 `protobuf:"varint,3,opt,name=get_get_foo,json=getGetFoo,proto3,oneof"`
 }
 
 type M9_GetFoo_ struct {
-	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,oneof"`
+	GetFoo_ int32 `protobuf:"varint,2,opt,name=get_foo,json=getFoo,proto3,oneof"`
 }
 
 func (*M9_GetGetFoo) isM9_GetGetGetFoo_() {}
 
 func (*M9_GetFoo_) isM9_GetGetGetFoo_() {}
 
+type M21 struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	XFoo          string                 `protobuf:"bytes,1,opt,name=_foo,json=Foo,proto3" json:"_foo,omitempty"`
+	XFoo_         string                 `protobuf:"bytes,2,opt,name=X_foo,json=XFoo,proto3" json:"X_foo,omitempty"`
+	GetXFoo__     string                 `protobuf:"bytes,3,opt,name=get_x_foo,json=getXFoo,proto3" json:"get_x_foo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *M21) Reset() {
+	*x = M21{}
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *M21) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*M21) ProtoMessage() {}
+
+func (x *M21) ProtoReflect() protoreflect.Message {
+	mi := &file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use M21.ProtoReflect.Descriptor instead.
+func (*M21) Descriptor() ([]byte, []int) {
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *M21) GetXFoo() string {
+	if x != nil {
+		return x.XFoo
+	}
+	return ""
+}
+
+func (x *M21) GetXFoo_() string {
+	if x != nil {
+		return x.XFoo_
+	}
+	return ""
+}
+
+func (x *M21) GetGetXFoo__() string {
+	if x != nil {
+		return x.GetXFoo__
+	}
+	return ""
+}
+
 var File_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc = string([]byte{
@@ -953,14 +1013,18 @@
 	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x67, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
 	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x2e,
 	0x4d, 0x30, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x5f, 0x67,
-	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x42, 0x61, 0x5a, 0x55, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70,
-	0x65, 0x6e, 0x33, 0x92, 0x03, 0x07, 0xd2, 0x3e, 0x02, 0x10, 0x01, 0x08, 0x02, 0x62, 0x08, 0x65,
-	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0xe8, 0x07,
+	0x65, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x6f, 0x22, 0x49, 0x0a, 0x03, 0x4d, 0x32,
+	0x31, 0x12, 0x11, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x46, 0x6f, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x58, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x58, 0x46, 0x6f, 0x6f, 0x12, 0x1a, 0x0a, 0x09, 0x67, 0x65, 0x74,
+	0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65,
+	0x74, 0x58, 0x46, 0x6f, 0x6f, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67,
+	0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e,
+	0x61, 0x6d, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x33, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 })
 
 var (
@@ -975,18 +1039,19 @@
 	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData
 }
 
-var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_goTypes = []any{
-	(*M0)(nil), // 0: net.proto2.go.testdata.nameclashopen3.M0
-	(*M1)(nil), // 1: net.proto2.go.testdata.nameclashopen3.M1
-	(*M2)(nil), // 2: net.proto2.go.testdata.nameclashopen3.M2
-	(*M3)(nil), // 3: net.proto2.go.testdata.nameclashopen3.M3
-	(*M4)(nil), // 4: net.proto2.go.testdata.nameclashopen3.M4
-	(*M5)(nil), // 5: net.proto2.go.testdata.nameclashopen3.M5
-	(*M6)(nil), // 6: net.proto2.go.testdata.nameclashopen3.M6
-	(*M7)(nil), // 7: net.proto2.go.testdata.nameclashopen3.M7
-	(*M8)(nil), // 8: net.proto2.go.testdata.nameclashopen3.M8
-	(*M9)(nil), // 9: net.proto2.go.testdata.nameclashopen3.M9
+	(*M0)(nil),  // 0: net.proto2.go.testdata.nameclashopen3.M0
+	(*M1)(nil),  // 1: net.proto2.go.testdata.nameclashopen3.M1
+	(*M2)(nil),  // 2: net.proto2.go.testdata.nameclashopen3.M2
+	(*M3)(nil),  // 3: net.proto2.go.testdata.nameclashopen3.M3
+	(*M4)(nil),  // 4: net.proto2.go.testdata.nameclashopen3.M4
+	(*M5)(nil),  // 5: net.proto2.go.testdata.nameclashopen3.M5
+	(*M6)(nil),  // 6: net.proto2.go.testdata.nameclashopen3.M6
+	(*M7)(nil),  // 7: net.proto2.go.testdata.nameclashopen3.M7
+	(*M8)(nil),  // 8: net.proto2.go.testdata.nameclashopen3.M8
+	(*M9)(nil),  // 9: net.proto2.go.testdata.nameclashopen3.M9
+	(*M21)(nil), // 10: net.proto2.go.testdata.nameclashopen3.M21
 }
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_depIdxs = []int32{
 	0,  // 0: net.proto2.go.testdata.nameclashopen3.M1.foo:type_name -> net.proto2.go.testdata.nameclashopen3.M0
@@ -1046,7 +1111,7 @@
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   10,
+			NumMessages:   11,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/compiler/protogen/protogen_opaque.go b/compiler/protogen/protogen_opaque.go
index 8b11cdb..1c84b0c 100644
--- a/compiler/protogen/protogen_opaque.go
+++ b/compiler/protogen/protogen_opaque.go
@@ -5,6 +5,8 @@
 package protogen
 
 import (
+	"strconv"
+
 	"google.golang.org/protobuf/internal/strs"
 	"google.golang.org/protobuf/reflect/protoreflect"
 )
@@ -17,6 +19,33 @@
 	oneof.camelCase = strs.GoCamelCase(string(desc.Name()))
 }
 
+func resolveCamelCaseConflict(f *Field) {
+	suffix := "_" + strconv.Itoa(int(f.Desc.Number()))
+	f.camelCase += suffix
+	if f.Oneof != nil {
+		f.Oneof.camelCase += suffix
+	}
+}
+
+// This function finds fields with different names whose GoCamelCase() is
+// identical, for example _foo and X_foo, for both of which camelCase == "XFoo",
+// and resolves the resulting conflict by appending a _<fieldnum> suffix,
+// like the Java implementation does.
+func resolveCamelCaseConflicts(message *Message) {
+	camel2field := make(map[string]*Field)
+	for _, field := range message.Fields {
+		other, conflicting := camel2field[field.camelCase]
+		if conflicting {
+			resolveCamelCaseConflict(other)
+			resolveCamelCaseConflict(field)
+			// Assumption: at most two fields can have the same camelCase.
+			// Otherwise, the first field ends up with another suffix.
+			continue
+		}
+		camel2field[field.camelCase] = field
+	}
+}
+
 func opaqueNewMessageHook(message *Message) {
 	// New name mangling scheme: Add a '_' between method base
 	// name (Get, Set, Clear etc) and original field name if
@@ -33,17 +62,19 @@
 	// Then find all names of the original field names, we do not want the old scheme to affect
 	// how we name things.
 
+	resolveCamelCaseConflicts(message)
+
 	camelCases := map[string]bool{}
 	for _, field := range message.Fields {
 		if field.Oneof != nil {
 			// We add the name of the union here (potentially many times).
 			camelCases[field.Oneof.camelCase] = true
+			// fallthrough: The member fields of the oneof are considered fields
+			// in the struct although they are not technically there. This is to
+			// allow changing a proto2 optional to a oneof with source code
+			// compatibility.
 		}
-		// The member fields of the oneof are considered fields in the struct although
-		// they are not technically there. This is to allow changing a proto2 optional
-		// to a oneof with source code compatibility.
 		camelCases[field.camelCase] = true
-
 	}
 	// For each field, check if any of it's methods would clash with an original field name
 	for _, field := range message.Fields {
diff --git a/internal/cmd/generate-protos/main.go b/internal/cmd/generate-protos/main.go
index c42f908..81bfddc 100644
--- a/internal/cmd/generate-protos/main.go
+++ b/internal/cmd/generate-protos/main.go
@@ -389,6 +389,16 @@
 					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_OPAQUE")
 				}
 			}
+			if strings.HasPrefix(relPath, "cmd/protoc-gen-go/testdata/nameclash/") {
+				switch path.Base(relPath) {
+				case "test_name_clash_hybrid3.proto":
+					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_HYBRID")
+				case "test_name_clash_opaque3.proto":
+					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_OPAQUE")
+				case "test_name_clash_open3.proto":
+					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_OPEN")
+				}
+			}
 			protoc("-I"+filepath.Join(repoRoot, "src"), "-I"+filepath.Join(protoRoot, "src"), "-I"+repoRoot, "--go_out="+opts+":"+tmpDir, filepath.Join(repoRoot, relPath))
 			return nil
 		})
