// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto2/fields.proto

package proto2

import (
	proto "github.com/golang/protobuf/proto"
	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
	prototype "github.com/golang/protobuf/v2/reflect/prototype"
	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
	math "math"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type FieldTestMessage_Enum int32

const (
	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
	FieldTestMessage_ONE  FieldTestMessage_Enum = 1
)

type xxx_FieldTestMessage_Enum FieldTestMessage_Enum

func (e FieldTestMessage_Enum) ProtoReflect() protoreflect.Enum {
	return (xxx_FieldTestMessage_Enum)(e)
}
func (e xxx_FieldTestMessage_Enum) Type() protoreflect.EnumType {
	return xxx_Fields_ProtoFile_EnumTypes[0]
}
func (e xxx_FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(e)
}

var FieldTestMessage_Enum_name = map[int32]string{
	0: "ZERO",
	1: "ONE",
}

var FieldTestMessage_Enum_value = map[string]int32{
	"ZERO": 0,
	"ONE":  1,
}

func (x FieldTestMessage_Enum) Enum() *FieldTestMessage_Enum {
	p := new(FieldTestMessage_Enum)
	*p = x
	return p
}

func (x FieldTestMessage_Enum) String() string {
	return proto.EnumName(FieldTestMessage_Enum_name, int32(x))
}

func (x *FieldTestMessage_Enum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(FieldTestMessage_Enum_value, data, "FieldTestMessage_Enum")
	if err != nil {
		return err
	}
	*x = FieldTestMessage_Enum(value)
	return nil
}

func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 0}
}

type FieldTestMessage struct {
	OptionalBool        *bool                                `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
	OptionalEnum        *FieldTestMessage_Enum               `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
	OptionalInt32       *int32                               `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
	OptionalSint32      *int32                               `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
	OptionalUint32      *uint32                              `protobuf:"varint,5,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
	OptionalInt64       *int64                               `protobuf:"varint,6,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
	OptionalSint64      *int64                               `protobuf:"zigzag64,7,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
	OptionalUint64      *uint64                              `protobuf:"varint,8,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
	OptionalSfixed32    *int32                               `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
	OptionalFixed32     *uint32                              `protobuf:"fixed32,10,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
	OptionalFloat       *float32                             `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
	OptionalSfixed64    *int64                               `protobuf:"fixed64,12,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
	OptionalFixed64     *uint64                              `protobuf:"fixed64,13,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
	OptionalDouble      *float64                             `protobuf:"fixed64,14,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
	OptionalString      *string                              `protobuf:"bytes,15,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
	OptionalBytes       []byte                               `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
	Optional_Message    *FieldTestMessage_Message            `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage" json:"optional_Message,omitempty"`
	Optionalgroup       *FieldTestMessage_OptionalGroup      `protobuf:"group,18,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
	RequiredBool        *bool                                `protobuf:"varint,101,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
	RequiredEnum        *FieldTestMessage_Enum               `protobuf:"varint,102,req,name=required_enum,json=requiredEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"required_enum,omitempty"`
	RequiredInt32       *int32                               `protobuf:"varint,103,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
	RequiredSint32      *int32                               `protobuf:"zigzag32,104,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
	RequiredUint32      *uint32                              `protobuf:"varint,105,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
	RequiredInt64       *int64                               `protobuf:"varint,106,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
	RequiredSint64      *int64                               `protobuf:"zigzag64,107,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
	RequiredUint64      *uint64                              `protobuf:"varint,108,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
	RequiredSfixed32    *int32                               `protobuf:"fixed32,109,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
	RequiredFixed32     *uint32                              `protobuf:"fixed32,110,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
	RequiredFloat       *float32                             `protobuf:"fixed32,111,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
	RequiredSfixed64    *int64                               `protobuf:"fixed64,112,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
	RequiredFixed64     *uint64                              `protobuf:"fixed64,113,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
	RequiredDouble      *float64                             `protobuf:"fixed64,114,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
	RequiredString      *string                              `protobuf:"bytes,115,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
	RequiredBytes       []byte                               `protobuf:"bytes,116,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
	Required_Message    *FieldTestMessage_Message            `protobuf:"bytes,117,req,name=required_Message,json=requiredMessage" json:"required_Message,omitempty"`
	Requiredgroup       *FieldTestMessage_RequiredGroup      `protobuf:"group,118,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
	RepeatedBool        []bool                               `protobuf:"varint,201,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
	RepeatedEnum        []FieldTestMessage_Enum              `protobuf:"varint,202,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
	RepeatedInt32       []int32                              `protobuf:"varint,203,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
	RepeatedSint32      []int32                              `protobuf:"zigzag32,204,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
	RepeatedUint32      []uint32                             `protobuf:"varint,205,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
	RepeatedInt64       []int64                              `protobuf:"varint,206,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
	RepeatedSint64      []int64                              `protobuf:"zigzag64,207,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
	RepeatedUint64      []uint64                             `protobuf:"varint,208,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
	RepeatedSfixed32    []int32                              `protobuf:"fixed32,209,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
	RepeatedFixed32     []uint32                             `protobuf:"fixed32,210,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
	RepeatedFloat       []float32                            `protobuf:"fixed32,211,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
	RepeatedSfixed64    []int64                              `protobuf:"fixed64,212,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
	RepeatedFixed64     []uint64                             `protobuf:"fixed64,213,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
	RepeatedDouble      []float64                            `protobuf:"fixed64,214,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
	RepeatedString      []string                             `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
	RepeatedBytes       [][]byte                             `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
	Repeated_Message    []*FieldTestMessage_Message          `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage" json:"repeated_Message,omitempty"`
	Repeatedgroup       []*FieldTestMessage_RepeatedGroup    `protobuf:"group,218,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
	DefaultBool         *bool                                `protobuf:"varint,301,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
	DefaultEnum         *FieldTestMessage_Enum               `protobuf:"varint,302,opt,name=default_enum,json=defaultEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,def=1" json:"default_enum,omitempty"`
	DefaultInt32        *int32                               `protobuf:"varint,303,opt,name=default_int32,json=defaultInt32,def=1" json:"default_int32,omitempty"`
	DefaultSint32       *int32                               `protobuf:"zigzag32,304,opt,name=default_sint32,json=defaultSint32,def=1" json:"default_sint32,omitempty"`
	DefaultUint32       *uint32                              `protobuf:"varint,305,opt,name=default_uint32,json=defaultUint32,def=1" json:"default_uint32,omitempty"`
	DefaultInt64        *int64                               `protobuf:"varint,306,opt,name=default_int64,json=defaultInt64,def=1" json:"default_int64,omitempty"`
	DefaultSint64       *int64                               `protobuf:"zigzag64,307,opt,name=default_sint64,json=defaultSint64,def=1" json:"default_sint64,omitempty"`
	DefaultUint64       *uint64                              `protobuf:"varint,308,opt,name=default_uint64,json=defaultUint64,def=1" json:"default_uint64,omitempty"`
	DefaultSfixed32     *int32                               `protobuf:"fixed32,309,opt,name=default_sfixed32,json=defaultSfixed32,def=1" json:"default_sfixed32,omitempty"`
	DefaultFixed32      *uint32                              `protobuf:"fixed32,310,opt,name=default_fixed32,json=defaultFixed32,def=1" json:"default_fixed32,omitempty"`
	DefaultFloat        *float32                             `protobuf:"fixed32,311,opt,name=default_float,json=defaultFloat,def=3.14" json:"default_float,omitempty"`
	DefaultSfixed64     *int64                               `protobuf:"fixed64,312,opt,name=default_sfixed64,json=defaultSfixed64,def=1" json:"default_sfixed64,omitempty"`
	DefaultFixed64      *uint64                              `protobuf:"fixed64,313,opt,name=default_fixed64,json=defaultFixed64,def=1" json:"default_fixed64,omitempty"`
	DefaultDouble       *float64                             `protobuf:"fixed64,314,opt,name=default_double,json=defaultDouble,def=3.1415" json:"default_double,omitempty"`
	DefaultString       *string                              `protobuf:"bytes,315,opt,name=default_string,json=defaultString,def=hello,\"world!\"\n" json:"default_string,omitempty"`
	DefaultBytes        []byte                               `protobuf:"bytes,316,opt,name=default_bytes,json=defaultBytes,def=hello,\\336\\255\\276\\357" json:"default_bytes,omitempty"`
	DefaultZeroString   *string                              `protobuf:"bytes,350,opt,name=default_zero_string,json=defaultZeroString,def=" json:"default_zero_string,omitempty"`
	DefaultZeroBytes    []byte                               `protobuf:"bytes,351,opt,name=default_zero_bytes,json=defaultZeroBytes,def=" json:"default_zero_bytes,omitempty"`
	DefaultFloatNeginf  *float32                             `protobuf:"fixed32,400,opt,name=default_float_neginf,json=defaultFloatNeginf,def=-inf" json:"default_float_neginf,omitempty"`
	DefaultFloatPosinf  *float32                             `protobuf:"fixed32,401,opt,name=default_float_posinf,json=defaultFloatPosinf,def=inf" json:"default_float_posinf,omitempty"`
	DefaultFloatNan     *float32                             `protobuf:"fixed32,402,opt,name=default_float_nan,json=defaultFloatNan,def=nan" json:"default_float_nan,omitempty"`
	DefaultDoubleNeginf *float64                             `protobuf:"fixed64,403,opt,name=default_double_neginf,json=defaultDoubleNeginf,def=-inf" json:"default_double_neginf,omitempty"`
	DefaultDoublePosinf *float64                             `protobuf:"fixed64,404,opt,name=default_double_posinf,json=defaultDoublePosinf,def=inf" json:"default_double_posinf,omitempty"`
	DefaultDoubleNan    *float64                             `protobuf:"fixed64,405,opt,name=default_double_nan,json=defaultDoubleNan,def=nan" json:"default_double_nan,omitempty"`
	MapInt32Int64       map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapStringMessage    map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapFixed64Enum      map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.protoc.proto2.FieldTestMessage_Enum"`
	// Types that are valid to be assigned to OneofField:
	//	*FieldTestMessage_OneofBool
	//	*FieldTestMessage_OneofEnum
	//	*FieldTestMessage_OneofInt32
	//	*FieldTestMessage_OneofSint32
	//	*FieldTestMessage_OneofUint32
	//	*FieldTestMessage_OneofInt64
	//	*FieldTestMessage_OneofSint64
	//	*FieldTestMessage_OneofUint64
	//	*FieldTestMessage_OneofSfixed32
	//	*FieldTestMessage_OneofFixed32
	//	*FieldTestMessage_OneofFloat
	//	*FieldTestMessage_OneofSfixed64
	//	*FieldTestMessage_OneofFixed64
	//	*FieldTestMessage_OneofDouble
	//	*FieldTestMessage_OneofString
	//	*FieldTestMessage_OneofBytes
	//	*FieldTestMessage_Oneof_Message
	//	*FieldTestMessage_Oneofgroup
	//	*FieldTestMessage_OneofLargestTag
	OneofField isFieldTestMessage_OneofField `protobuf_oneof:"oneof_field"`
	// Types that are valid to be assigned to OneofTwo:
	//	*FieldTestMessage_OneofTwo_1
	//	*FieldTestMessage_OneofTwo_2
	OneofTwo             isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
	XXX_unrecognized     []byte                      `json:"-"`
	XXX_sizecache        int32                       `json:"-"`
}

