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

package proto2

import (
	fmt "fmt"
	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"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// 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")
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 ""
}

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

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.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")
}

func init() { proto.RegisterFile("proto2/fields.proto", fileDescriptor_fd8a9d72b841fd68) }

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