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

package proto2

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

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

type FieldTestMessage_Enum int32

const (
	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
	FieldTestMessage_ONE  FieldTestMessage_Enum = 1
)

type xxx_FieldTestMessage_Enum FieldTestMessage_Enum

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

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

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

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

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

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

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

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

type xxx_FieldTestMessage struct{ m *FieldTestMessage }

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

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

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

var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo

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

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

const Default_FieldTestMessage_DefaultZeroString string = ""

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type isFieldTestMessage_OneofField interface {
	isFieldTestMessage_OneofField()
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (*FieldTestMessage_OneofBool) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofEnum) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofInt32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSint32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofUint32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofInt64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSint64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofUint64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSfixed32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFixed32) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFloat) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofSfixed64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofFixed64) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofDouble) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofString) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofBytes) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_Oneof_Message) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_Oneofgroup) isFieldTestMessage_OneofField() {}

func (*FieldTestMessage_OneofLargestTag) isFieldTestMessage_OneofField() {}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type isFieldTestMessage_OneofTwo interface {
	isFieldTestMessage_OneofTwo()
}

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

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

func (*FieldTestMessage_OneofTwo_1) isFieldTestMessage_OneofTwo() {}

func (*FieldTestMessage_OneofTwo_2) isFieldTestMessage_OneofTwo() {}

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

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

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

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

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

type xxx_FieldTestMessage_OptionalGroup struct {
	m *FieldTestMessage_OptionalGroup
}

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

func (m *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 *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 *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 *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 *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_Message) ProtoMessage()    {}
func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 7}
}

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

var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo

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

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

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

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

var Fields_ProtoFile protoreflect.FileDescriptor

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