type xxx_FieldTestMessage struct{ m *FieldTestMessage }

func (m *FieldTestMessage) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage{m}
}
func (m xxx_FieldTestMessage) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[0].Type
}
func (m xxx_FieldTestMessage) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[0].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[0].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage) ProtoMutable() {}

func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
func (m *FieldTestMessage) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage) ProtoMessage()    {}
func (*FieldTestMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0}
}

func (m *FieldTestMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage.Unmarshal(m, b)
}
func (m *FieldTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage.Merge(m, src)
}
func (m *FieldTestMessage) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage.Size(m)
}
func (m *FieldTestMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo

const Default_FieldTestMessage_DefaultBool bool = true
const Default_FieldTestMessage_DefaultEnum FieldTestMessage_Enum = FieldTestMessage_ONE
const Default_FieldTestMessage_DefaultInt32 int32 = 1
const Default_FieldTestMessage_DefaultSint32 int32 = 1
const Default_FieldTestMessage_DefaultUint32 uint32 = 1
const Default_FieldTestMessage_DefaultInt64 int64 = 1
const Default_FieldTestMessage_DefaultSint64 int64 = 1
const Default_FieldTestMessage_DefaultUint64 uint64 = 1
const Default_FieldTestMessage_DefaultSfixed32 int32 = 1
const Default_FieldTestMessage_DefaultFixed32 uint32 = 1
const Default_FieldTestMessage_DefaultFloat float32 = 3.14
const Default_FieldTestMessage_DefaultSfixed64 int64 = 1
const Default_FieldTestMessage_DefaultFixed64 uint64 = 1
const Default_FieldTestMessage_DefaultDouble float64 = 3.1415
const Default_FieldTestMessage_DefaultString string = "hello,\"world!\"\n"

var Default_FieldTestMessage_DefaultBytes []byte = []byte("hello,ޭ\xbe\xef")

const Default_FieldTestMessage_DefaultZeroString string = ""

var Default_FieldTestMessage_DefaultZeroBytes []byte = []byte("")
var Default_FieldTestMessage_DefaultFloatNeginf float32 = float32(math.Inf(-1))
var Default_FieldTestMessage_DefaultFloatPosinf float32 = float32(math.Inf(1))
var Default_FieldTestMessage_DefaultFloatNan float32 = float32(math.NaN())
var Default_FieldTestMessage_DefaultDoubleNeginf float64 = math.Inf(-1)
var Default_FieldTestMessage_DefaultDoublePosinf float64 = math.Inf(1)
var Default_FieldTestMessage_DefaultDoubleNan float64 = math.NaN()

func (m *FieldTestMessage) GetOptionalBool() bool {
	if m != nil && m.OptionalBool != nil {
		return *m.OptionalBool
	}
	return false
}

func (m *FieldTestMessage) GetOptionalEnum() FieldTestMessage_Enum {
	if m != nil && m.OptionalEnum != nil {
		return *m.OptionalEnum
	}
	return FieldTestMessage_ZERO
}

func (m *FieldTestMessage) GetOptionalInt32() int32 {
	if m != nil && m.OptionalInt32 != nil {
		return *m.OptionalInt32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSint32() int32 {
	if m != nil && m.OptionalSint32 != nil {
		return *m.OptionalSint32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalUint32() uint32 {
	if m != nil && m.OptionalUint32 != nil {
		return *m.OptionalUint32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalInt64() int64 {
	if m != nil && m.OptionalInt64 != nil {
		return *m.OptionalInt64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSint64() int64 {
	if m != nil && m.OptionalSint64 != nil {
		return *m.OptionalSint64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalUint64() uint64 {
	if m != nil && m.OptionalUint64 != nil {
		return *m.OptionalUint64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSfixed32() int32 {
	if m != nil && m.OptionalSfixed32 != nil {
		return *m.OptionalSfixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFixed32() uint32 {
	if m != nil && m.OptionalFixed32 != nil {
		return *m.OptionalFixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFloat() float32 {
	if m != nil && m.OptionalFloat != nil {
		return *m.OptionalFloat
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSfixed64() int64 {
	if m != nil && m.OptionalSfixed64 != nil {
		return *m.OptionalSfixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFixed64() uint64 {
	if m != nil && m.OptionalFixed64 != nil {
		return *m.OptionalFixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalDouble() float64 {
	if m != nil && m.OptionalDouble != nil {
		return *m.OptionalDouble
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalString() string {
	if m != nil && m.OptionalString != nil {
		return *m.OptionalString
	}
	return ""
}

func (m *FieldTestMessage) GetOptionalBytes() []byte {
	if m != nil {
		return m.OptionalBytes
	}
	return nil
}

func (m *FieldTestMessage) GetOptional_Message() *FieldTestMessage_Message {
	if m != nil {
		return m.Optional_Message
	}
	return nil
}

func (m *FieldTestMessage) GetOptionalgroup() *FieldTestMessage_OptionalGroup {
	if m != nil {
		return m.Optionalgroup
	}
	return nil
}

func (m *FieldTestMessage) GetRequiredBool() bool {
	if m != nil && m.RequiredBool != nil {
		return *m.RequiredBool
	}
	return false
}

func (m *FieldTestMessage) GetRequiredEnum() FieldTestMessage_Enum {
	if m != nil && m.RequiredEnum != nil {
		return *m.RequiredEnum
	}
	return FieldTestMessage_ZERO
}

func (m *FieldTestMessage) GetRequiredInt32() int32 {
	if m != nil && m.RequiredInt32 != nil {
		return *m.RequiredInt32
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredSint32() int32 {
	if m != nil && m.RequiredSint32 != nil {
		return *m.RequiredSint32
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredUint32() uint32 {
	if m != nil && m.RequiredUint32 != nil {
		return *m.RequiredUint32
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredInt64() int64 {
	if m != nil && m.RequiredInt64 != nil {
		return *m.RequiredInt64
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredSint64() int64 {
	if m != nil && m.RequiredSint64 != nil {
		return *m.RequiredSint64
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredUint64() uint64 {
	if m != nil && m.RequiredUint64 != nil {
		return *m.RequiredUint64
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredSfixed32() int32 {
	if m != nil && m.RequiredSfixed32 != nil {
		return *m.RequiredSfixed32
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredFixed32() uint32 {
	if m != nil && m.RequiredFixed32 != nil {
		return *m.RequiredFixed32
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredFloat() float32 {
	if m != nil && m.RequiredFloat != nil {
		return *m.RequiredFloat
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredSfixed64() int64 {
	if m != nil && m.RequiredSfixed64 != nil {
		return *m.RequiredSfixed64
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredFixed64() uint64 {
	if m != nil && m.RequiredFixed64 != nil {
		return *m.RequiredFixed64
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredDouble() float64 {
	if m != nil && m.RequiredDouble != nil {
		return *m.RequiredDouble
	}
	return 0
}

func (m *FieldTestMessage) GetRequiredString() string {
	if m != nil && m.RequiredString != nil {
		return *m.RequiredString
	}
	return ""
}

func (m *FieldTestMessage) GetRequiredBytes() []byte {
	if m != nil {
		return m.RequiredBytes
	}
	return nil
}

func (m *FieldTestMessage) GetRequired_Message() *FieldTestMessage_Message {
	if m != nil {
		return m.Required_Message
	}
	return nil
}

func (m *FieldTestMessage) GetRequiredgroup() *FieldTestMessage_RequiredGroup {
	if m != nil {
		return m.Requiredgroup
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedBool() []bool {
	if m != nil {
		return m.RepeatedBool
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedEnum() []FieldTestMessage_Enum {
	if m != nil {
		return m.RepeatedEnum
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedInt32() []int32 {
	if m != nil {
		return m.RepeatedInt32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSint32() []int32 {
	if m != nil {
		return m.RepeatedSint32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedUint32() []uint32 {
	if m != nil {
		return m.RepeatedUint32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedInt64() []int64 {
	if m != nil {
		return m.RepeatedInt64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSint64() []int64 {
	if m != nil {
		return m.RepeatedSint64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedUint64() []uint64 {
	if m != nil {
		return m.RepeatedUint64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSfixed32() []int32 {
	if m != nil {
		return m.RepeatedSfixed32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFixed32() []uint32 {
	if m != nil {
		return m.RepeatedFixed32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFloat() []float32 {
	if m != nil {
		return m.RepeatedFloat
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSfixed64() []int64 {
	if m != nil {
		return m.RepeatedSfixed64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFixed64() []uint64 {
	if m != nil {
		return m.RepeatedFixed64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedDouble() []float64 {
	if m != nil {
		return m.RepeatedDouble
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedString() []string {
	if m != nil {
		return m.RepeatedString
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedBytes() [][]byte {
	if m != nil {
		return m.RepeatedBytes
	}
	return nil
}

func (m *FieldTestMessage) GetRepeated_Message() []*FieldTestMessage_Message {
	if m != nil {
		return m.Repeated_Message
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedgroup() []*FieldTestMessage_RepeatedGroup {
	if m != nil {
		return m.Repeatedgroup
	}
	return nil
}

func (m *FieldTestMessage) GetDefaultBool() bool {
	if m != nil && m.DefaultBool != nil {
		return *m.DefaultBool
	}
	return Default_FieldTestMessage_DefaultBool
}

func (m *FieldTestMessage) GetDefaultEnum() FieldTestMessage_Enum {
	if m != nil && m.DefaultEnum != nil {
		return *m.DefaultEnum
	}
	return Default_FieldTestMessage_DefaultEnum
}

func (m *FieldTestMessage) GetDefaultInt32() int32 {
	if m != nil && m.DefaultInt32 != nil {
		return *m.DefaultInt32
	}
	return Default_FieldTestMessage_DefaultInt32
}

func (m *FieldTestMessage) GetDefaultSint32() int32 {
	if m != nil && m.DefaultSint32 != nil {
		return *m.DefaultSint32
	}
	return Default_FieldTestMessage_DefaultSint32
}

func (m *FieldTestMessage) GetDefaultUint32() uint32 {
	if m != nil && m.DefaultUint32 != nil {
		return *m.DefaultUint32
	}
	return Default_FieldTestMessage_DefaultUint32
}

func (m *FieldTestMessage) GetDefaultInt64() int64 {
	if m != nil && m.DefaultInt64 != nil {
		return *m.DefaultInt64
	}
	return Default_FieldTestMessage_DefaultInt64
}

func (m *FieldTestMessage) GetDefaultSint64() int64 {
	if m != nil && m.DefaultSint64 != nil {
		return *m.DefaultSint64
	}
	return Default_FieldTestMessage_DefaultSint64
}

func (m *FieldTestMessage) GetDefaultUint64() uint64 {
	if m != nil && m.DefaultUint64 != nil {
		return *m.DefaultUint64
	}
	return Default_FieldTestMessage_DefaultUint64
}

func (m *FieldTestMessage) GetDefaultSfixed32() int32 {
	if m != nil && m.DefaultSfixed32 != nil {
		return *m.DefaultSfixed32
	}
	return Default_FieldTestMessage_DefaultSfixed32
}

func (m *FieldTestMessage) GetDefaultFixed32() uint32 {
	if m != nil && m.DefaultFixed32 != nil {
		return *m.DefaultFixed32
	}
	return Default_FieldTestMessage_DefaultFixed32
}

func (m *FieldTestMessage) GetDefaultFloat() float32 {
	if m != nil && m.DefaultFloat != nil {
		return *m.DefaultFloat
	}
	return Default_FieldTestMessage_DefaultFloat
}

func (m *FieldTestMessage) GetDefaultSfixed64() int64 {
	if m != nil && m.DefaultSfixed64 != nil {
		return *m.DefaultSfixed64
	}
	return Default_FieldTestMessage_DefaultSfixed64
}

func (m *FieldTestMessage) GetDefaultFixed64() uint64 {
	if m != nil && m.DefaultFixed64 != nil {
		return *m.DefaultFixed64
	}
	return Default_FieldTestMessage_DefaultFixed64
}

func (m *FieldTestMessage) GetDefaultDouble() float64 {
	if m != nil && m.DefaultDouble != nil {
		return *m.DefaultDouble
	}
	return Default_FieldTestMessage_DefaultDouble
}

func (m *FieldTestMessage) GetDefaultString() string {
	if m != nil && m.DefaultString != nil {
		return *m.DefaultString
	}
	return Default_FieldTestMessage_DefaultString
}

func (m *FieldTestMessage) GetDefaultBytes() []byte {
	if m != nil && m.DefaultBytes != nil {
		return m.DefaultBytes
	}
	return append([]byte(nil), Default_FieldTestMessage_DefaultBytes...)
}

func (m *FieldTestMessage) GetDefaultZeroString() string {
	if m != nil && m.DefaultZeroString != nil {
		return *m.DefaultZeroString
	}
	return Default_FieldTestMessage_DefaultZeroString
}

func (m *FieldTestMessage) GetDefaultZeroBytes() []byte {
	if m != nil && m.DefaultZeroBytes != nil {
		return m.DefaultZeroBytes
	}
	return append([]byte(nil), Default_FieldTestMessage_DefaultZeroBytes...)
}

func (m *FieldTestMessage) GetDefaultFloatNeginf() float32 {
	if m != nil && m.DefaultFloatNeginf != nil {
		return *m.DefaultFloatNeginf
	}
	return Default_FieldTestMessage_DefaultFloatNeginf
}

func (m *FieldTestMessage) GetDefaultFloatPosinf() float32 {
	if m != nil && m.DefaultFloatPosinf != nil {
		return *m.DefaultFloatPosinf
	}
	return Default_FieldTestMessage_DefaultFloatPosinf
}

func (m *FieldTestMessage) GetDefaultFloatNan() float32 {
	if m != nil && m.DefaultFloatNan != nil {
		return *m.DefaultFloatNan
	}
	return Default_FieldTestMessage_DefaultFloatNan
}

func (m *FieldTestMessage) GetDefaultDoubleNeginf() float64 {
	if m != nil && m.DefaultDoubleNeginf != nil {
		return *m.DefaultDoubleNeginf
	}
	return Default_FieldTestMessage_DefaultDoubleNeginf
}

func (m *FieldTestMessage) GetDefaultDoublePosinf() float64 {
	if m != nil && m.DefaultDoublePosinf != nil {
		return *m.DefaultDoublePosinf
	}
	return Default_FieldTestMessage_DefaultDoublePosinf
}

func (m *FieldTestMessage) GetDefaultDoubleNan() float64 {
	if m != nil && m.DefaultDoubleNan != nil {
		return *m.DefaultDoubleNan
	}
	return Default_FieldTestMessage_DefaultDoubleNan
}

func (m *FieldTestMessage) GetMapInt32Int64() map[int32]int64 {
	if m != nil {
		return m.MapInt32Int64
	}
	return nil
}

func (m *FieldTestMessage) GetMapStringMessage() map[string]*FieldTestMessage_Message {
	if m != nil {
		return m.MapStringMessage
	}
	return nil
}

func (m *FieldTestMessage) GetMapFixed64Enum() map[uint64]FieldTestMessage_Enum {
	if m != nil {
		return m.MapFixed64Enum
	}
	return nil
}

type isFieldTestMessage_OneofField interface {
	isFieldTestMessage_OneofField()
}

type FieldTestMessage_OneofBool struct {
	OneofBool bool `protobuf:"varint,601,opt,name=oneof_bool,json=oneofBool,oneof"`
}

type FieldTestMessage_OneofEnum struct {
	OneofEnum FieldTestMessage_Enum `protobuf:"varint,602,opt,name=oneof_enum,json=oneofEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,oneof"`
}

type FieldTestMessage_OneofInt32 struct {
	OneofInt32 int32 `protobuf:"varint,603,opt,name=oneof_int32,json=oneofInt32,oneof"`
}

type FieldTestMessage_OneofSint32 struct {
	OneofSint32 int32 `protobuf:"zigzag32,604,opt,name=oneof_sint32,json=oneofSint32,oneof"`
}

type FieldTestMessage_OneofUint32 struct {
	OneofUint32 uint32 `protobuf:"varint,605,opt,name=oneof_uint32,json=oneofUint32,oneof"`
}

type FieldTestMessage_OneofInt64 struct {
	OneofInt64 int64 `protobuf:"varint,606,opt,name=oneof_int64,json=oneofInt64,oneof"`
}

type FieldTestMessage_OneofSint64 struct {
	OneofSint64 int64 `protobuf:"zigzag64,607,opt,name=oneof_sint64,json=oneofSint64,oneof"`
}

type FieldTestMessage_OneofUint64 struct {
	OneofUint64 uint64 `protobuf:"varint,608,opt,name=oneof_uint64,json=oneofUint64,oneof"`
}

type FieldTestMessage_OneofSfixed32 struct {
	OneofSfixed32 int32 `protobuf:"fixed32,609,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
}

type FieldTestMessage_OneofFixed32 struct {
	OneofFixed32 uint32 `protobuf:"fixed32,610,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
}

type FieldTestMessage_OneofFloat struct {
	OneofFloat float32 `protobuf:"fixed32,611,opt,name=oneof_float,json=oneofFloat,oneof"`
}

type FieldTestMessage_OneofSfixed64 struct {
	OneofSfixed64 int64 `protobuf:"fixed64,612,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
}

type FieldTestMessage_OneofFixed64 struct {
	OneofFixed64 uint64 `protobuf:"fixed64,613,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
}

type FieldTestMessage_OneofDouble struct {
	OneofDouble float64 `protobuf:"fixed64,614,opt,name=oneof_double,json=oneofDouble,oneof"`
}

type FieldTestMessage_OneofString struct {
	OneofString string `protobuf:"bytes,615,opt,name=oneof_string,json=oneofString,oneof"`
}

type FieldTestMessage_OneofBytes struct {
	OneofBytes []byte `protobuf:"bytes,616,opt,name=oneof_bytes,json=oneofBytes,oneof"`
}

type FieldTestMessage_Oneof_Message struct {
	Oneof_Message *FieldTestMessage_Message `protobuf:"bytes,617,opt,name=oneof_Message,json=oneofMessage,oneof"`
}

type FieldTestMessage_Oneofgroup struct {
	Oneofgroup *FieldTestMessage_OneofGroup `protobuf:"group,618,opt,name=OneofGroup,json=oneofgroup,oneof"`
}

type FieldTestMessage_OneofLargestTag struct {
	OneofLargestTag int32 `protobuf:"varint,536870911,opt,name=oneof_largest_tag,json=oneofLargestTag,oneof"`
}

func (*FieldTestMessage_OneofBool) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofEnum) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofInt32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSint32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofUint32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofInt64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSint64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofUint64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSfixed32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFixed32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFloat) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSfixed64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFixed64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofDouble) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofString) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofBytes) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_Oneof_Message) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_Oneofgroup) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofLargestTag) isFieldTestMessage_OneofField() {}

func (m *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
	if m != nil {
		return m.OneofField
	}
	return nil
}

func (m *FieldTestMessage) GetOneofBool() bool {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofBool); ok {
		return x.OneofBool
	}
	return false
}

func (m *FieldTestMessage) GetOneofEnum() FieldTestMessage_Enum {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofEnum); ok {
		return x.OneofEnum
	}
	return FieldTestMessage_ZERO
}

func (m *FieldTestMessage) GetOneofInt32() int32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofInt32); ok {
		return x.OneofInt32
	}
	return 0
}

func (m *FieldTestMessage) GetOneofSint32() int32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofSint32); ok {
		return x.OneofSint32
	}
	return 0
}

func (m *FieldTestMessage) GetOneofUint32() uint32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofUint32); ok {
		return x.OneofUint32
	}
	return 0
}

func (m *FieldTestMessage) GetOneofInt64() int64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofInt64); ok {
		return x.OneofInt64
	}
	return 0
}

func (m *FieldTestMessage) GetOneofSint64() int64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofSint64); ok {
		return x.OneofSint64
	}
	return 0
}

func (m *FieldTestMessage) GetOneofUint64() uint64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofUint64); ok {
		return x.OneofUint64
	}
	return 0
}

func (m *FieldTestMessage) GetOneofSfixed32() int32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofSfixed32); ok {
		return x.OneofSfixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOneofFixed32() uint32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofFixed32); ok {
		return x.OneofFixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOneofFloat() float32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofFloat); ok {
		return x.OneofFloat
	}
	return 0
}

func (m *FieldTestMessage) GetOneofSfixed64() int64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofSfixed64); ok {
		return x.OneofSfixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOneofFixed64() uint64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofFixed64); ok {
		return x.OneofFixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOneofDouble() float64 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofDouble); ok {
		return x.OneofDouble
	}
	return 0
}

func (m *FieldTestMessage) GetOneofString() string {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofString); ok {
		return x.OneofString
	}
	return ""
}

func (m *FieldTestMessage) GetOneofBytes() []byte {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofBytes); ok {
		return x.OneofBytes
	}
	return nil
}

func (m *FieldTestMessage) GetOneof_Message() *FieldTestMessage_Message {
	if x, ok := m.GetOneofField().(*FieldTestMessage_Oneof_Message); ok {
		return x.Oneof_Message
	}
	return nil
}

func (m *FieldTestMessage) GetOneofgroup() *FieldTestMessage_OneofGroup {
	if x, ok := m.GetOneofField().(*FieldTestMessage_Oneofgroup); ok {
		return x.Oneofgroup
	}
	return nil
}

func (m *FieldTestMessage) GetOneofLargestTag() int32 {
	if x, ok := m.GetOneofField().(*FieldTestMessage_OneofLargestTag); ok {
		return x.OneofLargestTag
	}
	return 0
}

type isFieldTestMessage_OneofTwo interface {
	isFieldTestMessage_OneofTwo()
}

type FieldTestMessage_OneofTwo_1 struct {
	OneofTwo_1 int32 `protobuf:"varint,700,opt,name=oneof_two_1,json=oneofTwo1,oneof"`
}

type FieldTestMessage_OneofTwo_2 struct {
	OneofTwo_2 int64 `protobuf:"varint,701,opt,name=oneof_two_2,json=oneofTwo2,oneof"`
}

func (*FieldTestMessage_OneofTwo_1) isFieldTestMessage_OneofTwo() {}

func (*FieldTestMessage_OneofTwo_2) isFieldTestMessage_OneofTwo() {}

func (m *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
	if m != nil {
		return m.OneofTwo
	}
	return nil
}

func (m *FieldTestMessage) GetOneofTwo_1() int32 {
	if x, ok := m.GetOneofTwo().(*FieldTestMessage_OneofTwo_1); ok {
		return x.OneofTwo_1
	}
	return 0
}

func (m *FieldTestMessage) GetOneofTwo_2() int64 {
	if x, ok := m.GetOneofTwo().(*FieldTestMessage_OneofTwo_2); ok {
		return x.OneofTwo_2
	}
	return 0
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*FieldTestMessage) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*FieldTestMessage_OneofBool)(nil),
		(*FieldTestMessage_OneofEnum)(nil),
		(*FieldTestMessage_OneofInt32)(nil),
		(*FieldTestMessage_OneofSint32)(nil),
		(*FieldTestMessage_OneofUint32)(nil),
		(*FieldTestMessage_OneofInt64)(nil),
		(*FieldTestMessage_OneofSint64)(nil),
		(*FieldTestMessage_OneofUint64)(nil),
		(*FieldTestMessage_OneofSfixed32)(nil),
		(*FieldTestMessage_OneofFixed32)(nil),
		(*FieldTestMessage_OneofFloat)(nil),
		(*FieldTestMessage_OneofSfixed64)(nil),
		(*FieldTestMessage_OneofFixed64)(nil),
		(*FieldTestMessage_OneofDouble)(nil),
		(*FieldTestMessage_OneofString)(nil),
		(*FieldTestMessage_OneofBytes)(nil),
		(*FieldTestMessage_Oneof_Message)(nil),
		(*FieldTestMessage_Oneofgroup)(nil),
		(*FieldTestMessage_OneofLargestTag)(nil),
		(*FieldTestMessage_OneofTwo_1)(nil),
		(*FieldTestMessage_OneofTwo_2)(nil),
	}
}

type FieldTestMessage_OptionalGroup struct {
	OptionalGroup        *string  `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_OptionalGroup struct {
	m *FieldTestMessage_OptionalGroup
}

func (m *FieldTestMessage_OptionalGroup) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_OptionalGroup{m}
}
func (m xxx_FieldTestMessage_OptionalGroup) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[1].Type
}
func (m xxx_FieldTestMessage_OptionalGroup) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[1].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_OptionalGroup) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[1].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_OptionalGroup) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_OptionalGroup) ProtoMutable() {}

func (m *FieldTestMessage_OptionalGroup) Reset()         { *m = FieldTestMessage_OptionalGroup{} }
func (m *FieldTestMessage_OptionalGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_OptionalGroup) ProtoMessage()    {}
func (*FieldTestMessage_OptionalGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 0}
}

func (m *FieldTestMessage_OptionalGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_OptionalGroup.Merge(m, src)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Size(m)
}
func (m *FieldTestMessage_OptionalGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_OptionalGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_OptionalGroup proto.InternalMessageInfo

func (m *FieldTestMessage_OptionalGroup) GetOptionalGroup() string {
	if m != nil && m.OptionalGroup != nil {
		return *m.OptionalGroup
	}
	return ""
}

type FieldTestMessage_RequiredGroup struct {
	RequiredGroup        *string  `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_RequiredGroup struct {
	m *FieldTestMessage_RequiredGroup
}

func (m *FieldTestMessage_RequiredGroup) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_RequiredGroup{m}
}
func (m xxx_FieldTestMessage_RequiredGroup) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[2].Type
}
func (m xxx_FieldTestMessage_RequiredGroup) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[2].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_RequiredGroup) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[2].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_RequiredGroup) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_RequiredGroup) ProtoMutable() {}

func (m *FieldTestMessage_RequiredGroup) Reset()         { *m = FieldTestMessage_RequiredGroup{} }
func (m *FieldTestMessage_RequiredGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_RequiredGroup) ProtoMessage()    {}
func (*FieldTestMessage_RequiredGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 1}
}

func (m *FieldTestMessage_RequiredGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_RequiredGroup.Merge(m, src)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Size(m)
}
func (m *FieldTestMessage_RequiredGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_RequiredGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_RequiredGroup proto.InternalMessageInfo

func (m *FieldTestMessage_RequiredGroup) GetRequiredGroup() string {
	if m != nil && m.RequiredGroup != nil {
		return *m.RequiredGroup
	}
	return ""
}

type FieldTestMessage_RepeatedGroup struct {
	RepeatedGroup        []string `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_RepeatedGroup struct {
	m *FieldTestMessage_RepeatedGroup
}

func (m *FieldTestMessage_RepeatedGroup) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_RepeatedGroup{m}
}
func (m xxx_FieldTestMessage_RepeatedGroup) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[3].Type
}
func (m xxx_FieldTestMessage_RepeatedGroup) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[3].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_RepeatedGroup) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[3].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_RepeatedGroup) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_RepeatedGroup) ProtoMutable() {}

func (m *FieldTestMessage_RepeatedGroup) Reset()         { *m = FieldTestMessage_RepeatedGroup{} }
func (m *FieldTestMessage_RepeatedGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_RepeatedGroup) ProtoMessage()    {}
func (*FieldTestMessage_RepeatedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 2}
}

func (m *FieldTestMessage_RepeatedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_RepeatedGroup.Merge(m, src)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Size(m)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_RepeatedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_RepeatedGroup proto.InternalMessageInfo

func (m *FieldTestMessage_RepeatedGroup) GetRepeatedGroup() []string {
	if m != nil {
		return m.RepeatedGroup
	}
	return nil
}

type FieldTestMessage_OneofGroup struct {
	OneofGroupField      *string  `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_OneofGroup struct{ m *FieldTestMessage_OneofGroup }

func (m *FieldTestMessage_OneofGroup) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_OneofGroup{m}
}
func (m xxx_FieldTestMessage_OneofGroup) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[7].Type
}
func (m xxx_FieldTestMessage_OneofGroup) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[7].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_OneofGroup) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[7].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_OneofGroup) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_OneofGroup) ProtoMutable() {}

func (m *FieldTestMessage_OneofGroup) Reset()         { *m = FieldTestMessage_OneofGroup{} }
func (m *FieldTestMessage_OneofGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_OneofGroup) ProtoMessage()    {}
func (*FieldTestMessage_OneofGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 6}
}

func (m *FieldTestMessage_OneofGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_OneofGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_OneofGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_OneofGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_OneofGroup.Merge(m, src)
}
func (m *FieldTestMessage_OneofGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_OneofGroup.Size(m)
}
func (m *FieldTestMessage_OneofGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_OneofGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_OneofGroup proto.InternalMessageInfo

func (m *FieldTestMessage_OneofGroup) GetOneofGroupField() string {
	if m != nil && m.OneofGroupField != nil {
		return *m.OneofGroupField
	}
	return ""
}

type FieldTestMessage_Message struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_Message struct{ m *FieldTestMessage_Message }

func (m *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_Message{m}
}
func (m xxx_FieldTestMessage_Message) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[8].Type
}
func (m xxx_FieldTestMessage_Message) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[8].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_Message) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[8].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_Message) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_Message) ProtoMutable() {}

func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_Message) ProtoMessage()    {}
func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 7}
}

func (m *FieldTestMessage_Message) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_Message.Unmarshal(m, b)
}
func (m *FieldTestMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_Message.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_Message) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_Message.Merge(m, src)
}
func (m *FieldTestMessage_Message) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_Message.Size(m)
}
func (m *FieldTestMessage_Message) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_Message.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo

func init() {
	proto.RegisterFile("proto2/fields.proto", fileDescriptor_fd8a9d72b841fd68)
	proto.RegisterEnum("goproto.protoc.proto2.FieldTestMessage_Enum", FieldTestMessage_Enum_name, FieldTestMessage_Enum_value)
	proto.RegisterType((*FieldTestMessage)(nil), "goproto.protoc.proto2.FieldTestMessage")
	proto.RegisterMapType((map[uint64]FieldTestMessage_Enum)(nil), "goproto.protoc.proto2.FieldTestMessage.MapFixed64EnumEntry")
	proto.RegisterMapType((map[int32]int64)(nil), "goproto.protoc.proto2.FieldTestMessage.MapInt32Int64Entry")
	proto.RegisterMapType((map[string]*FieldTestMessage_Message)(nil), "goproto.protoc.proto2.FieldTestMessage.MapStringMessageEntry")
	proto.RegisterType((*FieldTestMessage_OptionalGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.OptionalGroup")
	proto.RegisterType((*FieldTestMessage_RequiredGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.RequiredGroup")
	proto.RegisterType((*FieldTestMessage_RepeatedGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.RepeatedGroup")
	proto.RegisterType((*FieldTestMessage_OneofGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.OneofGroup")
	proto.RegisterType((*FieldTestMessage_Message)(nil), "goproto.protoc.proto2.FieldTestMessage.Message")
}

var fileDescriptor_fd8a9d72b841fd68 = []byte{
	// 1987 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x98, 0xdb, 0x73, 0x23, 0x47,
	0xf5, 0xc7, 0x3d, 0x23, 0xf9, 0xa2, 0xb6, 0x64, 0xc9, 0xe3, 0xdd, 0x5f, 0xf5, 0x6f, 0x9f, 0x3a,
	0x26, 0x90, 0x09, 0x59, 0xdb, 0xb1, 0x3c, 0x6e, 0x27, 0x02, 0x0a, 0xe2, 0x8a, 0x17, 0x93, 0x02,
	0x19, 0x26, 0x76, 0x51, 0xb5, 0x71, 0x95, 0x6a, 0x6c, 0x8f, 0xb4, 0x22, 0xd2, 0x8c, 0x23, 0x8d,
	0x76, 0x59, 0xfe, 0x8a, 0x6c, 0x80, 0xbf, 0x81, 0x27, 0xee, 0x77, 0x08, 0x7f, 0x00, 0xf7, 0xfb,
	0x25, 0x09, 0x24, 0xdc, 0xaf, 0xaf, 0xc0, 0xeb, 0x52, 0xa7, 0x4f, 0x77, 0x4f, 0xf7, 0x68, 0x1f,
	0xd6, 0x7e, 0xd8, 0x5a, 0xeb, 0xe8, 0x7b, 0xce, 0xb7, 0xbb, 0xa7, 0x3f, 0x47, 0x3d, 0x4d, 0x56,
	0xce, 0x47, 0x69, 0x96, 0x36, 0x37, 0xba, 0xfd, 0x78, 0x70, 0x36, 0x5e, 0x17, 0x9f, 0xbc, 0xab,
	0xbd, 0x54, 0xfc, 0x81, 0x1f, 0x4f, 0xf1, 0xbf, 0xe6, 0xea, 0x67, 0xd6, 0x48, 0xe3, 0x06, 0xe8,
	0x0e, 0xe3, 0x71, 0xf6, 0xa1, 0x78, 0x3c, 0x8e, 0x7a, 0xb1, 0xf7, 0x36, 0x52, 0x4b, 0xcf, 0xb3,
	0x7e, 0x9a, 0x44, 0x83, 0xce, 0x49, 0x9a, 0x0e, 0xa8, 0xc3, 0x1c, 0x7f, 0x21, 0xac, 0xaa, 0xe0,
	0x6e, 0x9a, 0x0e, 0xbc, 0x8f, 0x18, 0xa2, 0x38, 0x99, 0x0c, 0xa9, 0xcb, 0x1c, 0x7f, 0xa9, 0x79,
	0x7d, 0xfd, 0x81, 0x46, 0xeb, 0x45, 0x93, 0xf5, 0xbd, 0x64, 0x32, 0xcc, 0x4b, 0xc2, 0x27, 0xef,
	0xed, 0x64, 0x49, 0x97, 0xec, 0x27, 0xd9, 0x56, 0x93, 0x96, 0x98, 0xe3, 0xcf, 0x86, 0xda, 0xe8,
	0x03, 0x10, 0xf4, 0x1e, 0x23, 0x75, 0x2d, 0x1b, 0xa3, 0xae, 0xcc, 0x1c, 0x7f, 0x39, 0xd4, 0xd9,
	0xcf, 0xf7, 0xa7, 0x84, 0x13, 0x14, 0xce, 0x32, 0xc7, 0xaf, 0xe5, 0xc2, 0x23, 0x14, 0x16, 0x8c,
	0x79, 0x40, 0xe7, 0x98, 0xe3, 0x97, 0x2c, 0x63, 0x1e, 0x4c, 0x19, 0xf3, 0x80, 0xce, 0x33, 0xc7,
	0xf7, 0x6c, 0xe3, 0x82, 0x70, 0x82, 0xc2, 0x05, 0xe6, 0xf8, 0x65, 0xdb, 0x98, 0x07, 0xde, 0x13,
	0x64, 0x39, 0xaf, 0xd8, 0xed, 0x7f, 0x3c, 0x3e, 0xdb, 0x6a, 0xd2, 0x0a, 0x73, 0xfc, 0x7a, 0xd8,
	0xd0, 0x35, 0x65, 0xdc, 0x7b, 0x9c, 0xe8, 0x58, 0x47, 0x69, 0x09, 0x73, 0xfc, 0xf9, 0x50, 0xbb,
	0xdd, 0x90, 0x52, 0x73, 0x42, 0xdd, 0x41, 0x1a, 0x65, 0x74, 0x91, 0x39, 0xbe, 0x9b, 0x4f, 0xe8,
	0x06, 0x04, 0x1f, 0x60, 0xcf, 0x03, 0x5a, 0x65, 0x8e, 0xdf, 0x28, 0xda, 0xf3, 0x60, 0xda, 0x9e,
	0x07, 0xb4, 0xc6, 0x1c, 0x7f, 0xae, 0x60, 0x5f, 0x98, 0xff, 0x59, 0x3a, 0x39, 0x19, 0xc4, 0x74,
	0x89, 0x39, 0xbe, 0x93, 0xcf, 0xff, 0x59, 0x11, 0xb5, 0x57, 0x34, 0x1b, 0xf5, 0x93, 0x1e, 0xad,
	0x33, 0xc7, 0xaf, 0x18, 0x2b, 0x2a, 0xa2, 0xd6, 0x84, 0x4e, 0xee, 0x66, 0xf1, 0x98, 0x36, 0x98,
	0xe3, 0x57, 0xf3, 0x09, 0xed, 0x42, 0xd0, 0xbb, 0x69, 0x8c, 0x51, 0x6e, 0x34, 0xba, 0xcc, 0x1c,
	0x7f, 0xb1, 0xb9, 0xf1, 0xb0, 0xfb, 0x52, 0xfe, 0x9f, 0x4f, 0x4a, 0x51, 0xf1, 0x42, 0xbe, 0xe1,
	0x7b, 0xa3, 0x74, 0x72, 0x4e, 0x3d, 0xe6, 0xf8, 0xa4, 0xb9, 0xfd, 0xb0, 0x85, 0x0f, 0x64, 0xf2,
	0xfb, 0x21, 0x39, 0xb4, 0x6b, 0x01, 0x72, 0xa3, 0xf8, 0xa5, 0x49, 0x7f, 0x14, 0x9f, 0x21, 0x72,
	0x31, 0x73, 0x01, 0x39, 0x15, 0x54, 0xc8, 0x69, 0x91, 0x40, 0xae, 0xcb, 0xdc, 0x8b, 0x23, 0xa7,
	0x4a, 0x28, 0xe4, 0x74, 0x49, 0x24, 0xa4, 0xc7, 0x5c, 0x40, 0x4e, 0x45, 0x35, 0x72, 0x5a, 0x26,
	0x91, 0xbb, 0xc5, 0x5c, 0x40, 0x4e, 0x85, 0x73, 0xe4, 0xb4, 0x50, 0x22, 0xd7, 0x67, 0x2e, 0x20,
	0xa7, 0xc2, 0x39, 0x72, 0xa6, 0x31, 0x0f, 0xe8, 0xc7, 0x98, 0x0b, 0xc8, 0x19, 0xc6, 0xb8, 0x93,
	0x2c, 0x63, 0x1e, 0xd0, 0x17, 0x99, 0x0b, 0xc8, 0x99, 0xc6, 0x05, 0xa1, 0x44, 0x6e, 0xc0, 0x5c,
	0x40, 0xce, 0x34, 0x46, 0xe4, 0xf2, 0x8a, 0x0a, 0xa3, 0x21, 0x73, 0x01, 0x39, 0x5d, 0xd3, 0x40,
	0x4e, 0x8b, 0x95, 0x36, 0x61, 0x2e, 0x20, 0xa7, 0xe2, 0x06, 0x72, 0xb9, 0x54, 0x20, 0x97, 0x32,
	0x17, 0x90, 0xd3, 0x42, 0x85, 0x5c, 0xc1, 0x9e, 0x07, 0xf4, 0x9c, 0xb9, 0x80, 0x9c, 0x6d, 0x8f,
	0xc8, 0xd9, 0xf6, 0x3c, 0xa0, 0x2f, 0x31, 0x17, 0x90, 0xb3, 0xec, 0x0b, 0xf3, 0x97, 0xc8, 0x8d,
	0x98, 0x0b, 0xc8, 0xa9, 0x70, 0x8e, 0x5c, 0x3e, 0x00, 0x44, 0x6e, 0xcc, 0x5c, 0x40, 0x4e, 0xdb,
	0x6b, 0xe4, 0xf2, 0x2d, 0x29, 0x90, 0xcb, 0x98, 0x0b, 0xc8, 0xe9, 0x3d, 0xa9, 0x90, 0xd3, 0x32,
	0x85, 0xdc, 0x84, 0xb9, 0x97, 0x42, 0x4e, 0x15, 0x32, 0x90, 0x53, 0x21, 0x44, 0xee, 0x36, 0x73,
	0x2f, 0x82, 0x5c, 0x28, 0x93, 0x25, 0x72, 0x56, 0x2d, 0xef, 0x51, 0x28, 0x7e, 0x1e, 0x47, 0x99,
	0x42, 0xee, 0xbb, 0x0e, 0x2b, 0x21, 0x73, 0x18, 0x15, 0xcc, 0x85, 0x86, 0x4a, 0x30, 0xf7, 0x3d,
	0x50, 0x5d, 0x02, 0x3a, 0xac, 0x21, 0xa0, 0x7b, 0x07, 0xac, 0xac, 0xac, 0x89, 0x8c, 0x7c, 0x1f,
	0x8a, 0x0a, 0xea, 0x30, 0x8c, 0xd4, 0xf9, 0xf0, 0xa8, 0xa4, 0x4e, 0x52, 0xf7, 0x03, 0x10, 0x0a,
	0xec, 0x30, 0x2e, 0xb1, 0x33, 0x95, 0x12, 0xbb, 0x1f, 0x82, 0xb2, 0x96, 0x2b, 0x25, 0x77, 0x05,
	0x6f, 0x1e, 0xd0, 0x1f, 0x81, 0xb0, 0x64, 0x79, 0xf3, 0x60, 0xca, 0x9b, 0x07, 0xf4, 0xc7, 0x20,
	0xf4, 0x6c, 0xef, 0x82, 0x52, 0x92, 0xf7, 0x13, 0x50, 0x96, 0x6d, 0x6f, 0x1e, 0x78, 0xd7, 0x61,
	0xef, 0xab, 0x9a, 0x0a, 0xa7, 0x9f, 0x82, 0x56, 0xb0, 0x27, 0xab, 0x2a, 0xf6, 0xde, 0x49, 0x74,
	0x4c, 0xb3, 0xf7, 0x33, 0x10, 0x0b, 0xf8, 0xf0, 0x0b, 0x05, 0x9f, 0x39, 0x2b, 0x84, 0xef, 0xe7,
	0xa0, 0x74, 0xf3, 0x59, 0x21, 0x7d, 0xd3, 0x23, 0xe0, 0x01, 0xfd, 0x05, 0x48, 0x1b, 0xc5, 0x11,
	0xf0, 0x60, 0x7a, 0x04, 0x3c, 0xa0, 0xbf, 0x04, 0xf1, 0x5c, 0x61, 0x04, 0x85, 0x55, 0x90, 0xfc,
	0xfd, 0x0a, 0xa4, 0x4e, 0xbe, 0x0a, 0x12, 0x40, 0x6b, 0x65, 0x11, 0xc0, 0x5f, 0x83, 0xb2, 0x62,
	0xac, 0x2c, 0x12, 0x68, 0xce, 0x0a, 0x09, 0xfc, 0x0d, 0x08, 0xab, 0xf9, 0xac, 0x10, 0xc1, 0x17,
	0x8c, 0x71, 0x2a, 0x04, 0x5f, 0x03, 0xe5, 0xe5, 0x18, 0xc4, 0x4a, 0x8a, 0xc1, 0xe3, 0x1c, 0x00,
	0x64, 0xf0, 0x75, 0xa8, 0x7c, 0x21, 0x08, 0x31, 0x5b, 0x43, 0x68, 0x14, 0xf3, 0x7c, 0x52, 0x3d,
	0x8b, 0xbb, 0xd1, 0x64, 0x90, 0x21, 0x83, 0x9f, 0x85, 0x53, 0xe4, 0x42, 0xab, 0x9c, 0x8d, 0x26,
	0x71, 0xb8, 0x28, 0xbf, 0x12, 0x20, 0x1e, 0xe5, 0x4a, 0xc1, 0xe1, 0xe7, 0x2e, 0x71, 0xde, 0x6c,
	0x95, 0x0e, 0xda, 0x7b, 0xba, 0xac, 0x60, 0xf1, 0x31, 0x52, 0x53, 0x65, 0x91, 0x9b, 0xcf, 0x43,
	0xdd, 0xd9, 0x96, 0xb3, 0x19, 0x2a, 0x3f, 0x84, 0xf1, 0x71, 0xb2, 0xa4, 0x84, 0x92, 0xc5, 0x2f,
	0x80, 0x72, 0x19, 0x94, 0xaa, 0x84, 0xa4, 0xd1, 0x90, 0x4a, 0x18, 0xbf, 0x08, 0xd2, 0x9a, 0x29,
	0x3d, 0x52, 0xbf, 0x97, 0xa6, 0x3d, 0x0f, 0xe8, 0x97, 0x40, 0x59, 0x2a, 0xd8, 0x8b, 0x9f, 0x02,
	0xcb, 0x9e, 0x07, 0xf4, 0xcb, 0xa0, 0xf4, 0x8a, 0xf6, 0xb6, 0x54, 0xf2, 0xf8, 0x15, 0x90, 0x96,
	0x8b, 0xf6, 0x3c, 0xf0, 0xd6, 0x48, 0x43, 0x57, 0x55, 0x8c, 0x7d, 0x15, 0xc4, 0x75, 0x10, 0xd7,
	0x55, 0x5d, 0x85, 0xe4, 0x13, 0x44, 0x85, 0x34, 0x91, 0x5f, 0x03, 0xf5, 0x3c, 0xa8, 0x95, 0xe9,
	0x0d, 0xcd, 0xaf, 0x9e, 0x1a, 0x22, 0xf9, 0x75, 0x90, 0xba, 0xad, 0xf2, 0xd6, 0xfa, 0x66, 0xa0,
	0x67, 0x87, 0x5c, 0x4e, 0x8d, 0x83, 0x07, 0xf4, 0x1b, 0x20, 0x6f, 0x4c, 0x8f, 0x43, 0xfc, 0x86,
	0xdb, 0xe3, 0xe0, 0x01, 0xfd, 0x26, 0xa8, 0xe7, 0xa6, 0xc6, 0xc1, 0x03, 0x6f, 0x3d, 0x5f, 0x0e,
	0x09, 0xe6, 0xb7, 0x40, 0xeb, 0xb4, 0xe6, 0x60, 0x20, 0x9b, 0xdb, 0x7a, 0x4d, 0x24, 0x9f, 0x3b,
	0xc6, 0x4a, 0x23, 0x9e, 0xdf, 0x06, 0x7d, 0xa5, 0x55, 0xbf, 0x15, 0x0f, 0x06, 0xe9, 0xf5, 0xd5,
	0x3b, 0xe9, 0x68, 0x70, 0xf6, 0xc8, 0x2a, 0xc9, 0xd7, 0x1d, 0x71, 0x7d, 0x77, 0x3e, 0x61, 0xa4,
	0xf5, 0x55, 0xc8, 0xab, 0xb6, 0xfe, 0x0f, 0xf3, 0x8e, 0xb7, 0xb6, 0xf8, 0x71, 0x73, 0x7b, 0xfb,
	0xb8, 0xb9, 0xc3, 0x8f, 0xb7, 0xb6, 0x77, 0xf4, 0x12, 0x20, 0xc4, 0x9b, 0x64, 0x45, 0x65, 0x7f,
	0x22, 0x1e, 0xa5, 0xca, 0xfb, 0x4d, 0xf4, 0x9e, 0x09, 0x97, 0xe5, 0xb7, 0x37, 0xe3, 0x51, 0x2a,
	0x0d, 0x37, 0x88, 0x67, 0xa5, 0xa0, 0xeb, 0x5b, 0xe8, 0x3a, 0x13, 0x36, 0x8c, 0x0c, 0xf4, 0xd8,
	0x21, 0x57, 0xac, 0x47, 0xd2, 0x49, 0xe2, 0x5e, 0x3f, 0xe9, 0xd2, 0x97, 0x4b, 0xf8, 0x64, 0xd6,
	0xfa, 0x49, 0x37, 0xf4, 0xcc, 0x27, 0xd3, 0x16, 0x02, 0x8f, 0x17, 0x13, 0xcf, 0xd3, 0x31, 0x24,
	0xde, 0xc3, 0xc4, 0xd2, 0x54, 0xde, 0x87, 0xc5, 0xf7, 0xde, 0x93, 0x64, 0xb9, 0x60, 0x18, 0x25,
	0xf4, 0x15, 0x99, 0x94, 0x44, 0x89, 0x7e, 0xb4, 0x68, 0x16, 0x25, 0xde, 0xd3, 0xe4, 0xaa, 0xfd,
	0xb4, 0xd4, 0x18, 0x3f, 0x59, 0x12, 0x0f, 0x0d, 0xc7, 0xb8, 0x62, 0x3d, 0x32, 0x39, 0xc8, 0xa7,
	0xa6, 0x52, 0xe5, 0x28, 0x3f, 0x85, 0xa9, 0xa5, 0xe9, 0x4c, 0x39, 0xcc, 0x66, 0xbe, 0x90, 0xca,
	0x34, 0x4a, 0xe8, 0xa7, 0x65, 0x1a, 0x8c, 0xb3, 0x61, 0x1b, 0x46, 0x89, 0x77, 0x4a, 0xea, 0xc3,
	0xe8, 0x1c, 0x9b, 0x86, 0x64, 0xf7, 0xdf, 0x25, 0xd1, 0x73, 0x5b, 0x0f, 0xdd, 0x73, 0xa3, 0x73,
	0xd1, 0x5b, 0x04, 0xe1, 0x7b, 0x49, 0x36, 0xba, 0x1b, 0xd6, 0x86, 0x66, 0xcc, 0x1b, 0x10, 0x0f,
	0x4c, 0x70, 0x2f, 0x74, 0x86, 0xb2, 0xb7, 0xff, 0x07, 0x7d, 0xde, 0x73, 0x01, 0x1f, 0xdc, 0x31,
	0x32, 0x80, 0x56, 0x8d, 0x61, 0x21, 0xec, 0x75, 0x09, 0xc4, 0x14, 0x52, 0xd8, 0x66, 0xff, 0x8b,
	0x5e, 0xef, 0xba, 0x80, 0x97, 0x04, 0x0f, 0xda, 0x2b, 0x3a, 0x2d, 0x0d, 0xad, 0xa0, 0xc7, 0x08,
	0x49, 0x93, 0x38, 0xed, 0x62, 0xcb, 0x7f, 0x0d, 0x5e, 0xde, 0x17, 0xf6, 0x67, 0xc2, 0x8a, 0x08,
	0x8a, 0x66, 0xdf, 0x56, 0x0a, 0x31, 0x86, 0xd7, 0xcb, 0x17, 0x6f, 0xf5, 0xba, 0x9e, 0x70, 0x5c,
	0x25, 0x8b, 0x58, 0x0f, 0xdb, 0xf1, 0x1b, 0x50, 0x70, 0x76, 0x7f, 0x26, 0x44, 0x17, 0x6c, 0xf0,
	0x8f, 0x92, 0x2a, 0x6a, 0x64, 0x7b, 0xff, 0xad, 0xb8, 0x54, 0xd8, 0x9f, 0x09, 0x31, 0x55, 0xf6,
	0x76, 0xad, 0x92, 0x9d, 0xfd, 0x77, 0xa0, 0xaa, 0x69, 0x95, 0x6c, 0xeb, 0xa6, 0x1f, 0x0f, 0xe8,
	0x9b, 0x20, 0x2a, 0x99, 0x7e, 0x3c, 0xb0, 0xfd, 0x78, 0x40, 0xdf, 0x02, 0x91, 0x67, 0xf9, 0x99,
	0x2a, 0xd9, 0xca, 0x7f, 0x0f, 0xaa, 0xb2, 0xe5, 0x27, 0x4e, 0x1f, 0x4b, 0xb2, 0x96, 0xea, 0xcb,
	0x7f, 0x00, 0x5d, 0x7d, 0x7f, 0x26, 0xac, 0x61, 0xb5, 0xae, 0x3e, 0x29, 0x61, 0x40, 0x37, 0xf0,
	0x3f, 0x82, 0x70, 0x7e, 0x7f, 0x26, 0x44, 0x1f, 0xd5, 0xbd, 0xf5, 0x0c, 0xb0, 0x77, 0xff, 0x09,
	0x54, 0xae, 0x9e, 0x01, 0x76, 0xed, 0x82, 0x2b, 0x0f, 0xe8, 0x9f, 0x41, 0xd6, 0x28, 0xb8, 0xf2,
	0xa0, 0xe0, 0xca, 0x03, 0xfa, 0x17, 0x10, 0xce, 0xd9, 0xae, 0xe6, 0x6c, 0x65, 0xa7, 0xfe, 0x2b,
	0xc8, 0x1c, 0x3d, 0x5b, 0xd9, 0xa1, 0xf3, 0x95, 0xc3, 0x1e, 0xf9, 0x37, 0x50, 0x55, 0xf2, 0x95,
	0xc3, 0xee, 0xa8, 0x67, 0x80, 0x6d, 0xf1, 0xef, 0x20, 0xaa, 0xea, 0x19, 0x60, 0x43, 0xfc, 0xa8,
	0x1a, 0x97, 0x3a, 0x36, 0xfd, 0xa3, 0x7c, 0xa9, 0xdb, 0x02, 0x3d, 0x11, 0x85, 0xd2, 0x91, 0xdc,
	0xc0, 0x78, 0x64, 0xfa, 0x67, 0x59, 0x5c, 0x15, 0x34, 0x1f, 0xfa, 0xaa, 0x00, 0x52, 0xc5, 0x79,
	0x49, 0x8f, 0x17, 0x8f, 0x4b, 0x4f, 0x92, 0x65, 0x1c, 0xef, 0x20, 0x1a, 0xf5, 0xe2, 0x71, 0xd6,
	0xc9, 0xa2, 0x1e, 0xbd, 0x7f, 0xff, 0xfe, 0x7d, 0x47, 0x6e, 0xe8, 0xba, 0xf8, 0xfa, 0x83, 0xf8,
	0xed, 0x61, 0xd4, 0xf3, 0x1e, 0x51, 0xab, 0x90, 0xdd, 0x49, 0x3b, 0x9b, 0xf4, 0xd5, 0x59, 0x21,
	0x74, 0x24, 0x1c, 0x87, 0x77, 0xd2, 0x4d, 0x5b, 0xd2, 0xa4, 0xdf, 0x99, 0x15, 0x9b, 0xd5, 0x90,
	0x34, 0xaf, 0x71, 0x52, 0xb3, 0xae, 0x2f, 0xac, 0xfb, 0x18, 0x9c, 0xe3, 0x8a, 0xb8, 0xb7, 0xd1,
	0xd7, 0x1a, 0x42, 0x06, 0x79, 0xd6, 0x3b, 0x98, 0xf5, 0x52, 0x89, 0x79, 0x77, 0xc4, 0xcb, 0xa7,
	0x7e, 0x37, 0xc3, 0xbc, 0x1d, 0xc8, 0x33, 0x8e, 0x8d, 0xd6, 0x51, 0x18, 0xf3, 0xde, 0xc0, 0x33,
	0xb3, 0x3e, 0x4f, 0x62, 0xe2, 0xfb, 0x88, 0x37, 0xdd, 0x55, 0xbd, 0x06, 0x29, 0xbd, 0x18, 0xdf,
	0x15, 0xd7, 0x98, 0xb3, 0x21, 0xfc, 0xe9, 0x5d, 0x21, 0xb3, 0xb7, 0xa3, 0xc1, 0x24, 0x16, 0xb7,
	0x96, 0xa5, 0x10, 0x3f, 0xb4, 0xdc, 0xa7, 0x9c, 0x6b, 0x19, 0xb9, 0xfa, 0xc0, 0x7e, 0x69, 0x16,
	0xa9, 0x60, 0x91, 0x3d, 0xb3, 0xc8, 0x25, 0xce, 0xda, 0x86, 0x6b, 0x4a, 0x56, 0x1e, 0xd0, 0x39,
	0x4d, 0xcf, 0x39, 0xf4, 0xdc, 0x35, 0x3d, 0x2f, 0xfa, 0x1a, 0x6a, 0x18, 0x3e, 0x4d, 0x48, 0xbe,
	0xcb, 0xc4, 0x45, 0xa0, 0xd8, 0x02, 0x62, 0x6d, 0x3b, 0xe2, 0xe6, 0x98, 0xfe, 0x4b, 0x60, 0x25,
	0xb7, 0x94, 0xd0, 0x89, 0xaa, 0xd7, 0x2a, 0x64, 0x5e, 0x56, 0x5d, 0xfd, 0x7f, 0x52, 0x16, 0xfd,
	0x75, 0x81, 0x94, 0x6f, 0xee, 0x85, 0x07, 0x8d, 0x19, 0x6f, 0x9e, 0xc0, 0x19, 0xbb, 0xe1, 0xec,
	0xd6, 0x74, 0x03, 0x81, 0xa4, 0xdd, 0x45, 0x52, 0xd1, 0x9b, 0xec, 0xb9, 0xb9, 0x85, 0x97, 0xdb,
	0x8d, 0x7b, 0xed, 0xe7, 0xe6, 0x16, 0xee, 0xb5, 0x1b, 0xaf, 0xb4, 0xc3, 0xea, 0xe1, 0x5e, 0xbb,
	0x73, 0xb8, 0x7f, 0x70, 0xf4, 0xfc, 0x33, 0xed, 0x67, 0xc3, 0x2b, 0xe6, 0xa7, 0x0e, 0xfc, 0x3b,
	0x68, 0xef, 0xed, 0x3e, 0x73, 0xf3, 0xbd, 0xbd, 0x7e, 0x76, 0x6b, 0x72, 0xb2, 0x7e, 0x9a, 0x0e,
	0x37, 0x7a, 0xe9, 0x20, 0x4a, 0x7a, 0x1b, 0x62, 0xb6, 0x27, 0x93, 0xee, 0xc6, 0xed, 0xe6, 0xc6,
	0xe9, 0xf0, 0x0c, 0x3f, 0x9f, 0xae, 0xf5, 0xe2, 0x64, 0xad, 0x97, 0x6e, 0x64, 0xf1, 0x38, 0x3b,
	0x8b, 0xb2, 0x08, 0xc3, 0xcd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x34, 0xd6, 0x88, 0x19,
	0x17, 0x00, 0x00,
}

func init() {
	xxx_Fields_ProtoFile_FileDesc.Messages = xxx_Fields_ProtoFile_MessageDescs[0:1]
	xxx_Fields_ProtoFile_MessageDescs[0].Enums = xxx_Fields_ProtoFile_EnumDescs[0:1]
	xxx_Fields_ProtoFile_MessageDescs[0].Messages = xxx_Fields_ProtoFile_MessageDescs[1:9]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[1].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[16].MessageType = xxx_Fields_ProtoFile_MessageTypes[8].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[17].MessageType = xxx_Fields_ProtoFile_MessageTypes[1].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[19].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[34].MessageType = xxx_Fields_ProtoFile_MessageTypes[8].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[35].MessageType = xxx_Fields_ProtoFile_MessageTypes[2].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[37].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[52].MessageType = xxx_Fields_ProtoFile_MessageTypes[8].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[53].MessageType = xxx_Fields_ProtoFile_MessageTypes[3].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[55].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[78].MessageType = xxx_Fields_ProtoFile_MessageDescs[4].Reference()
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[79].MessageType = xxx_Fields_ProtoFile_MessageDescs[5].Reference()
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[80].MessageType = xxx_Fields_ProtoFile_MessageDescs[6].Reference()
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[82].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[97].MessageType = xxx_Fields_ProtoFile_MessageTypes[8].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[98].MessageType = xxx_Fields_ProtoFile_MessageTypes[7].Type
	xxx_Fields_ProtoFile_MessageDescs[5].Fields[1].MessageType = xxx_Fields_ProtoFile_MessageTypes[8].Type
	xxx_Fields_ProtoFile_MessageDescs[6].Fields[1].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	var err error
	Fields_ProtoFile, err = prototype.NewFile(&xxx_Fields_ProtoFile_FileDesc)
	if err != nil {
		panic(err)
	}
}

const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)

var Fields_ProtoFile protoreflect.FileDescriptor

var xxx_Fields_ProtoFile_FileDesc = prototype.File{
	Syntax:  protoreflect.Proto2,
	Path:    "proto2/fields.proto",
	Package: "goproto.protoc.proto2",
}
var xxx_Fields_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
	prototype.GoEnum(
		xxx_Fields_ProtoFile_EnumDescs[0].Reference(),
		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
			return FieldTestMessage_Enum(n)
		},
	),
}
var xxx_Fields_ProtoFile_EnumDescs = [1]prototype.Enum{
	{
		Name: "Enum",
		Values: []prototype.EnumValue{
			{Name: "ZERO", Number: 0},
			{Name: "ONE", Number: 1},
		},
	},
}
var xxx_Fields_ProtoFile_MessageTypes = [9]protoimpl.MessageType{
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[0].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage)
		},
	)},
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[1].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_OptionalGroup)
		},
	)},
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[2].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_RequiredGroup)
		},
	)},
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[3].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_RepeatedGroup)
		},
	)},
	{ /* no message type for FieldTestMessage_MapInt32Int64Entry */ },
	{ /* no message type for FieldTestMessage_MapStringMessageEntry */ },
	{ /* no message type for FieldTestMessage_MapFixed64EnumEntry */ },
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[7].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_OneofGroup)
		},
	)},
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[8].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_Message)
		},
	)},
}
var xxx_Fields_ProtoFile_MessageDescs = [9]prototype.Message{
	{
		Name: "FieldTestMessage",
		Fields: []prototype.Field{
			{
				Name:        "optional_bool",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BoolKind,
				JSONName:    "optionalBool",
			},
			{
				Name:        "optional_enum",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "optionalEnum",
			},
			{
				Name:        "optional_int32",
				Number:      3,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "optionalInt32",
			},
			{
				Name:        "optional_sint32",
				Number:      4,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "optionalSint32",
			},
			{
				Name:        "optional_uint32",
				Number:      5,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "optionalUint32",
			},
			{
				Name:        "optional_int64",
				Number:      6,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "optionalInt64",
			},
			{
				Name:        "optional_sint64",
				Number:      7,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "optionalSint64",
			},
			{
				Name:        "optional_uint64",
				Number:      8,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "optionalUint64",
			},
			{
				Name:        "optional_sfixed32",
				Number:      9,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "optionalSfixed32",
			},
			{
				Name:        "optional_fixed32",
				Number:      10,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "optionalFixed32",
			},
			{
				Name:        "optional_float",
				Number:      11,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "optionalFloat",
			},
			{
				Name:        "optional_sfixed64",
				Number:      12,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "optionalSfixed64",
			},
			{
				Name:        "optional_fixed64",
				Number:      13,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "optionalFixed64",
			},
			{
				Name:        "optional_double",
				Number:      14,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "optionalDouble",
			},
			{
				Name:        "optional_string",
				Number:      15,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "optionalString",
			},
			{
				Name:        "optional_bytes",
				Number:      16,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BytesKind,
				JSONName:    "optionalBytes",
			},
			{
				Name:        "optional_Message",
				Number:      17,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.MessageKind,
				JSONName:    "optionalMessage",
			},
			{
				Name:        "optionalgroup",
				Number:      18,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.GroupKind,
				JSONName:    "optionalgroup",
			},
			{
				Name:        "required_bool",
				Number:      101,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.BoolKind,
				JSONName:    "requiredBool",
			},
			{
				Name:        "required_enum",
				Number:      102,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.EnumKind,
				JSONName:    "requiredEnum",
			},
			{
				Name:        "required_int32",
				Number:      103,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "requiredInt32",
			},
			{
				Name:        "required_sint32",
				Number:      104,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "requiredSint32",
			},
			{
				Name:        "required_uint32",
				Number:      105,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "requiredUint32",
			},
			{
				Name:        "required_int64",
				Number:      106,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "requiredInt64",
			},
			{
				Name:        "required_sint64",
				Number:      107,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "requiredSint64",
			},
			{
				Name:        "required_uint64",
				Number:      108,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "requiredUint64",
			},
			{
				Name:        "required_sfixed32",
				Number:      109,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "requiredSfixed32",
			},
			{
				Name:        "required_fixed32",
				Number:      110,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "requiredFixed32",
			},
			{
				Name:        "required_float",
				Number:      111,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.FloatKind,
				JSONName:    "requiredFloat",
			},
			{
				Name:        "required_sfixed64",
				Number:      112,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "requiredSfixed64",
			},
			{
				Name:        "required_fixed64",
				Number:      113,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "requiredFixed64",
			},
			{
				Name:        "required_double",
				Number:      114,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "requiredDouble",
			},
			{
				Name:        "required_string",
				Number:      115,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.StringKind,
				JSONName:    "requiredString",
			},
			{
				Name:        "required_bytes",
				Number:      116,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.BytesKind,
				JSONName:    "requiredBytes",
			},
			{
				Name:        "required_Message",
				Number:      117,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.MessageKind,
				JSONName:    "requiredMessage",
			},
			{
				Name:        "requiredgroup",
				Number:      118,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.GroupKind,
				JSONName:    "requiredgroup",
			},
			{
				Name:        "repeated_bool",
				Number:      201,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.BoolKind,
				JSONName:    "repeatedBool",
			},
			{
				Name:        "repeated_enum",
				Number:      202,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.EnumKind,
				JSONName:    "repeatedEnum",
			},
			{
				Name:        "repeated_int32",
				Number:      203,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "repeatedInt32",
			},
			{
				Name:        "repeated_sint32",
				Number:      204,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "repeatedSint32",
			},
			{
				Name:        "repeated_uint32",
				Number:      205,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "repeatedUint32",
			},
			{
				Name:        "repeated_int64",
				Number:      206,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "repeatedInt64",
			},
			{
				Name:        "repeated_sint64",
				Number:      207,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "repeatedSint64",
			},
			{
				Name:        "repeated_uint64",
				Number:      208,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "repeatedUint64",
			},
			{
				Name:        "repeated_sfixed32",
				Number:      209,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "repeatedSfixed32",
			},
			{
				Name:        "repeated_fixed32",
				Number:      210,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "repeatedFixed32",
			},
			{
				Name:        "repeated_float",
				Number:      211,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.FloatKind,
				JSONName:    "repeatedFloat",
			},
			{
				Name:        "repeated_sfixed64",
				Number:      212,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "repeatedSfixed64",
			},
			{
				Name:        "repeated_fixed64",
				Number:      213,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "repeatedFixed64",
			},
			{
				Name:        "repeated_double",
				Number:      214,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "repeatedDouble",
			},
			{
				Name:        "repeated_string",
				Number:      215,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.StringKind,
				JSONName:    "repeatedString",
			},
			{
				Name:        "repeated_bytes",
				Number:      216,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.BytesKind,
				JSONName:    "repeatedBytes",
			},
			{
				Name:        "repeated_Message",
				Number:      217,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "repeatedMessage",
			},
			{
				Name:        "repeatedgroup",
				Number:      218,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.GroupKind,
				JSONName:    "repeatedgroup",
			},
			{
				Name:        "default_bool",
				Number:      301,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BoolKind,
				JSONName:    "defaultBool",
				Default:     protoreflect.ValueOf(bool(true)),
			},
			{
				Name:        "default_enum",
				Number:      302,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "defaultEnum",
				Default:     protoreflect.ValueOf(string("ONE")),
			},
			{
				Name:        "default_int32",
				Number:      303,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "defaultInt32",
				Default:     protoreflect.ValueOf(int32(1)),
			},
			{
				Name:        "default_sint32",
				Number:      304,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "defaultSint32",
				Default:     protoreflect.ValueOf(int32(1)),
			},
			{
				Name:        "default_uint32",
				Number:      305,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "defaultUint32",
				Default:     protoreflect.ValueOf(uint32(1)),
			},
			{
				Name:        "default_int64",
				Number:      306,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "defaultInt64",
				Default:     protoreflect.ValueOf(int64(1)),
			},
			{
				Name:        "default_sint64",
				Number:      307,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "defaultSint64",
				Default:     protoreflect.ValueOf(int64(1)),
			},
			{
				Name:        "default_uint64",
				Number:      308,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "defaultUint64",
				Default:     protoreflect.ValueOf(uint64(1)),
			},
			{
				Name:        "default_sfixed32",
				Number:      309,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "defaultSfixed32",
				Default:     protoreflect.ValueOf(int32(1)),
			},
			{
				Name:        "default_fixed32",
				Number:      310,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "defaultFixed32",
				Default:     protoreflect.ValueOf(uint32(1)),
			},
			{
				Name:        "default_float",
				Number:      311,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "defaultFloat",
				Default:     protoreflect.ValueOf(float32(3.14)),
			},
			{
				Name:        "default_sfixed64",
				Number:      312,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "defaultSfixed64",
				Default:     protoreflect.ValueOf(int64(1)),
			},
			{
				Name:        "default_fixed64",
				Number:      313,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "defaultFixed64",
				Default:     protoreflect.ValueOf(uint64(1)),
			},
			{
				Name:        "default_double",
				Number:      314,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "defaultDouble",
				Default:     protoreflect.ValueOf(float64(3.1415)),
			},
			{
				Name:        "default_string",
				Number:      315,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "defaultString",
				Default:     protoreflect.ValueOf(string("hello,\"world!\"\n")),
			},
			{
				Name:        "default_bytes",
				Number:      316,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BytesKind,
				JSONName:    "defaultBytes",
				Default:     protoreflect.ValueOf(("hello,ޭ\xbe\xef")),
			},
			{
				Name:        "default_zero_string",
				Number:      350,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "defaultZeroString",
				Default:     protoreflect.ValueOf(string("")),
			},
			{
				Name:        "default_zero_bytes",
				Number:      351,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BytesKind,
				JSONName:    "defaultZeroBytes",
				Default:     protoreflect.ValueOf(("")),
			},
			{
				Name:        "default_float_neginf",
				Number:      400,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "defaultFloatNeginf",
				Default:     protoreflect.ValueOf(float32(math.Inf(-1))),
			},
			{
				Name:        "default_float_posinf",
				Number:      401,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "defaultFloatPosinf",
				Default:     protoreflect.ValueOf(float32(math.Inf(+1))),
			},
			{
				Name:        "default_float_nan",
				Number:      402,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "defaultFloatNan",
				Default:     protoreflect.ValueOf(float32(math.NaN())),
			},
			{
				Name:        "default_double_neginf",
				Number:      403,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "defaultDoubleNeginf",
				Default:     protoreflect.ValueOf(float64(math.Inf(-1))),
			},
			{
				Name:        "default_double_posinf",
				Number:      404,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "defaultDoublePosinf",
				Default:     protoreflect.ValueOf(float64(math.Inf(+1))),
			},
			{
				Name:        "default_double_nan",
				Number:      405,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "defaultDoubleNan",
				Default:     protoreflect.ValueOf(float64(math.NaN())),
			},
			{
				Name:        "map_int32_int64",
				Number:      500,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapInt32Int64",
			},
			{
				Name:        "map_string_message",
				Number:      501,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapStringMessage",
			},
			{
				Name:        "map_fixed64_enum",
				Number:      502,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapFixed64Enum",
			},
			{
				Name:        "oneof_bool",
				Number:      601,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BoolKind,
				JSONName:    "oneofBool",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_enum",
				Number:      602,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "oneofEnum",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_int32",
				Number:      603,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "oneofInt32",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_sint32",
				Number:      604,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "oneofSint32",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_uint32",
				Number:      605,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "oneofUint32",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_int64",
				Number:      606,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "oneofInt64",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_sint64",
				Number:      607,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "oneofSint64",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_uint64",
				Number:      608,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "oneofUint64",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_sfixed32",
				Number:      609,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "oneofSfixed32",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_fixed32",
				Number:      610,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "oneofFixed32",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_float",
				Number:      611,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "oneofFloat",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_sfixed64",
				Number:      612,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "oneofSfixed64",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_fixed64",
				Number:      613,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "oneofFixed64",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_double",
				Number:      614,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "oneofDouble",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_string",
				Number:      615,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "oneofString",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_bytes",
				Number:      616,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BytesKind,
				JSONName:    "oneofBytes",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_Message",
				Number:      617,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.MessageKind,
				JSONName:    "oneofMessage",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneofgroup",
				Number:      618,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.GroupKind,
				JSONName:    "oneofgroup",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_largest_tag",
				Number:      536870911,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "oneofLargestTag",
				OneofName:   "oneof_field",
			},
			{
				Name:        "oneof_two_1",
				Number:      700,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "oneofTwo1",
				OneofName:   "oneof_two",
			},
			{
				Name:        "oneof_two_2",
				Number:      701,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "oneofTwo2",
				OneofName:   "oneof_two",
			},
		},
		Oneofs: []prototype.Oneof{
			{Name: "oneof_field"},
			{Name: "oneof_two"},
		},
		ReservedNames:  []protoreflect.Name{"TEN_THOUSAND", "TEN_THOUSAND_AND_ONE"},
		ReservedRanges: [][2]protoreflect.FieldNumber{{10000, 10001}, {10001, 10002}},
	},
	{
		Name: "OptionalGroup",
		Fields: []prototype.Field{
			{
				Name:        "optional_group",
				Number:      19,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "optionalGroup",
			},
		},
	},
	{
		Name: "RequiredGroup",
		Fields: []prototype.Field{
			{
				Name:        "required_group",
				Number:      119,
				Cardinality: protoreflect.Required,
				Kind:        protoreflect.StringKind,
				JSONName:    "requiredGroup",
			},
		},
	},
	{
		Name: "RepeatedGroup",
		Fields: []prototype.Field{
			{
				Name:        "repeated_group",
				Number:      219,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.StringKind,
				JSONName:    "repeatedGroup",
			},
		},
	},
	{
		Name: "MapInt32Int64Entry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "MapStringMessageEntry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.MessageKind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "MapFixed64EnumEntry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "OneofGroup",
		Fields: []prototype.Field{
			{
				Name:        "oneof_group_field",
				Number:      619,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "oneofGroupField",
			},
		},
	},
	{
		Name: "Message",
	},
}
