// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: internal/testprotos/test/test.proto

package test

import (
	enums "google.golang.org/protobuf/internal/testprotos/enums"
	required "google.golang.org/protobuf/internal/testprotos/required"
	proto "google.golang.org/protobuf/proto"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

type ForeignEnum int32

const (
	ForeignEnum_FOREIGN_FOO ForeignEnum = 4
	ForeignEnum_FOREIGN_BAR ForeignEnum = 5
	ForeignEnum_FOREIGN_BAZ ForeignEnum = 6
)

// Enum value maps for ForeignEnum.
var (
	ForeignEnum_name = map[int32]string{
		4: "FOREIGN_FOO",
		5: "FOREIGN_BAR",
		6: "FOREIGN_BAZ",
	}
	ForeignEnum_value = map[string]int32{
		"FOREIGN_FOO": 4,
		"FOREIGN_BAR": 5,
		"FOREIGN_BAZ": 6,
	}
)

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

func (x ForeignEnum) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_internal_testprotos_test_test_proto_enumTypes[0].Descriptor()
}

func (ForeignEnum) Type() protoreflect.EnumType {
	return &file_internal_testprotos_test_test_proto_enumTypes[0]
}

func (x ForeignEnum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ForeignEnum) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ForeignEnum(num)
	return nil
}

// Deprecated: Use ForeignEnum.Descriptor instead.
func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0}
}

type TestReservedEnumFields int32

const (
	TestReservedEnumFields_RESERVED_ENUM TestReservedEnumFields = 0
)

// Enum value maps for TestReservedEnumFields.
var (
	TestReservedEnumFields_name = map[int32]string{
		0: "RESERVED_ENUM",
	}
	TestReservedEnumFields_value = map[string]int32{
		"RESERVED_ENUM": 0,
	}
)

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

func (x TestReservedEnumFields) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TestReservedEnumFields) Descriptor() protoreflect.EnumDescriptor {
	return file_internal_testprotos_test_test_proto_enumTypes[1].Descriptor()
}

func (TestReservedEnumFields) Type() protoreflect.EnumType {
	return &file_internal_testprotos_test_test_proto_enumTypes[1]
}

func (x TestReservedEnumFields) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *TestReservedEnumFields) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = TestReservedEnumFields(num)
	return nil
}

// Deprecated: Use TestReservedEnumFields.Descriptor instead.
func (TestReservedEnumFields) EnumDescriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{1}
}

type TestAllTypes_NestedEnum int32

const (
	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
)

// Enum value maps for TestAllTypes_NestedEnum.
var (
	TestAllTypes_NestedEnum_name = map[int32]string{
		0:  "FOO",
		1:  "BAR",
		2:  "BAZ",
		-1: "NEG",
	}
	TestAllTypes_NestedEnum_value = map[string]int32{
		"FOO": 0,
		"BAR": 1,
		"BAZ": 2,
		"NEG": -1,
	}
)

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

func (x TestAllTypes_NestedEnum) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_internal_testprotos_test_test_proto_enumTypes[2].Descriptor()
}

func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
	return &file_internal_testprotos_test_test_proto_enumTypes[2]
}

func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *TestAllTypes_NestedEnum) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = TestAllTypes_NestedEnum(num)
	return nil
}

// Deprecated: Use TestAllTypes_NestedEnum.Descriptor instead.
func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 0}
}

// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
type TestDeprecatedMessage_DeprecatedEnum int32

const (
	// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
	TestDeprecatedMessage_DEPRECATED TestDeprecatedMessage_DeprecatedEnum = 0
)

// Enum value maps for TestDeprecatedMessage_DeprecatedEnum.
var (
	TestDeprecatedMessage_DeprecatedEnum_name = map[int32]string{
		0: "DEPRECATED",
	}
	TestDeprecatedMessage_DeprecatedEnum_value = map[string]int32{
		"DEPRECATED": 0,
	}
)

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

func (x TestDeprecatedMessage_DeprecatedEnum) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TestDeprecatedMessage_DeprecatedEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_internal_testprotos_test_test_proto_enumTypes[3].Descriptor()
}

func (TestDeprecatedMessage_DeprecatedEnum) Type() protoreflect.EnumType {
	return &file_internal_testprotos_test_test_proto_enumTypes[3]
}

func (x TestDeprecatedMessage_DeprecatedEnum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *TestDeprecatedMessage_DeprecatedEnum) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = TestDeprecatedMessage_DeprecatedEnum(num)
	return nil
}

// Deprecated: Use TestDeprecatedMessage_DeprecatedEnum.Descriptor instead.
func (TestDeprecatedMessage_DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{2, 0}
}

type TestAllTypes struct {
	state                     protoimpl.MessageState                 `protogen:"open.v1"`
	OptionalInt32             *int32                                 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
	OptionalInt64             *int64                                 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
	OptionalUint32            *uint32                                `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
	OptionalUint64            *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
	OptionalSint32            *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
	OptionalSint64            *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
	OptionalFixed32           *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
	OptionalFixed64           *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
	OptionalSfixed32          *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
	OptionalSfixed64          *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
	OptionalFloat             *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
	OptionalDouble            *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
	OptionalBool              *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
	OptionalString            *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
	OptionalBytes             []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
	Optionalgroup             *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
	OptionalNestedMessage     *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	OptionalForeignMessage    *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
	OptionalImportMessage     *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage" json:"optional_import_message,omitempty"`
	OptionalNestedEnum        *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
	OptionalForeignEnum       *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=goproto.proto.test.ForeignEnum" json:"optional_foreign_enum,omitempty"`
	OptionalImportEnum        *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=goproto.proto.test.ImportEnum" json:"optional_import_enum,omitempty"`
	OptionalLazyNestedMessage *TestAllTypes_NestedMessage            `protobuf:"bytes,24,opt,name=optional_lazy_nested_message,json=optionalLazyNestedMessage" json:"optional_lazy_nested_message,omitempty"`
	RepeatedInt32             []int32                                `protobuf:"varint,31,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
	RepeatedInt64             []int64                                `protobuf:"varint,32,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
	RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
	RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
	RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
	RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
	RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
	RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
	RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
	RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
	RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
	RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
	RepeatedBool              []bool                                 `protobuf:"varint,43,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
	RepeatedString            []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
	RepeatedBytes             [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
	Repeatedgroup             []*TestAllTypes_RepeatedGroup          `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
	RepeatedNestedMessage     []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
	RepeatedForeignMessage    []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
	RepeatedImportmessage     []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage" json:"repeated_importmessage,omitempty"`
	RepeatedNestedEnum        []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,name=repeated_nested_enum,json=repeatedNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
	RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=goproto.proto.test.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
	RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,name=repeated_importenum,json=repeatedImportenum,enum=goproto.proto.test.ImportEnum" json:"repeated_importenum,omitempty"`
	MapInt32Int32             map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapInt64Int64             map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapUint32Uint32           map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapUint64Uint64           map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapSint32Sint32           map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
	MapSint64Sint64           map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
	MapFixed32Fixed32         map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapFixed64Fixed64         map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapSfixed32Sfixed32       map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapSfixed64Sfixed64       map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapInt32Float             map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapInt32Double            map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapBoolBool               map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapStringString           map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapStringBytes            map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapStringNestedMessage    map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapStringNestedEnum       map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypes_NestedEnum"`
	// Singular with defaults
	DefaultInt32       *int32                   `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81" json:"default_int32,omitempty"`
	DefaultInt64       *int64                   `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82" json:"default_int64,omitempty"`
	DefaultUint32      *uint32                  `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83" json:"default_uint32,omitempty"`
	DefaultUint64      *uint64                  `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84" json:"default_uint64,omitempty"`
	DefaultSint32      *int32                   `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85" json:"default_sint32,omitempty"`
	DefaultSint64      *int64                   `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86" json:"default_sint64,omitempty"`
	DefaultFixed32     *uint32                  `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87" json:"default_fixed32,omitempty"`
	DefaultFixed64     *uint64                  `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88" json:"default_fixed64,omitempty"`
	DefaultSfixed32    *int32                   `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89" json:"default_sfixed32,omitempty"`
	DefaultSfixed64    *int64                   `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90" json:"default_sfixed64,omitempty"`
	DefaultFloat       *float32                 `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5" json:"default_float,omitempty"`
	DefaultDouble      *float64                 `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000" json:"default_double,omitempty"`
	DefaultBool        *bool                    `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
	DefaultString      *string                  `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
	DefaultBytes       []byte                   `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
	DefaultNestedEnum  *TestAllTypes_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=goproto.proto.test.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
	// Types that are valid to be assigned to OneofField:
	//
	//	*TestAllTypes_OneofUint32
	//	*TestAllTypes_OneofNestedMessage
	//	*TestAllTypes_OneofString
	//	*TestAllTypes_OneofBytes
	//	*TestAllTypes_OneofBool
	//	*TestAllTypes_OneofUint64
	//	*TestAllTypes_OneofFloat
	//	*TestAllTypes_OneofDouble
	//	*TestAllTypes_OneofEnum
	//	*TestAllTypes_Oneofgroup
	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
	// A oneof with exactly one field.
	//
	// Types that are valid to be assigned to OneofOptional:
	//
	//	*TestAllTypes_OneofOptionalUint32
	OneofOptional isTestAllTypes_OneofOptional `protobuf_oneof:"oneof_optional"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for TestAllTypes fields.
const (
	Default_TestAllTypes_DefaultInt32       = int32(81)
	Default_TestAllTypes_DefaultInt64       = int64(82)
	Default_TestAllTypes_DefaultUint32      = uint32(83)
	Default_TestAllTypes_DefaultUint64      = uint64(84)
	Default_TestAllTypes_DefaultSint32      = int32(-85)
	Default_TestAllTypes_DefaultSint64      = int64(86)
	Default_TestAllTypes_DefaultFixed32     = uint32(87)
	Default_TestAllTypes_DefaultFixed64     = uint64(88)
	Default_TestAllTypes_DefaultSfixed32    = int32(89)
	Default_TestAllTypes_DefaultSfixed64    = int64(-90)
	Default_TestAllTypes_DefaultFloat       = float32(91.5)
	Default_TestAllTypes_DefaultDouble      = float64(92000)
	Default_TestAllTypes_DefaultBool        = bool(true)
	Default_TestAllTypes_DefaultString      = string("hello")
	Default_TestAllTypes_DefaultNestedEnum  = TestAllTypes_BAR
	Default_TestAllTypes_DefaultForeignEnum = ForeignEnum_FOREIGN_BAR
)

// Default values for TestAllTypes fields.
var (
	Default_TestAllTypes_DefaultBytes = []byte("world")
)

func (x *TestAllTypes) Reset() {
	*x = TestAllTypes{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllTypes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllTypes) ProtoMessage() {}

func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllTypes.ProtoReflect.Descriptor instead.
func (*TestAllTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (x *TestAllTypes) GetOptionalgroup() *TestAllTypes_OptionalGroup {
	if x != nil {
		return x.Optionalgroup
	}
	return nil
}

func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
	if x != nil {
		return x.OptionalNestedMessage
	}
	return nil
}

func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
	if x != nil {
		return x.OptionalForeignMessage
	}
	return nil
}

func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
	if x != nil {
		return x.OptionalImportMessage
	}
	return nil
}

func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
	if x != nil && x.OptionalNestedEnum != nil {
		return *x.OptionalNestedEnum
	}
	return TestAllTypes_FOO
}

func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
	if x != nil && x.OptionalForeignEnum != nil {
		return *x.OptionalForeignEnum
	}
	return ForeignEnum_FOREIGN_FOO
}

func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
	if x != nil && x.OptionalImportEnum != nil {
		return *x.OptionalImportEnum
	}
	return ImportEnum_IMPORT_ZERO
}

func (x *TestAllTypes) GetOptionalLazyNestedMessage() *TestAllTypes_NestedMessage {
	if x != nil {
		return x.OptionalLazyNestedMessage
	}
	return nil
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (x *TestAllTypes) GetRepeatedgroup() []*TestAllTypes_RepeatedGroup {
	if x != nil {
		return x.Repeatedgroup
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
	if x != nil {
		return x.RepeatedNestedMessage
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
	if x != nil {
		return x.RepeatedForeignMessage
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
	if x != nil {
		return x.RepeatedImportmessage
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
	if x != nil {
		return x.RepeatedNestedEnum
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
	if x != nil {
		return x.RepeatedForeignEnum
	}
	return nil
}

func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
	if x != nil {
		return x.RepeatedImportenum
	}
	return nil
}

func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
	if x != nil {
		return x.MapInt32Int32
	}
	return nil
}

func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
	if x != nil {
		return x.MapInt64Int64
	}
	return nil
}

func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
	if x != nil {
		return x.MapUint32Uint32
	}
	return nil
}

func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
	if x != nil {
		return x.MapUint64Uint64
	}
	return nil
}

func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
	if x != nil {
		return x.MapSint32Sint32
	}
	return nil
}

func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
	if x != nil {
		return x.MapSint64Sint64
	}
	return nil
}

func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
	if x != nil {
		return x.MapFixed32Fixed32
	}
	return nil
}

func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
	if x != nil {
		return x.MapFixed64Fixed64
	}
	return nil
}

func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
	if x != nil {
		return x.MapSfixed32Sfixed32
	}
	return nil
}

func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
	if x != nil {
		return x.MapSfixed64Sfixed64
	}
	return nil
}

func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
	if x != nil {
		return x.MapInt32Float
	}
	return nil
}

func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
	if x != nil {
		return x.MapInt32Double
	}
	return nil
}

func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
	if x != nil {
		return x.MapBoolBool
	}
	return nil
}

func (x *TestAllTypes) GetMapStringString() map[string]string {
	if x != nil {
		return x.MapStringString
	}
	return nil
}

func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
	if x != nil {
		return x.MapStringBytes
	}
	return nil
}

func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
	if x != nil {
		return x.MapStringNestedMessage
	}
	return nil
}

func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
	if x != nil {
		return x.MapStringNestedEnum
	}
	return nil
}

func (x *TestAllTypes) GetDefaultInt32() int32 {
	if x != nil && x.DefaultInt32 != nil {
		return *x.DefaultInt32
	}
	return Default_TestAllTypes_DefaultInt32
}

func (x *TestAllTypes) GetDefaultInt64() int64 {
	if x != nil && x.DefaultInt64 != nil {
		return *x.DefaultInt64
	}
	return Default_TestAllTypes_DefaultInt64
}

func (x *TestAllTypes) GetDefaultUint32() uint32 {
	if x != nil && x.DefaultUint32 != nil {
		return *x.DefaultUint32
	}
	return Default_TestAllTypes_DefaultUint32
}

func (x *TestAllTypes) GetDefaultUint64() uint64 {
	if x != nil && x.DefaultUint64 != nil {
		return *x.DefaultUint64
	}
	return Default_TestAllTypes_DefaultUint64
}

func (x *TestAllTypes) GetDefaultSint32() int32 {
	if x != nil && x.DefaultSint32 != nil {
		return *x.DefaultSint32
	}
	return Default_TestAllTypes_DefaultSint32
}

func (x *TestAllTypes) GetDefaultSint64() int64 {
	if x != nil && x.DefaultSint64 != nil {
		return *x.DefaultSint64
	}
	return Default_TestAllTypes_DefaultSint64
}

func (x *TestAllTypes) GetDefaultFixed32() uint32 {
	if x != nil && x.DefaultFixed32 != nil {
		return *x.DefaultFixed32
	}
	return Default_TestAllTypes_DefaultFixed32
}

func (x *TestAllTypes) GetDefaultFixed64() uint64 {
	if x != nil && x.DefaultFixed64 != nil {
		return *x.DefaultFixed64
	}
	return Default_TestAllTypes_DefaultFixed64
}

func (x *TestAllTypes) GetDefaultSfixed32() int32 {
	if x != nil && x.DefaultSfixed32 != nil {
		return *x.DefaultSfixed32
	}
	return Default_TestAllTypes_DefaultSfixed32
}

func (x *TestAllTypes) GetDefaultSfixed64() int64 {
	if x != nil && x.DefaultSfixed64 != nil {
		return *x.DefaultSfixed64
	}
	return Default_TestAllTypes_DefaultSfixed64
}

func (x *TestAllTypes) GetDefaultFloat() float32 {
	if x != nil && x.DefaultFloat != nil {
		return *x.DefaultFloat
	}
	return Default_TestAllTypes_DefaultFloat
}

func (x *TestAllTypes) GetDefaultDouble() float64 {
	if x != nil && x.DefaultDouble != nil {
		return *x.DefaultDouble
	}
	return Default_TestAllTypes_DefaultDouble
}

func (x *TestAllTypes) GetDefaultBool() bool {
	if x != nil && x.DefaultBool != nil {
		return *x.DefaultBool
	}
	return Default_TestAllTypes_DefaultBool
}

func (x *TestAllTypes) GetDefaultString() string {
	if x != nil && x.DefaultString != nil {
		return *x.DefaultString
	}
	return Default_TestAllTypes_DefaultString
}

func (x *TestAllTypes) GetDefaultBytes() []byte {
	if x != nil && x.DefaultBytes != nil {
		return x.DefaultBytes
	}
	return append([]byte(nil), Default_TestAllTypes_DefaultBytes...)
}

func (x *TestAllTypes) GetDefaultNestedEnum() TestAllTypes_NestedEnum {
	if x != nil && x.DefaultNestedEnum != nil {
		return *x.DefaultNestedEnum
	}
	return Default_TestAllTypes_DefaultNestedEnum
}

func (x *TestAllTypes) GetDefaultForeignEnum() ForeignEnum {
	if x != nil && x.DefaultForeignEnum != nil {
		return *x.DefaultForeignEnum
	}
	return Default_TestAllTypes_DefaultForeignEnum
}

func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
	if x != nil {
		return x.OneofField
	}
	return nil
}

func (x *TestAllTypes) GetOneofUint32() uint32 {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
			return x.OneofUint32
		}
	}
	return 0
}

func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
			return x.OneofNestedMessage
		}
	}
	return nil
}

func (x *TestAllTypes) GetOneofString() string {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
			return x.OneofString
		}
	}
	return ""
}

func (x *TestAllTypes) GetOneofBytes() []byte {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
			return x.OneofBytes
		}
	}
	return nil
}

func (x *TestAllTypes) GetOneofBool() bool {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
			return x.OneofBool
		}
	}
	return false
}

func (x *TestAllTypes) GetOneofUint64() uint64 {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
			return x.OneofUint64
		}
	}
	return 0
}

func (x *TestAllTypes) GetOneofFloat() float32 {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
			return x.OneofFloat
		}
	}
	return 0
}

func (x *TestAllTypes) GetOneofDouble() float64 {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
			return x.OneofDouble
		}
	}
	return 0
}

func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
			return x.OneofEnum
		}
	}
	return TestAllTypes_FOO
}

func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
	if x != nil {
		if x, ok := x.OneofField.(*TestAllTypes_Oneofgroup); ok {
			return x.Oneofgroup
		}
	}
	return nil
}

func (x *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
	if x != nil {
		return x.OneofOptional
	}
	return nil
}

func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
	if x != nil {
		if x, ok := x.OneofOptional.(*TestAllTypes_OneofOptionalUint32); ok {
			return x.OneofOptionalUint32
		}
	}
	return 0
}

type isTestAllTypes_OneofField interface {
	isTestAllTypes_OneofField()
}

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

type TestAllTypes_OneofNestedMessage struct {
	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
}

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

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

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

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

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

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

type TestAllTypes_OneofEnum struct {
	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum,oneof"`
}

type TestAllTypes_Oneofgroup struct {
	Oneofgroup *TestAllTypes_OneofGroup `protobuf:"group,121,opt,name=OneofGroup,json=oneofgroup,oneof"`
}

func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}

func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}

func (*TestAllTypes_Oneofgroup) isTestAllTypes_OneofField() {}

type isTestAllTypes_OneofOptional interface {
	isTestAllTypes_OneofOptional()
}

type TestAllTypes_OneofOptionalUint32 struct {
	OneofOptionalUint32 uint32 `protobuf:"varint,120,opt,name=oneof_optional_uint32,json=oneofOptionalUint32,oneof"`
}

func (*TestAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}

type TestManyMessageFieldsMessage struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	F1            *TestAllTypes          `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2            *TestAllTypes          `protobuf:"bytes,2,opt,name=f2" json:"f2,omitempty"`
	F3            *TestAllTypes          `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
	F4            *TestAllTypes          `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
	F5            *TestAllTypes          `protobuf:"bytes,5,opt,name=f5" json:"f5,omitempty"`
	F6            *TestAllTypes          `protobuf:"bytes,6,opt,name=f6" json:"f6,omitempty"`
	F7            *TestAllTypes          `protobuf:"bytes,7,opt,name=f7" json:"f7,omitempty"`
	F8            *TestAllTypes          `protobuf:"bytes,8,opt,name=f8" json:"f8,omitempty"`
	F9            *TestAllTypes          `protobuf:"bytes,9,opt,name=f9" json:"f9,omitempty"`
	F10           *TestAllTypes          `protobuf:"bytes,10,opt,name=f10" json:"f10,omitempty"`
	F11           *TestAllTypes          `protobuf:"bytes,11,opt,name=f11" json:"f11,omitempty"`
	F12           *TestAllTypes          `protobuf:"bytes,12,opt,name=f12" json:"f12,omitempty"`
	F13           *TestAllTypes          `protobuf:"bytes,13,opt,name=f13" json:"f13,omitempty"`
	F14           *TestAllTypes          `protobuf:"bytes,14,opt,name=f14" json:"f14,omitempty"`
	F15           *TestAllTypes          `protobuf:"bytes,15,opt,name=f15" json:"f15,omitempty"`
	F16           *TestAllTypes          `protobuf:"bytes,16,opt,name=f16" json:"f16,omitempty"`
	F17           *TestAllTypes          `protobuf:"bytes,17,opt,name=f17" json:"f17,omitempty"`
	F18           *TestAllTypes          `protobuf:"bytes,18,opt,name=f18" json:"f18,omitempty"`
	F19           *TestAllTypes          `protobuf:"bytes,19,opt,name=f19" json:"f19,omitempty"`
	F20           *TestAllTypes          `protobuf:"bytes,20,opt,name=f20" json:"f20,omitempty"`
	F21           *TestAllTypes          `protobuf:"bytes,21,opt,name=f21" json:"f21,omitempty"`
	F22           *TestAllTypes          `protobuf:"bytes,22,opt,name=f22" json:"f22,omitempty"`
	F23           *TestAllTypes          `protobuf:"bytes,23,opt,name=f23" json:"f23,omitempty"`
	F24           *TestAllTypes          `protobuf:"bytes,24,opt,name=f24" json:"f24,omitempty"`
	F25           *TestAllTypes          `protobuf:"bytes,25,opt,name=f25" json:"f25,omitempty"`
	F26           *TestAllTypes          `protobuf:"bytes,26,opt,name=f26" json:"f26,omitempty"`
	F27           *TestAllTypes          `protobuf:"bytes,27,opt,name=f27" json:"f27,omitempty"`
	F28           *TestAllTypes          `protobuf:"bytes,28,opt,name=f28" json:"f28,omitempty"`
	F29           *TestAllTypes          `protobuf:"bytes,29,opt,name=f29" json:"f29,omitempty"`
	F30           *TestAllTypes          `protobuf:"bytes,30,opt,name=f30" json:"f30,omitempty"`
	F31           *TestAllTypes          `protobuf:"bytes,31,opt,name=f31" json:"f31,omitempty"`
	F32           *TestAllTypes          `protobuf:"bytes,32,opt,name=f32" json:"f32,omitempty"`
	F33           *TestAllTypes          `protobuf:"bytes,33,opt,name=f33" json:"f33,omitempty"`
	F34           *TestAllTypes          `protobuf:"bytes,34,opt,name=f34" json:"f34,omitempty"`
	F35           *TestAllTypes          `protobuf:"bytes,35,opt,name=f35" json:"f35,omitempty"`
	F36           *TestAllTypes          `protobuf:"bytes,36,opt,name=f36" json:"f36,omitempty"`
	F37           *TestAllTypes          `protobuf:"bytes,37,opt,name=f37" json:"f37,omitempty"`
	F38           *TestAllTypes          `protobuf:"bytes,38,opt,name=f38" json:"f38,omitempty"`
	F39           *TestAllTypes          `protobuf:"bytes,39,opt,name=f39" json:"f39,omitempty"`
	F40           *TestAllTypes          `protobuf:"bytes,40,opt,name=f40" json:"f40,omitempty"`
	F41           *TestAllTypes          `protobuf:"bytes,41,opt,name=f41" json:"f41,omitempty"`
	F42           *TestAllTypes          `protobuf:"bytes,42,opt,name=f42" json:"f42,omitempty"`
	F43           *TestAllTypes          `protobuf:"bytes,43,opt,name=f43" json:"f43,omitempty"`
	F44           *TestAllTypes          `protobuf:"bytes,44,opt,name=f44" json:"f44,omitempty"`
	F45           *TestAllTypes          `protobuf:"bytes,45,opt,name=f45" json:"f45,omitempty"`
	F46           *TestAllTypes          `protobuf:"bytes,46,opt,name=f46" json:"f46,omitempty"`
	F47           *TestAllTypes          `protobuf:"bytes,47,opt,name=f47" json:"f47,omitempty"`
	F48           *TestAllTypes          `protobuf:"bytes,48,opt,name=f48" json:"f48,omitempty"`
	F49           *TestAllTypes          `protobuf:"bytes,49,opt,name=f49" json:"f49,omitempty"`
	F50           *TestAllTypes          `protobuf:"bytes,50,opt,name=f50" json:"f50,omitempty"`
	F51           *TestAllTypes          `protobuf:"bytes,51,opt,name=f51" json:"f51,omitempty"`
	F52           *TestAllTypes          `protobuf:"bytes,52,opt,name=f52" json:"f52,omitempty"`
	F53           *TestAllTypes          `protobuf:"bytes,53,opt,name=f53" json:"f53,omitempty"`
	F54           *TestAllTypes          `protobuf:"bytes,54,opt,name=f54" json:"f54,omitempty"`
	F55           *TestAllTypes          `protobuf:"bytes,55,opt,name=f55" json:"f55,omitempty"`
	F56           *TestAllTypes          `protobuf:"bytes,56,opt,name=f56" json:"f56,omitempty"`
	F57           *TestAllTypes          `protobuf:"bytes,57,opt,name=f57" json:"f57,omitempty"`
	F58           *TestAllTypes          `protobuf:"bytes,58,opt,name=f58" json:"f58,omitempty"`
	F59           *TestAllTypes          `protobuf:"bytes,59,opt,name=f59" json:"f59,omitempty"`
	F60           *TestAllTypes          `protobuf:"bytes,60,opt,name=f60" json:"f60,omitempty"`
	F61           *TestAllTypes          `protobuf:"bytes,61,opt,name=f61" json:"f61,omitempty"`
	F62           *TestAllTypes          `protobuf:"bytes,62,opt,name=f62" json:"f62,omitempty"`
	F63           *TestAllTypes          `protobuf:"bytes,63,opt,name=f63" json:"f63,omitempty"`
	F64           *TestAllTypes          `protobuf:"bytes,64,opt,name=f64" json:"f64,omitempty"`
	F65           *TestAllTypes          `protobuf:"bytes,65,opt,name=f65" json:"f65,omitempty"`
	F66           *TestAllTypes          `protobuf:"bytes,66,opt,name=f66" json:"f66,omitempty"`
	F67           *TestAllTypes          `protobuf:"bytes,67,opt,name=f67" json:"f67,omitempty"`
	F68           *TestAllTypes          `protobuf:"bytes,68,opt,name=f68" json:"f68,omitempty"`
	F69           *TestAllTypes          `protobuf:"bytes,69,opt,name=f69" json:"f69,omitempty"`
	F70           *TestAllTypes          `protobuf:"bytes,70,opt,name=f70" json:"f70,omitempty"`
	F71           *TestAllTypes          `protobuf:"bytes,71,opt,name=f71" json:"f71,omitempty"`
	F72           *TestAllTypes          `protobuf:"bytes,72,opt,name=f72" json:"f72,omitempty"`
	F73           *TestAllTypes          `protobuf:"bytes,73,opt,name=f73" json:"f73,omitempty"`
	F74           *TestAllTypes          `protobuf:"bytes,74,opt,name=f74" json:"f74,omitempty"`
	F75           *TestAllTypes          `protobuf:"bytes,75,opt,name=f75" json:"f75,omitempty"`
	F76           *TestAllTypes          `protobuf:"bytes,76,opt,name=f76" json:"f76,omitempty"`
	F77           *TestAllTypes          `protobuf:"bytes,77,opt,name=f77" json:"f77,omitempty"`
	F78           *TestAllTypes          `protobuf:"bytes,78,opt,name=f78" json:"f78,omitempty"`
	F79           *TestAllTypes          `protobuf:"bytes,79,opt,name=f79" json:"f79,omitempty"`
	F80           *TestAllTypes          `protobuf:"bytes,80,opt,name=f80" json:"f80,omitempty"`
	F81           *TestAllTypes          `protobuf:"bytes,81,opt,name=f81" json:"f81,omitempty"`
	F82           *TestAllTypes          `protobuf:"bytes,82,opt,name=f82" json:"f82,omitempty"`
	F83           *TestAllTypes          `protobuf:"bytes,83,opt,name=f83" json:"f83,omitempty"`
	F84           *TestAllTypes          `protobuf:"bytes,84,opt,name=f84" json:"f84,omitempty"`
	F85           *TestAllTypes          `protobuf:"bytes,85,opt,name=f85" json:"f85,omitempty"`
	F86           *TestAllTypes          `protobuf:"bytes,86,opt,name=f86" json:"f86,omitempty"`
	F87           *TestAllTypes          `protobuf:"bytes,87,opt,name=f87" json:"f87,omitempty"`
	F88           *TestAllTypes          `protobuf:"bytes,88,opt,name=f88" json:"f88,omitempty"`
	F89           *TestAllTypes          `protobuf:"bytes,89,opt,name=f89" json:"f89,omitempty"`
	F90           *TestAllTypes          `protobuf:"bytes,90,opt,name=f90" json:"f90,omitempty"`
	F91           *TestAllTypes          `protobuf:"bytes,91,opt,name=f91" json:"f91,omitempty"`
	F92           *TestAllTypes          `protobuf:"bytes,92,opt,name=f92" json:"f92,omitempty"`
	F93           *TestAllTypes          `protobuf:"bytes,93,opt,name=f93" json:"f93,omitempty"`
	F94           *TestAllTypes          `protobuf:"bytes,94,opt,name=f94" json:"f94,omitempty"`
	F95           *TestAllTypes          `protobuf:"bytes,95,opt,name=f95" json:"f95,omitempty"`
	F96           *TestAllTypes          `protobuf:"bytes,96,opt,name=f96" json:"f96,omitempty"`
	F97           *TestAllTypes          `protobuf:"bytes,97,opt,name=f97" json:"f97,omitempty"`
	F98           *TestAllTypes          `protobuf:"bytes,98,opt,name=f98" json:"f98,omitempty"`
	F99           *TestAllTypes          `protobuf:"bytes,99,opt,name=f99" json:"f99,omitempty"`
	F100          *TestAllTypes          `protobuf:"bytes,100,opt,name=f100" json:"f100,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestManyMessageFieldsMessage) Reset() {
	*x = TestManyMessageFieldsMessage{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestManyMessageFieldsMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestManyMessageFieldsMessage) ProtoMessage() {}

func (x *TestManyMessageFieldsMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestManyMessageFieldsMessage.ProtoReflect.Descriptor instead.
func (*TestManyMessageFieldsMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{1}
}

func (x *TestManyMessageFieldsMessage) GetF1() *TestAllTypes {
	if x != nil {
		return x.F1
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF2() *TestAllTypes {
	if x != nil {
		return x.F2
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF3() *TestAllTypes {
	if x != nil {
		return x.F3
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF4() *TestAllTypes {
	if x != nil {
		return x.F4
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF5() *TestAllTypes {
	if x != nil {
		return x.F5
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF6() *TestAllTypes {
	if x != nil {
		return x.F6
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF7() *TestAllTypes {
	if x != nil {
		return x.F7
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF8() *TestAllTypes {
	if x != nil {
		return x.F8
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF9() *TestAllTypes {
	if x != nil {
		return x.F9
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF10() *TestAllTypes {
	if x != nil {
		return x.F10
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF11() *TestAllTypes {
	if x != nil {
		return x.F11
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF12() *TestAllTypes {
	if x != nil {
		return x.F12
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF13() *TestAllTypes {
	if x != nil {
		return x.F13
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF14() *TestAllTypes {
	if x != nil {
		return x.F14
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF15() *TestAllTypes {
	if x != nil {
		return x.F15
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF16() *TestAllTypes {
	if x != nil {
		return x.F16
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF17() *TestAllTypes {
	if x != nil {
		return x.F17
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF18() *TestAllTypes {
	if x != nil {
		return x.F18
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF19() *TestAllTypes {
	if x != nil {
		return x.F19
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF20() *TestAllTypes {
	if x != nil {
		return x.F20
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF21() *TestAllTypes {
	if x != nil {
		return x.F21
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF22() *TestAllTypes {
	if x != nil {
		return x.F22
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF23() *TestAllTypes {
	if x != nil {
		return x.F23
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF24() *TestAllTypes {
	if x != nil {
		return x.F24
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF25() *TestAllTypes {
	if x != nil {
		return x.F25
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF26() *TestAllTypes {
	if x != nil {
		return x.F26
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF27() *TestAllTypes {
	if x != nil {
		return x.F27
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF28() *TestAllTypes {
	if x != nil {
		return x.F28
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF29() *TestAllTypes {
	if x != nil {
		return x.F29
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF30() *TestAllTypes {
	if x != nil {
		return x.F30
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF31() *TestAllTypes {
	if x != nil {
		return x.F31
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF32() *TestAllTypes {
	if x != nil {
		return x.F32
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF33() *TestAllTypes {
	if x != nil {
		return x.F33
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF34() *TestAllTypes {
	if x != nil {
		return x.F34
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF35() *TestAllTypes {
	if x != nil {
		return x.F35
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF36() *TestAllTypes {
	if x != nil {
		return x.F36
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF37() *TestAllTypes {
	if x != nil {
		return x.F37
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF38() *TestAllTypes {
	if x != nil {
		return x.F38
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF39() *TestAllTypes {
	if x != nil {
		return x.F39
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF40() *TestAllTypes {
	if x != nil {
		return x.F40
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF41() *TestAllTypes {
	if x != nil {
		return x.F41
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF42() *TestAllTypes {
	if x != nil {
		return x.F42
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF43() *TestAllTypes {
	if x != nil {
		return x.F43
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF44() *TestAllTypes {
	if x != nil {
		return x.F44
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF45() *TestAllTypes {
	if x != nil {
		return x.F45
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF46() *TestAllTypes {
	if x != nil {
		return x.F46
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF47() *TestAllTypes {
	if x != nil {
		return x.F47
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF48() *TestAllTypes {
	if x != nil {
		return x.F48
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF49() *TestAllTypes {
	if x != nil {
		return x.F49
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF50() *TestAllTypes {
	if x != nil {
		return x.F50
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF51() *TestAllTypes {
	if x != nil {
		return x.F51
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF52() *TestAllTypes {
	if x != nil {
		return x.F52
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF53() *TestAllTypes {
	if x != nil {
		return x.F53
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF54() *TestAllTypes {
	if x != nil {
		return x.F54
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF55() *TestAllTypes {
	if x != nil {
		return x.F55
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF56() *TestAllTypes {
	if x != nil {
		return x.F56
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF57() *TestAllTypes {
	if x != nil {
		return x.F57
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF58() *TestAllTypes {
	if x != nil {
		return x.F58
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF59() *TestAllTypes {
	if x != nil {
		return x.F59
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF60() *TestAllTypes {
	if x != nil {
		return x.F60
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF61() *TestAllTypes {
	if x != nil {
		return x.F61
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF62() *TestAllTypes {
	if x != nil {
		return x.F62
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF63() *TestAllTypes {
	if x != nil {
		return x.F63
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF64() *TestAllTypes {
	if x != nil {
		return x.F64
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF65() *TestAllTypes {
	if x != nil {
		return x.F65
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF66() *TestAllTypes {
	if x != nil {
		return x.F66
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF67() *TestAllTypes {
	if x != nil {
		return x.F67
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF68() *TestAllTypes {
	if x != nil {
		return x.F68
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF69() *TestAllTypes {
	if x != nil {
		return x.F69
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF70() *TestAllTypes {
	if x != nil {
		return x.F70
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF71() *TestAllTypes {
	if x != nil {
		return x.F71
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF72() *TestAllTypes {
	if x != nil {
		return x.F72
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF73() *TestAllTypes {
	if x != nil {
		return x.F73
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF74() *TestAllTypes {
	if x != nil {
		return x.F74
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF75() *TestAllTypes {
	if x != nil {
		return x.F75
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF76() *TestAllTypes {
	if x != nil {
		return x.F76
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF77() *TestAllTypes {
	if x != nil {
		return x.F77
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF78() *TestAllTypes {
	if x != nil {
		return x.F78
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF79() *TestAllTypes {
	if x != nil {
		return x.F79
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF80() *TestAllTypes {
	if x != nil {
		return x.F80
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF81() *TestAllTypes {
	if x != nil {
		return x.F81
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF82() *TestAllTypes {
	if x != nil {
		return x.F82
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF83() *TestAllTypes {
	if x != nil {
		return x.F83
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF84() *TestAllTypes {
	if x != nil {
		return x.F84
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF85() *TestAllTypes {
	if x != nil {
		return x.F85
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF86() *TestAllTypes {
	if x != nil {
		return x.F86
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF87() *TestAllTypes {
	if x != nil {
		return x.F87
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF88() *TestAllTypes {
	if x != nil {
		return x.F88
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF89() *TestAllTypes {
	if x != nil {
		return x.F89
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF90() *TestAllTypes {
	if x != nil {
		return x.F90
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF91() *TestAllTypes {
	if x != nil {
		return x.F91
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF92() *TestAllTypes {
	if x != nil {
		return x.F92
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF93() *TestAllTypes {
	if x != nil {
		return x.F93
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF94() *TestAllTypes {
	if x != nil {
		return x.F94
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF95() *TestAllTypes {
	if x != nil {
		return x.F95
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF96() *TestAllTypes {
	if x != nil {
		return x.F96
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF97() *TestAllTypes {
	if x != nil {
		return x.F97
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF98() *TestAllTypes {
	if x != nil {
		return x.F98
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF99() *TestAllTypes {
	if x != nil {
		return x.F99
	}
	return nil
}

func (x *TestManyMessageFieldsMessage) GetF100() *TestAllTypes {
	if x != nil {
		return x.F100
	}
	return nil
}

// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
type TestDeprecatedMessage struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
	DeprecatedInt32 *int32 `protobuf:"varint,1,opt,name=deprecated_int32,json=deprecatedInt32" json:"deprecated_int32,omitempty"`
	// Types that are valid to be assigned to DeprecatedOneof:
	//
	//	*TestDeprecatedMessage_DeprecatedOneofField
	DeprecatedOneof isTestDeprecatedMessage_DeprecatedOneof `protobuf_oneof:"deprecated_oneof"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestDeprecatedMessage) Reset() {
	*x = TestDeprecatedMessage{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestDeprecatedMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestDeprecatedMessage) ProtoMessage() {}

func (x *TestDeprecatedMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestDeprecatedMessage.ProtoReflect.Descriptor instead.
func (*TestDeprecatedMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{2}
}

// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
func (x *TestDeprecatedMessage) GetDeprecatedInt32() int32 {
	if x != nil && x.DeprecatedInt32 != nil {
		return *x.DeprecatedInt32
	}
	return 0
}

func (x *TestDeprecatedMessage) GetDeprecatedOneof() isTestDeprecatedMessage_DeprecatedOneof {
	if x != nil {
		return x.DeprecatedOneof
	}
	return nil
}

// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
func (x *TestDeprecatedMessage) GetDeprecatedOneofField() int32 {
	if x != nil {
		if x, ok := x.DeprecatedOneof.(*TestDeprecatedMessage_DeprecatedOneofField); ok {
			return x.DeprecatedOneofField
		}
	}
	return 0
}

type isTestDeprecatedMessage_DeprecatedOneof interface {
	isTestDeprecatedMessage_DeprecatedOneof()
}

type TestDeprecatedMessage_DeprecatedOneofField struct {
	// Deprecated: Marked as deprecated in internal/testprotos/test/test.proto.
	DeprecatedOneofField int32 `protobuf:"varint,2,opt,name=deprecated_oneof_field,json=deprecatedOneofField,oneof"`
}

func (*TestDeprecatedMessage_DeprecatedOneofField) isTestDeprecatedMessage_DeprecatedOneof() {}

type TestOneofWithRequired struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to OneofField:
	//
	//	*TestOneofWithRequired_OneofUint32
	//	*TestOneofWithRequired_OneofRequired
	OneofField    isTestOneofWithRequired_OneofField `protobuf_oneof:"oneof_field"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestOneofWithRequired) Reset() {
	*x = TestOneofWithRequired{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestOneofWithRequired) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestOneofWithRequired) ProtoMessage() {}

func (x *TestOneofWithRequired) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestOneofWithRequired.ProtoReflect.Descriptor instead.
func (*TestOneofWithRequired) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{3}
}

func (x *TestOneofWithRequired) GetOneofField() isTestOneofWithRequired_OneofField {
	if x != nil {
		return x.OneofField
	}
	return nil
}

func (x *TestOneofWithRequired) GetOneofUint32() uint32 {
	if x != nil {
		if x, ok := x.OneofField.(*TestOneofWithRequired_OneofUint32); ok {
			return x.OneofUint32
		}
	}
	return 0
}

func (x *TestOneofWithRequired) GetOneofRequired() *required.Message {
	if x != nil {
		if x, ok := x.OneofField.(*TestOneofWithRequired_OneofRequired); ok {
			return x.OneofRequired
		}
	}
	return nil
}

type isTestOneofWithRequired_OneofField interface {
	isTestOneofWithRequired_OneofField()
}

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

type TestOneofWithRequired_OneofRequired struct {
	OneofRequired *required.Message `protobuf:"bytes,2,opt,name=oneof_required,json=oneofRequired,oneof"`
}

func (*TestOneofWithRequired_OneofUint32) isTestOneofWithRequired_OneofField() {}

func (*TestOneofWithRequired_OneofRequired) isTestOneofWithRequired_OneofField() {}

type ForeignMessage struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	C             *int32                 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
	D             *int32                 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ForeignMessage) Reset() {
	*x = ForeignMessage{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ForeignMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ForeignMessage) ProtoMessage() {}

func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ForeignMessage.ProtoReflect.Descriptor instead.
func (*ForeignMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{4}
}

func (x *ForeignMessage) GetC() int32 {
	if x != nil && x.C != nil {
		return *x.C
	}
	return 0
}

func (x *ForeignMessage) GetD() int32 {
	if x != nil && x.D != nil {
		return *x.D
	}
	return 0
}

type TestReservedFields struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestReservedFields) Reset() {
	*x = TestReservedFields{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestReservedFields) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestReservedFields) ProtoMessage() {}

func (x *TestReservedFields) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestReservedFields.ProtoReflect.Descriptor instead.
func (*TestReservedFields) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{5}
}

type TestAllExtensions struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	extensionFields protoimpl.ExtensionFields
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestAllExtensions) Reset() {
	*x = TestAllExtensions{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllExtensions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllExtensions) ProtoMessage() {}

func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllExtensions.ProtoReflect.Descriptor instead.
func (*TestAllExtensions) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{6}
}

type OptionalGroup struct {
	state                 protoimpl.MessageState           `protogen:"open.v1"`
	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *OptionalGroup) Reset() {
	*x = OptionalGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *OptionalGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OptionalGroup) ProtoMessage() {}

func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use OptionalGroup.ProtoReflect.Descriptor instead.
func (*OptionalGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{7}
}

func (x *OptionalGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *OptionalGroup) GetSameFieldNumber() int32 {
	if x != nil && x.SameFieldNumber != nil {
		return *x.SameFieldNumber
	}
	return 0
}

func (x *OptionalGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
	if x != nil {
		return x.OptionalNestedMessage
	}
	return nil
}

type RepeatedGroup struct {
	state                 protoimpl.MessageState           `protogen:"open.v1"`
	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *RepeatedGroup) Reset() {
	*x = RepeatedGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RepeatedGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RepeatedGroup) ProtoMessage() {}

func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RepeatedGroup.ProtoReflect.Descriptor instead.
func (*RepeatedGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{8}
}

func (x *RepeatedGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *RepeatedGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
	if x != nil {
		return x.OptionalNestedMessage
	}
	return nil
}

type TestNestedExtension struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestNestedExtension) Reset() {
	*x = TestNestedExtension{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestNestedExtension) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestNestedExtension) ProtoMessage() {}

func (x *TestNestedExtension) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestNestedExtension.ProtoReflect.Descriptor instead.
func (*TestNestedExtension) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{9}
}

type TestRequired struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequiredField *int32                 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestRequired) Reset() {
	*x = TestRequired{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequired) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequired) ProtoMessage() {}

func (x *TestRequired) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequired.ProtoReflect.Descriptor instead.
func (*TestRequired) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{10}
}

func (x *TestRequired) GetRequiredField() int32 {
	if x != nil && x.RequiredField != nil {
		return *x.RequiredField
	}
	return 0
}

type TestRequiredForeign struct {
	state           protoimpl.MessageState  `protogen:"open.v1"`
	OptionalMessage *TestRequired           `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
	RepeatedMessage []*TestRequired         `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
	MapMessage      map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Types that are valid to be assigned to OneofField:
	//
	//	*TestRequiredForeign_OneofMessage
	OneofField    isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestRequiredForeign) Reset() {
	*x = TestRequiredForeign{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequiredForeign) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequiredForeign) ProtoMessage() {}

func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequiredForeign.ProtoReflect.Descriptor instead.
func (*TestRequiredForeign) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{11}
}

func (x *TestRequiredForeign) GetOptionalMessage() *TestRequired {
	if x != nil {
		return x.OptionalMessage
	}
	return nil
}

func (x *TestRequiredForeign) GetRepeatedMessage() []*TestRequired {
	if x != nil {
		return x.RepeatedMessage
	}
	return nil
}

func (x *TestRequiredForeign) GetMapMessage() map[int32]*TestRequired {
	if x != nil {
		return x.MapMessage
	}
	return nil
}

func (x *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
	if x != nil {
		return x.OneofField
	}
	return nil
}

func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
	if x != nil {
		if x, ok := x.OneofField.(*TestRequiredForeign_OneofMessage); ok {
			return x.OneofMessage
		}
	}
	return nil
}

type isTestRequiredForeign_OneofField interface {
	isTestRequiredForeign_OneofField()
}

type TestRequiredForeign_OneofMessage struct {
	OneofMessage *TestRequired `protobuf:"bytes,4,opt,name=oneof_message,json=oneofMessage,oneof"`
}

func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}

type TestRequiredGroupFields struct {
	state         protoimpl.MessageState                   `protogen:"open.v1"`
	Optionalgroup *TestRequiredGroupFields_OptionalGroup   `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestRequiredGroupFields) Reset() {
	*x = TestRequiredGroupFields{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequiredGroupFields) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequiredGroupFields) ProtoMessage() {}

func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequiredGroupFields.ProtoReflect.Descriptor instead.
func (*TestRequiredGroupFields) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{12}
}

func (x *TestRequiredGroupFields) GetOptionalgroup() *TestRequiredGroupFields_OptionalGroup {
	if x != nil {
		return x.Optionalgroup
	}
	return nil
}

func (x *TestRequiredGroupFields) GetRepeatedgroup() []*TestRequiredGroupFields_RepeatedGroup {
	if x != nil {
		return x.Repeatedgroup
	}
	return nil
}

type TestRequiredLazy struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	OptionalLazyMessage *TestRequired          `protobuf:"bytes,1,opt,name=optional_lazy_message,json=optionalLazyMessage" json:"optional_lazy_message,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *TestRequiredLazy) Reset() {
	*x = TestRequiredLazy{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequiredLazy) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequiredLazy) ProtoMessage() {}

func (x *TestRequiredLazy) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequiredLazy.ProtoReflect.Descriptor instead.
func (*TestRequiredLazy) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{13}
}

func (x *TestRequiredLazy) GetOptionalLazyMessage() *TestRequired {
	if x != nil {
		return x.OptionalLazyMessage
	}
	return nil
}

type TestWeak struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Deprecated: Do not use. This will be deleted in the near future.
	XXX_weak_WeakMessage1 struct{} `protobuf:"bytes,1,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty"`
	// Deprecated: Do not use. This will be deleted in the near future.
	XXX_weak_WeakMessage2 struct{} `protobuf:"bytes,2,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty"`
	weakFields            protoimpl.WeakFields
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *TestWeak) Reset() {
	*x = TestWeak{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestWeak) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestWeak) ProtoMessage() {}

func (x *TestWeak) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestWeak.ProtoReflect.Descriptor instead.
func (*TestWeak) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
}

func (x *TestWeak) GetWeakMessage1() proto.Message {
	var w protoimpl.WeakFields
	if x != nil {
		w = x.weakFields
	}
	return protoimpl.X.GetWeak(w, 1, "goproto.proto.test.weak.WeakImportMessage1")
}

func (x *TestWeak) GetWeakMessage2() proto.Message {
	var w protoimpl.WeakFields
	if x != nil {
		w = x.weakFields
	}
	return protoimpl.X.GetWeak(w, 2, "goproto.proto.test.weak.WeakImportMessage2")
}

func (x *TestWeak) SetWeakMessage1(v proto.Message) {
	var w *protoimpl.WeakFields
	if x != nil {
		w = &x.weakFields
	}
	protoimpl.X.SetWeak(w, 1, "goproto.proto.test.weak.WeakImportMessage1", v)
}

func (x *TestWeak) SetWeakMessage2(v proto.Message) {
	var w *protoimpl.WeakFields
	if x != nil {
		w = &x.weakFields
	}
	protoimpl.X.SetWeak(w, 2, "goproto.proto.test.weak.WeakImportMessage2", v)
}

type TestPackedTypes struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	PackedInt32    []int32                `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
	PackedInt64    []int64                `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
	PackedUint32   []uint32               `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
	PackedUint64   []uint64               `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
	PackedSint32   []int32                `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
	PackedSint64   []int64                `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
	PackedFixed32  []uint32               `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
	PackedFixed64  []uint64               `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
	PackedSfixed32 []int32                `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
	PackedSfixed64 []int64                `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
	PackedFloat    []float32              `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
	PackedDouble   []float64              `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
	PackedBool     []bool                 `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
	PackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.test.ForeignEnum" json:"packed_enum,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *TestPackedTypes) Reset() {
	*x = TestPackedTypes{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestPackedTypes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestPackedTypes) ProtoMessage() {}

func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestPackedTypes.ProtoReflect.Descriptor instead.
func (*TestPackedTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
}

func (x *TestPackedTypes) GetPackedInt32() []int32 {
	if x != nil {
		return x.PackedInt32
	}
	return nil
}

func (x *TestPackedTypes) GetPackedInt64() []int64 {
	if x != nil {
		return x.PackedInt64
	}
	return nil
}

func (x *TestPackedTypes) GetPackedUint32() []uint32 {
	if x != nil {
		return x.PackedUint32
	}
	return nil
}

func (x *TestPackedTypes) GetPackedUint64() []uint64 {
	if x != nil {
		return x.PackedUint64
	}
	return nil
}

func (x *TestPackedTypes) GetPackedSint32() []int32 {
	if x != nil {
		return x.PackedSint32
	}
	return nil
}

func (x *TestPackedTypes) GetPackedSint64() []int64 {
	if x != nil {
		return x.PackedSint64
	}
	return nil
}

func (x *TestPackedTypes) GetPackedFixed32() []uint32 {
	if x != nil {
		return x.PackedFixed32
	}
	return nil
}

func (x *TestPackedTypes) GetPackedFixed64() []uint64 {
	if x != nil {
		return x.PackedFixed64
	}
	return nil
}

func (x *TestPackedTypes) GetPackedSfixed32() []int32 {
	if x != nil {
		return x.PackedSfixed32
	}
	return nil
}

func (x *TestPackedTypes) GetPackedSfixed64() []int64 {
	if x != nil {
		return x.PackedSfixed64
	}
	return nil
}

func (x *TestPackedTypes) GetPackedFloat() []float32 {
	if x != nil {
		return x.PackedFloat
	}
	return nil
}

func (x *TestPackedTypes) GetPackedDouble() []float64 {
	if x != nil {
		return x.PackedDouble
	}
	return nil
}

func (x *TestPackedTypes) GetPackedBool() []bool {
	if x != nil {
		return x.PackedBool
	}
	return nil
}

func (x *TestPackedTypes) GetPackedEnum() []ForeignEnum {
	if x != nil {
		return x.PackedEnum
	}
	return nil
}

type TestUnpackedTypes struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	UnpackedInt32    []int32                `protobuf:"varint,90,rep,name=unpacked_int32,json=unpackedInt32" json:"unpacked_int32,omitempty"`
	UnpackedInt64    []int64                `protobuf:"varint,91,rep,name=unpacked_int64,json=unpackedInt64" json:"unpacked_int64,omitempty"`
	UnpackedUint32   []uint32               `protobuf:"varint,92,rep,name=unpacked_uint32,json=unpackedUint32" json:"unpacked_uint32,omitempty"`
	UnpackedUint64   []uint64               `protobuf:"varint,93,rep,name=unpacked_uint64,json=unpackedUint64" json:"unpacked_uint64,omitempty"`
	UnpackedSint32   []int32                `protobuf:"zigzag32,94,rep,name=unpacked_sint32,json=unpackedSint32" json:"unpacked_sint32,omitempty"`
	UnpackedSint64   []int64                `protobuf:"zigzag64,95,rep,name=unpacked_sint64,json=unpackedSint64" json:"unpacked_sint64,omitempty"`
	UnpackedFixed32  []uint32               `protobuf:"fixed32,96,rep,name=unpacked_fixed32,json=unpackedFixed32" json:"unpacked_fixed32,omitempty"`
	UnpackedFixed64  []uint64               `protobuf:"fixed64,97,rep,name=unpacked_fixed64,json=unpackedFixed64" json:"unpacked_fixed64,omitempty"`
	UnpackedSfixed32 []int32                `protobuf:"fixed32,98,rep,name=unpacked_sfixed32,json=unpackedSfixed32" json:"unpacked_sfixed32,omitempty"`
	UnpackedSfixed64 []int64                `protobuf:"fixed64,99,rep,name=unpacked_sfixed64,json=unpackedSfixed64" json:"unpacked_sfixed64,omitempty"`
	UnpackedFloat    []float32              `protobuf:"fixed32,100,rep,name=unpacked_float,json=unpackedFloat" json:"unpacked_float,omitempty"`
	UnpackedDouble   []float64              `protobuf:"fixed64,101,rep,name=unpacked_double,json=unpackedDouble" json:"unpacked_double,omitempty"`
	UnpackedBool     []bool                 `protobuf:"varint,102,rep,name=unpacked_bool,json=unpackedBool" json:"unpacked_bool,omitempty"`
	UnpackedEnum     []ForeignEnum          `protobuf:"varint,103,rep,name=unpacked_enum,json=unpackedEnum,enum=goproto.proto.test.ForeignEnum" json:"unpacked_enum,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *TestUnpackedTypes) Reset() {
	*x = TestUnpackedTypes{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestUnpackedTypes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestUnpackedTypes) ProtoMessage() {}

func (x *TestUnpackedTypes) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestUnpackedTypes.ProtoReflect.Descriptor instead.
func (*TestUnpackedTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{16}
}

func (x *TestUnpackedTypes) GetUnpackedInt32() []int32 {
	if x != nil {
		return x.UnpackedInt32
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedInt64() []int64 {
	if x != nil {
		return x.UnpackedInt64
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedUint32() []uint32 {
	if x != nil {
		return x.UnpackedUint32
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedUint64() []uint64 {
	if x != nil {
		return x.UnpackedUint64
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedSint32() []int32 {
	if x != nil {
		return x.UnpackedSint32
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedSint64() []int64 {
	if x != nil {
		return x.UnpackedSint64
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedFixed32() []uint32 {
	if x != nil {
		return x.UnpackedFixed32
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedFixed64() []uint64 {
	if x != nil {
		return x.UnpackedFixed64
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedSfixed32() []int32 {
	if x != nil {
		return x.UnpackedSfixed32
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedSfixed64() []int64 {
	if x != nil {
		return x.UnpackedSfixed64
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedFloat() []float32 {
	if x != nil {
		return x.UnpackedFloat
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedDouble() []float64 {
	if x != nil {
		return x.UnpackedDouble
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedBool() []bool {
	if x != nil {
		return x.UnpackedBool
	}
	return nil
}

func (x *TestUnpackedTypes) GetUnpackedEnum() []ForeignEnum {
	if x != nil {
		return x.UnpackedEnum
	}
	return nil
}

type TestPackedExtensions struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	extensionFields protoimpl.ExtensionFields
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestPackedExtensions) Reset() {
	*x = TestPackedExtensions{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestPackedExtensions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestPackedExtensions) ProtoMessage() {}

func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestPackedExtensions.ProtoReflect.Descriptor instead.
func (*TestPackedExtensions) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{17}
}

type TestUnpackedExtensions struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	extensionFields protoimpl.ExtensionFields
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestUnpackedExtensions) Reset() {
	*x = TestUnpackedExtensions{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestUnpackedExtensions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestUnpackedExtensions) ProtoMessage() {}

func (x *TestUnpackedExtensions) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestUnpackedExtensions.ProtoReflect.Descriptor instead.
func (*TestUnpackedExtensions) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{18}
}

// Test that RPC services work.
type FooRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FooRequest) Reset() {
	*x = FooRequest{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FooRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FooRequest) ProtoMessage() {}

func (x *FooRequest) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FooRequest.ProtoReflect.Descriptor instead.
func (*FooRequest) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{19}
}

type FooResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FooResponse) Reset() {
	*x = FooResponse{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FooResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FooResponse) ProtoMessage() {}

func (x *FooResponse) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FooResponse.ProtoReflect.Descriptor instead.
func (*FooResponse) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{20}
}

type WeirdDefault struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WeirdDefault  []byte                 `protobuf:"bytes,1,opt,name=weird_default,json=weirdDefault,def=hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef\x60" json:"weird_default,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for WeirdDefault fields.
var (
	Default_WeirdDefault_WeirdDefault = []byte("hello, \"world!\"\ndeadޭ\xbe\xefbeef`")
)

func (x *WeirdDefault) Reset() {
	*x = WeirdDefault{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WeirdDefault) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WeirdDefault) ProtoMessage() {}

func (x *WeirdDefault) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WeirdDefault.ProtoReflect.Descriptor instead.
func (*WeirdDefault) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{21}
}

func (x *WeirdDefault) GetWeirdDefault() []byte {
	if x != nil && x.WeirdDefault != nil {
		return x.WeirdDefault
	}
	return append([]byte(nil), Default_WeirdDefault_WeirdDefault...)
}

type RemoteDefault struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Default       *enums.Enum            `protobuf:"varint,1,opt,name=default,enum=goproto.proto.enums.Enum" json:"default,omitempty"`
	Zero          *enums.Enum            `protobuf:"varint,2,opt,name=zero,enum=goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
	One           *enums.Enum            `protobuf:"varint,3,opt,name=one,enum=goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
	Elevent       *enums.Enum            `protobuf:"varint,4,opt,name=elevent,enum=goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
	Seventeen     *enums.Enum            `protobuf:"varint,5,opt,name=seventeen,enum=goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
	Thirtyseven   *enums.Enum            `protobuf:"varint,6,opt,name=thirtyseven,enum=goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
	Sixtyseven    *enums.Enum            `protobuf:"varint,7,opt,name=sixtyseven,enum=goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
	Negative      *enums.Enum            `protobuf:"varint,8,opt,name=negative,enum=goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for RemoteDefault fields.
const (
	Default_RemoteDefault_Zero        = enums.Enum(0)  // enums.Enum_ZERO
	Default_RemoteDefault_One         = enums.Enum(1)  // enums.Enum_ONE
	Default_RemoteDefault_Elevent     = enums.Enum(11) // enums.Enum_ELEVENT
	Default_RemoteDefault_Seventeen   = enums.Enum(17) // enums.Enum_SEVENTEEN
	Default_RemoteDefault_Thirtyseven = enums.Enum(37) // enums.Enum_THIRTYSEVEN
	Default_RemoteDefault_Sixtyseven  = enums.Enum(67) // enums.Enum_SIXTYSEVEN
	Default_RemoteDefault_Negative    = enums.Enum(-1) // enums.Enum_NEGATIVE
)

func (x *RemoteDefault) Reset() {
	*x = RemoteDefault{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoteDefault) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoteDefault) ProtoMessage() {}

func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoteDefault.ProtoReflect.Descriptor instead.
func (*RemoteDefault) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{22}
}

func (x *RemoteDefault) GetDefault() enums.Enum {
	if x != nil && x.Default != nil {
		return *x.Default
	}
	return enums.Enum(1337)
}

func (x *RemoteDefault) GetZero() enums.Enum {
	if x != nil && x.Zero != nil {
		return *x.Zero
	}
	return Default_RemoteDefault_Zero
}

func (x *RemoteDefault) GetOne() enums.Enum {
	if x != nil && x.One != nil {
		return *x.One
	}
	return Default_RemoteDefault_One
}

func (x *RemoteDefault) GetElevent() enums.Enum {
	if x != nil && x.Elevent != nil {
		return *x.Elevent
	}
	return Default_RemoteDefault_Elevent
}

func (x *RemoteDefault) GetSeventeen() enums.Enum {
	if x != nil && x.Seventeen != nil {
		return *x.Seventeen
	}
	return Default_RemoteDefault_Seventeen
}

func (x *RemoteDefault) GetThirtyseven() enums.Enum {
	if x != nil && x.Thirtyseven != nil {
		return *x.Thirtyseven
	}
	return Default_RemoteDefault_Thirtyseven
}

func (x *RemoteDefault) GetSixtyseven() enums.Enum {
	if x != nil && x.Sixtyseven != nil {
		return *x.Sixtyseven
	}
	return Default_RemoteDefault_Sixtyseven
}

func (x *RemoteDefault) GetNegative() enums.Enum {
	if x != nil && x.Negative != nil {
		return *x.Negative
	}
	return Default_RemoteDefault_Negative
}

type TestAllTypes_NestedMessage struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestAllTypes_NestedMessage) Reset() {
	*x = TestAllTypes_NestedMessage{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllTypes_NestedMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllTypes_NestedMessage) ProtoMessage() {}

func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Descriptor instead.
func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 0}
}

func (x *TestAllTypes_NestedMessage) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
	if x != nil {
		return x.Corecursive
	}
	return nil
}

type TestAllTypes_OptionalGroup struct {
	state                 protoimpl.MessageState      `protogen:"open.v1"`
	A                     *int32                      `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	SameFieldNumber       *int32                      `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *TestAllTypes_OptionalGroup) Reset() {
	*x = TestAllTypes_OptionalGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllTypes_OptionalGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllTypes_OptionalGroup) ProtoMessage() {}

func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllTypes_OptionalGroup.ProtoReflect.Descriptor instead.
func (*TestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 1}
}

func (x *TestAllTypes_OptionalGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *TestAllTypes_OptionalGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
	if x != nil {
		return x.OptionalNestedMessage
	}
	return nil
}

func (x *TestAllTypes_OptionalGroup) GetSameFieldNumber() int32 {
	if x != nil && x.SameFieldNumber != nil {
		return *x.SameFieldNumber
	}
	return 0
}

type TestAllTypes_RepeatedGroup struct {
	state                 protoimpl.MessageState      `protogen:"open.v1"`
	A                     *int32                      `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *TestAllTypes_RepeatedGroup) Reset() {
	*x = TestAllTypes_RepeatedGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllTypes_RepeatedGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}

func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllTypes_RepeatedGroup.ProtoReflect.Descriptor instead.
func (*TestAllTypes_RepeatedGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 2}
}

func (x *TestAllTypes_RepeatedGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *TestAllTypes_RepeatedGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
	if x != nil {
		return x.OptionalNestedMessage
	}
	return nil
}

type TestAllTypes_OneofGroup struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
	B             *int32                 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestAllTypes_OneofGroup) Reset() {
	*x = TestAllTypes_OneofGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllTypes_OneofGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllTypes_OneofGroup) ProtoMessage() {}

func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllTypes_OneofGroup.ProtoReflect.Descriptor instead.
func (*TestAllTypes_OneofGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 20}
}

func (x *TestAllTypes_OneofGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *TestAllTypes_OneofGroup) GetB() int32 {
	if x != nil && x.B != nil {
		return *x.B
	}
	return 0
}

type TestAllExtensions_NestedMessage struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
	Corecursive   *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestAllExtensions_NestedMessage) Reset() {
	*x = TestAllExtensions_NestedMessage{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllExtensions_NestedMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllExtensions_NestedMessage) ProtoMessage() {}

func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestAllExtensions_NestedMessage.ProtoReflect.Descriptor instead.
func (*TestAllExtensions_NestedMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{6, 0}
}

func (x *TestAllExtensions_NestedMessage) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

func (x *TestAllExtensions_NestedMessage) GetCorecursive() *TestAllExtensions {
	if x != nil {
		return x.Corecursive
	}
	return nil
}

type TestRequiredGroupFields_OptionalGroup struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
	*x = TestRequiredGroupFields_OptionalGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequiredGroupFields_OptionalGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}

func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequiredGroupFields_OptionalGroup.ProtoReflect.Descriptor instead.
func (*TestRequiredGroupFields_OptionalGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{12, 0}
}

func (x *TestRequiredGroupFields_OptionalGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

type TestRequiredGroupFields_RepeatedGroup struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	A             *int32                 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
	*x = TestRequiredGroupFields_RepeatedGroup{}
	mi := &file_internal_testprotos_test_test_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestRequiredGroupFields_RepeatedGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}

func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_test_test_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRequiredGroupFields_RepeatedGroup.ProtoReflect.Descriptor instead.
func (*TestRequiredGroupFields_RepeatedGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{12, 1}
}

func (x *TestRequiredGroupFields_RepeatedGroup) GetA() int32 {
	if x != nil && x.A != nil {
		return *x.A
	}
	return 0
}

var file_internal_testprotos_test_test_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         1,
		Name:          "goproto.proto.test.optional_int32",
		Tag:           "varint,1,opt,name=optional_int32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         2,
		Name:          "goproto.proto.test.optional_int64",
		Tag:           "varint,2,opt,name=optional_int64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         3,
		Name:          "goproto.proto.test.optional_uint32",
		Tag:           "varint,3,opt,name=optional_uint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         4,
		Name:          "goproto.proto.test.optional_uint64",
		Tag:           "varint,4,opt,name=optional_uint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         5,
		Name:          "goproto.proto.test.optional_sint32",
		Tag:           "zigzag32,5,opt,name=optional_sint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         6,
		Name:          "goproto.proto.test.optional_sint64",
		Tag:           "zigzag64,6,opt,name=optional_sint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         7,
		Name:          "goproto.proto.test.optional_fixed32",
		Tag:           "fixed32,7,opt,name=optional_fixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         8,
		Name:          "goproto.proto.test.optional_fixed64",
		Tag:           "fixed64,8,opt,name=optional_fixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         9,
		Name:          "goproto.proto.test.optional_sfixed32",
		Tag:           "fixed32,9,opt,name=optional_sfixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         10,
		Name:          "goproto.proto.test.optional_sfixed64",
		Tag:           "fixed64,10,opt,name=optional_sfixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         11,
		Name:          "goproto.proto.test.optional_float",
		Tag:           "fixed32,11,opt,name=optional_float",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         12,
		Name:          "goproto.proto.test.optional_double",
		Tag:           "fixed64,12,opt,name=optional_double",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         13,
		Name:          "goproto.proto.test.optional_bool",
		Tag:           "varint,13,opt,name=optional_bool",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         14,
		Name:          "goproto.proto.test.optional_string",
		Tag:           "bytes,14,opt,name=optional_string",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         15,
		Name:          "goproto.proto.test.optional_bytes",
		Tag:           "bytes,15,opt,name=optional_bytes",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*OptionalGroup)(nil),
		Field:         16,
		Name:          "goproto.proto.test.optionalgroup",
		Tag:           "group,16,opt,name=OptionalGroup",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
		Field:         18,
		Name:          "goproto.proto.test.optional_nested_message",
		Tag:           "bytes,18,opt,name=optional_nested_message",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
		Field:         21,
		Name:          "goproto.proto.test.optional_nested_enum",
		Tag:           "varint,21,opt,name=optional_nested_enum,enum=goproto.proto.test.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         31,
		Name:          "goproto.proto.test.repeated_int32",
		Tag:           "varint,31,rep,name=repeated_int32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         32,
		Name:          "goproto.proto.test.repeated_int64",
		Tag:           "varint,32,rep,name=repeated_int64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         33,
		Name:          "goproto.proto.test.repeated_uint32",
		Tag:           "varint,33,rep,name=repeated_uint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         34,
		Name:          "goproto.proto.test.repeated_uint64",
		Tag:           "varint,34,rep,name=repeated_uint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         35,
		Name:          "goproto.proto.test.repeated_sint32",
		Tag:           "zigzag32,35,rep,name=repeated_sint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         36,
		Name:          "goproto.proto.test.repeated_sint64",
		Tag:           "zigzag64,36,rep,name=repeated_sint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         37,
		Name:          "goproto.proto.test.repeated_fixed32",
		Tag:           "fixed32,37,rep,name=repeated_fixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         38,
		Name:          "goproto.proto.test.repeated_fixed64",
		Tag:           "fixed64,38,rep,name=repeated_fixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         39,
		Name:          "goproto.proto.test.repeated_sfixed32",
		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         40,
		Name:          "goproto.proto.test.repeated_sfixed64",
		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         41,
		Name:          "goproto.proto.test.repeated_float",
		Tag:           "fixed32,41,rep,name=repeated_float",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         42,
		Name:          "goproto.proto.test.repeated_double",
		Tag:           "fixed64,42,rep,name=repeated_double",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         43,
		Name:          "goproto.proto.test.repeated_bool",
		Tag:           "varint,43,rep,name=repeated_bool",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]string)(nil),
		Field:         44,
		Name:          "goproto.proto.test.repeated_string",
		Tag:           "bytes,44,rep,name=repeated_string",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([][]byte)(nil),
		Field:         45,
		Name:          "goproto.proto.test.repeated_bytes",
		Tag:           "bytes,45,rep,name=repeated_bytes",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*RepeatedGroup)(nil),
		Field:         46,
		Name:          "goproto.proto.test.repeatedgroup",
		Tag:           "group,46,rep,name=RepeatedGroup",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
		Field:         48,
		Name:          "goproto.proto.test.repeated_nested_message",
		Tag:           "bytes,48,rep,name=repeated_nested_message",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
		Field:         51,
		Name:          "goproto.proto.test.repeated_nested_enum",
		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=goproto.proto.test.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         81,
		Name:          "goproto.proto.test.default_int32",
		Tag:           "varint,81,opt,name=default_int32,def=81",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         82,
		Name:          "goproto.proto.test.default_int64",
		Tag:           "varint,82,opt,name=default_int64,def=82",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         83,
		Name:          "goproto.proto.test.default_uint32",
		Tag:           "varint,83,opt,name=default_uint32,def=83",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         84,
		Name:          "goproto.proto.test.default_uint64",
		Tag:           "varint,84,opt,name=default_uint64,def=84",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         85,
		Name:          "goproto.proto.test.default_sint32",
		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         86,
		Name:          "goproto.proto.test.default_sint64",
		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         87,
		Name:          "goproto.proto.test.default_fixed32",
		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         88,
		Name:          "goproto.proto.test.default_fixed64",
		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         89,
		Name:          "goproto.proto.test.default_sfixed32",
		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         80,
		Name:          "goproto.proto.test.default_sfixed64",
		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         91,
		Name:          "goproto.proto.test.default_float",
		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         92,
		Name:          "goproto.proto.test.default_double",
		Tag:           "fixed64,92,opt,name=default_double,def=92000",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         93,
		Name:          "goproto.proto.test.default_bool",
		Tag:           "varint,93,opt,name=default_bool,def=1",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         94,
		Name:          "goproto.proto.test.default_string",
		Tag:           "bytes,94,opt,name=default_string,def=hello",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         95,
		Name:          "goproto.proto.test.default_bytes",
		Tag:           "bytes,95,opt,name=default_bytes,def=world",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         90,
		Name:          "goproto.proto.test.packed_int32",
		Tag:           "varint,90,rep,packed,name=packed_int32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         91,
		Name:          "goproto.proto.test.packed_int64",
		Tag:           "varint,91,rep,packed,name=packed_int64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         92,
		Name:          "goproto.proto.test.packed_uint32",
		Tag:           "varint,92,rep,packed,name=packed_uint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         93,
		Name:          "goproto.proto.test.packed_uint64",
		Tag:           "varint,93,rep,packed,name=packed_uint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         94,
		Name:          "goproto.proto.test.packed_sint32",
		Tag:           "zigzag32,94,rep,packed,name=packed_sint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         95,
		Name:          "goproto.proto.test.packed_sint64",
		Tag:           "zigzag64,95,rep,packed,name=packed_sint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         96,
		Name:          "goproto.proto.test.packed_fixed32",
		Tag:           "fixed32,96,rep,packed,name=packed_fixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         97,
		Name:          "goproto.proto.test.packed_fixed64",
		Tag:           "fixed64,97,rep,packed,name=packed_fixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         98,
		Name:          "goproto.proto.test.packed_sfixed32",
		Tag:           "fixed32,98,rep,packed,name=packed_sfixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         99,
		Name:          "goproto.proto.test.packed_sfixed64",
		Tag:           "fixed64,99,rep,packed,name=packed_sfixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         100,
		Name:          "goproto.proto.test.packed_float",
		Tag:           "fixed32,100,rep,packed,name=packed_float",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         101,
		Name:          "goproto.proto.test.packed_double",
		Tag:           "fixed64,101,rep,packed,name=packed_double",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         102,
		Name:          "goproto.proto.test.packed_bool",
		Tag:           "varint,102,rep,packed,name=packed_bool",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]ForeignEnum)(nil),
		Field:         103,
		Name:          "goproto.proto.test.packed_enum",
		Tag:           "varint,103,rep,packed,name=packed_enum,enum=goproto.proto.test.ForeignEnum",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         90,
		Name:          "goproto.proto.test.unpacked_int32",
		Tag:           "varint,90,rep,name=unpacked_int32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         91,
		Name:          "goproto.proto.test.unpacked_int64",
		Tag:           "varint,91,rep,name=unpacked_int64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         92,
		Name:          "goproto.proto.test.unpacked_uint32",
		Tag:           "varint,92,rep,name=unpacked_uint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         93,
		Name:          "goproto.proto.test.unpacked_uint64",
		Tag:           "varint,93,rep,name=unpacked_uint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         94,
		Name:          "goproto.proto.test.unpacked_sint32",
		Tag:           "zigzag32,94,rep,name=unpacked_sint32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         95,
		Name:          "goproto.proto.test.unpacked_sint64",
		Tag:           "zigzag64,95,rep,name=unpacked_sint64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         96,
		Name:          "goproto.proto.test.unpacked_fixed32",
		Tag:           "fixed32,96,rep,name=unpacked_fixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         97,
		Name:          "goproto.proto.test.unpacked_fixed64",
		Tag:           "fixed64,97,rep,name=unpacked_fixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         98,
		Name:          "goproto.proto.test.unpacked_sfixed32",
		Tag:           "fixed32,98,rep,name=unpacked_sfixed32",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         99,
		Name:          "goproto.proto.test.unpacked_sfixed64",
		Tag:           "fixed64,99,rep,name=unpacked_sfixed64",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         100,
		Name:          "goproto.proto.test.unpacked_float",
		Tag:           "fixed32,100,rep,name=unpacked_float",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         101,
		Name:          "goproto.proto.test.unpacked_double",
		Tag:           "fixed64,101,rep,name=unpacked_double",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         102,
		Name:          "goproto.proto.test.unpacked_bool",
		Tag:           "varint,102,rep,name=unpacked_bool",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestUnpackedExtensions)(nil),
		ExtensionType: ([]ForeignEnum)(nil),
		Field:         103,
		Name:          "goproto.proto.test.unpacked_enum",
		Tag:           "varint,103,rep,name=unpacked_enum,enum=goproto.proto.test.ForeignEnum",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         1003,
		Name:          "goproto.proto.test.TestNestedExtension.nested_string_extension",
		Tag:           "bytes,1003,opt,name=nested_string_extension",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestRequired)(nil),
		Field:         1000,
		Name:          "goproto.proto.test.TestRequired.single",
		Tag:           "bytes,1000,opt,name=single",
		Filename:      "internal/testprotos/test/test.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestRequired)(nil),
		Field:         1001,
		Name:          "goproto.proto.test.TestRequired.multi",
		Tag:           "bytes,1001,rep,name=multi",
		Filename:      "internal/testprotos/test/test.proto",
	},
}

// Extension fields to TestAllExtensions.
var (
	// optional int32 optional_int32 = 1;
	E_OptionalInt32 = &file_internal_testprotos_test_test_proto_extTypes[0]
	// optional int64 optional_int64 = 2;
	E_OptionalInt64 = &file_internal_testprotos_test_test_proto_extTypes[1]
	// optional uint32 optional_uint32 = 3;
	E_OptionalUint32 = &file_internal_testprotos_test_test_proto_extTypes[2]
	// optional uint64 optional_uint64 = 4;
	E_OptionalUint64 = &file_internal_testprotos_test_test_proto_extTypes[3]
	// optional sint32 optional_sint32 = 5;
	E_OptionalSint32 = &file_internal_testprotos_test_test_proto_extTypes[4]
	// optional sint64 optional_sint64 = 6;
	E_OptionalSint64 = &file_internal_testprotos_test_test_proto_extTypes[5]
	// optional fixed32 optional_fixed32 = 7;
	E_OptionalFixed32 = &file_internal_testprotos_test_test_proto_extTypes[6]
	// optional fixed64 optional_fixed64 = 8;
	E_OptionalFixed64 = &file_internal_testprotos_test_test_proto_extTypes[7]
	// optional sfixed32 optional_sfixed32 = 9;
	E_OptionalSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[8]
	// optional sfixed64 optional_sfixed64 = 10;
	E_OptionalSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[9]
	// optional float optional_float = 11;
	E_OptionalFloat = &file_internal_testprotos_test_test_proto_extTypes[10]
	// optional double optional_double = 12;
	E_OptionalDouble = &file_internal_testprotos_test_test_proto_extTypes[11]
	// optional bool optional_bool = 13;
	E_OptionalBool = &file_internal_testprotos_test_test_proto_extTypes[12]
	// optional string optional_string = 14;
	E_OptionalString = &file_internal_testprotos_test_test_proto_extTypes[13]
	// optional bytes optional_bytes = 15;
	E_OptionalBytes = &file_internal_testprotos_test_test_proto_extTypes[14]
	// optional goproto.proto.test.OptionalGroup optionalgroup = 16;
	E_Optionalgroup = &file_internal_testprotos_test_test_proto_extTypes[15]
	// optional goproto.proto.test.TestAllExtensions.NestedMessage optional_nested_message = 18;
	E_OptionalNestedMessage = &file_internal_testprotos_test_test_proto_extTypes[16]
	// optional goproto.proto.test.TestAllTypes.NestedEnum optional_nested_enum = 21;
	E_OptionalNestedEnum = &file_internal_testprotos_test_test_proto_extTypes[17]
	// repeated int32 repeated_int32 = 31;
	E_RepeatedInt32 = &file_internal_testprotos_test_test_proto_extTypes[18]
	// repeated int64 repeated_int64 = 32;
	E_RepeatedInt64 = &file_internal_testprotos_test_test_proto_extTypes[19]
	// repeated uint32 repeated_uint32 = 33;
	E_RepeatedUint32 = &file_internal_testprotos_test_test_proto_extTypes[20]
	// repeated uint64 repeated_uint64 = 34;
	E_RepeatedUint64 = &file_internal_testprotos_test_test_proto_extTypes[21]
	// repeated sint32 repeated_sint32 = 35;
	E_RepeatedSint32 = &file_internal_testprotos_test_test_proto_extTypes[22]
	// repeated sint64 repeated_sint64 = 36;
	E_RepeatedSint64 = &file_internal_testprotos_test_test_proto_extTypes[23]
	// repeated fixed32 repeated_fixed32 = 37;
	E_RepeatedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[24]
	// repeated fixed64 repeated_fixed64 = 38;
	E_RepeatedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[25]
	// repeated sfixed32 repeated_sfixed32 = 39;
	E_RepeatedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[26]
	// repeated sfixed64 repeated_sfixed64 = 40;
	E_RepeatedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[27]
	// repeated float repeated_float = 41;
	E_RepeatedFloat = &file_internal_testprotos_test_test_proto_extTypes[28]
	// repeated double repeated_double = 42;
	E_RepeatedDouble = &file_internal_testprotos_test_test_proto_extTypes[29]
	// repeated bool repeated_bool = 43;
	E_RepeatedBool = &file_internal_testprotos_test_test_proto_extTypes[30]
	// repeated string repeated_string = 44;
	E_RepeatedString = &file_internal_testprotos_test_test_proto_extTypes[31]
	// repeated bytes repeated_bytes = 45;
	E_RepeatedBytes = &file_internal_testprotos_test_test_proto_extTypes[32]
	// repeated goproto.proto.test.RepeatedGroup repeatedgroup = 46;
	E_Repeatedgroup = &file_internal_testprotos_test_test_proto_extTypes[33]
	// repeated goproto.proto.test.TestAllExtensions.NestedMessage repeated_nested_message = 48;
	E_RepeatedNestedMessage = &file_internal_testprotos_test_test_proto_extTypes[34]
	// repeated goproto.proto.test.TestAllTypes.NestedEnum repeated_nested_enum = 51;
	E_RepeatedNestedEnum = &file_internal_testprotos_test_test_proto_extTypes[35]
	// optional int32 default_int32 = 81;
	E_DefaultInt32 = &file_internal_testprotos_test_test_proto_extTypes[36]
	// optional int64 default_int64 = 82;
	E_DefaultInt64 = &file_internal_testprotos_test_test_proto_extTypes[37]
	// optional uint32 default_uint32 = 83;
	E_DefaultUint32 = &file_internal_testprotos_test_test_proto_extTypes[38]
	// optional uint64 default_uint64 = 84;
	E_DefaultUint64 = &file_internal_testprotos_test_test_proto_extTypes[39]
	// optional sint32 default_sint32 = 85;
	E_DefaultSint32 = &file_internal_testprotos_test_test_proto_extTypes[40]
	// optional sint64 default_sint64 = 86;
	E_DefaultSint64 = &file_internal_testprotos_test_test_proto_extTypes[41]
	// optional fixed32 default_fixed32 = 87;
	E_DefaultFixed32 = &file_internal_testprotos_test_test_proto_extTypes[42]
	// optional fixed64 default_fixed64 = 88;
	E_DefaultFixed64 = &file_internal_testprotos_test_test_proto_extTypes[43]
	// optional sfixed32 default_sfixed32 = 89;
	E_DefaultSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[44]
	// optional sfixed64 default_sfixed64 = 80;
	E_DefaultSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[45]
	// optional float default_float = 91;
	E_DefaultFloat = &file_internal_testprotos_test_test_proto_extTypes[46]
	// optional double default_double = 92;
	E_DefaultDouble = &file_internal_testprotos_test_test_proto_extTypes[47]
	// optional bool default_bool = 93;
	E_DefaultBool = &file_internal_testprotos_test_test_proto_extTypes[48]
	// optional string default_string = 94;
	E_DefaultString = &file_internal_testprotos_test_test_proto_extTypes[49]
	// optional bytes default_bytes = 95;
	E_DefaultBytes = &file_internal_testprotos_test_test_proto_extTypes[50]
	// optional string nested_string_extension = 1003;
	E_TestNestedExtension_NestedStringExtension = &file_internal_testprotos_test_test_proto_extTypes[79]
	// optional goproto.proto.test.TestRequired single = 1000;
	E_TestRequired_Single = &file_internal_testprotos_test_test_proto_extTypes[80]
	// repeated goproto.proto.test.TestRequired multi = 1001;
	E_TestRequired_Multi = &file_internal_testprotos_test_test_proto_extTypes[81]
)

// Extension fields to TestPackedExtensions.
var (
	// repeated int32 packed_int32 = 90;
	E_PackedInt32 = &file_internal_testprotos_test_test_proto_extTypes[51]
	// repeated int64 packed_int64 = 91;
	E_PackedInt64 = &file_internal_testprotos_test_test_proto_extTypes[52]
	// repeated uint32 packed_uint32 = 92;
	E_PackedUint32 = &file_internal_testprotos_test_test_proto_extTypes[53]
	// repeated uint64 packed_uint64 = 93;
	E_PackedUint64 = &file_internal_testprotos_test_test_proto_extTypes[54]
	// repeated sint32 packed_sint32 = 94;
	E_PackedSint32 = &file_internal_testprotos_test_test_proto_extTypes[55]
	// repeated sint64 packed_sint64 = 95;
	E_PackedSint64 = &file_internal_testprotos_test_test_proto_extTypes[56]
	// repeated fixed32 packed_fixed32 = 96;
	E_PackedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[57]
	// repeated fixed64 packed_fixed64 = 97;
	E_PackedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[58]
	// repeated sfixed32 packed_sfixed32 = 98;
	E_PackedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[59]
	// repeated sfixed64 packed_sfixed64 = 99;
	E_PackedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[60]
	// repeated float packed_float = 100;
	E_PackedFloat = &file_internal_testprotos_test_test_proto_extTypes[61]
	// repeated double packed_double = 101;
	E_PackedDouble = &file_internal_testprotos_test_test_proto_extTypes[62]
	// repeated bool packed_bool = 102;
	E_PackedBool = &file_internal_testprotos_test_test_proto_extTypes[63]
	// repeated goproto.proto.test.ForeignEnum packed_enum = 103;
	E_PackedEnum = &file_internal_testprotos_test_test_proto_extTypes[64]
)

// Extension fields to TestUnpackedExtensions.
var (
	// repeated int32 unpacked_int32 = 90;
	E_UnpackedInt32 = &file_internal_testprotos_test_test_proto_extTypes[65]
	// repeated int64 unpacked_int64 = 91;
	E_UnpackedInt64 = &file_internal_testprotos_test_test_proto_extTypes[66]
	// repeated uint32 unpacked_uint32 = 92;
	E_UnpackedUint32 = &file_internal_testprotos_test_test_proto_extTypes[67]
	// repeated uint64 unpacked_uint64 = 93;
	E_UnpackedUint64 = &file_internal_testprotos_test_test_proto_extTypes[68]
	// repeated sint32 unpacked_sint32 = 94;
	E_UnpackedSint32 = &file_internal_testprotos_test_test_proto_extTypes[69]
	// repeated sint64 unpacked_sint64 = 95;
	E_UnpackedSint64 = &file_internal_testprotos_test_test_proto_extTypes[70]
	// repeated fixed32 unpacked_fixed32 = 96;
	E_UnpackedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[71]
	// repeated fixed64 unpacked_fixed64 = 97;
	E_UnpackedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[72]
	// repeated sfixed32 unpacked_sfixed32 = 98;
	E_UnpackedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[73]
	// repeated sfixed64 unpacked_sfixed64 = 99;
	E_UnpackedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[74]
	// repeated float unpacked_float = 100;
	E_UnpackedFloat = &file_internal_testprotos_test_test_proto_extTypes[75]
	// repeated double unpacked_double = 101;
	E_UnpackedDouble = &file_internal_testprotos_test_test_proto_extTypes[76]
	// repeated bool unpacked_bool = 102;
	E_UnpackedBool = &file_internal_testprotos_test_test_proto_extTypes[77]
	// repeated goproto.proto.test.ForeignEnum unpacked_enum = 103;
	E_UnpackedEnum = &file_internal_testprotos_test_test_proto_extTypes[78]
)

var File_internal_testprotos_test_test_proto protoreflect.FileDescriptor

const file_internal_testprotos_test_test_proto_rawDesc = "\n#internal/testprotos/test/test.protogoproto.proto.test*internal/testprotos/test/test_public.proto.internal/testprotos/test/weak1/test_weak.proto.internal/testprotos/test/weak2/test_weak.proto%internal/testprotos/enums/enums.proto+internal/testprotos/required/required.proto*internal/testprotos/test/test_import.proto\"\x9a;\nTestAllTypes%\noptional_int32 (R\roptionalInt32%\noptional_int64 (R\roptionalInt64'\noptional_uint32 (\rRoptionalUint32'\noptional_uint64 (RoptionalUint64'\noptional_sint32 (RoptionalSint32'\noptional_sint64 (RoptionalSint64)\noptional_fixed32 (RoptionalFixed32)\noptional_fixed64 (RoptionalFixed64+\noptional_sfixed32	 (RoptionalSfixed32+\noptional_sfixed64\n (RoptionalSfixed64%\noptional_float (R\roptionalFloat'\noptional_double (RoptionalDouble#\n\roptional_bool\r (RoptionalBool'\noptional_string (	RoptionalString%\noptional_bytes (R\roptionalBytesT\n\roptionalgroup (\n2..goproto.proto.test.TestAllTypes.OptionalGroupR\roptionalgroupf\noptional_nested_message (2..goproto.proto.test.TestAllTypes.NestedMessageRoptionalNestedMessage\\\noptional_foreign_message (2\".goproto.proto.test.ForeignMessageRoptionalForeignMessageY\noptional_import_message (2!.goproto.proto.test.ImportMessageRoptionalImportMessage]\noptional_nested_enum (2+.goproto.proto.test.TestAllTypes.NestedEnumRoptionalNestedEnumS\noptional_foreign_enum (2.goproto.proto.test.ForeignEnumRoptionalForeignEnumP\noptional_import_enum (2.goproto.proto.test.ImportEnumRoptionalImportEnums\noptional_lazy_nested_message (2..goproto.proto.test.TestAllTypes.NestedMessageB(RoptionalLazyNestedMessage%\nrepeated_int32 (R\rrepeatedInt32%\nrepeated_int64  (R\rrepeatedInt64'\nrepeated_uint32! (\rRrepeatedUint32'\nrepeated_uint64\" (RrepeatedUint64'\nrepeated_sint32# (RrepeatedSint32'\nrepeated_sint64$ (RrepeatedSint64)\nrepeated_fixed32% (RrepeatedFixed32)\nrepeated_fixed64& (RrepeatedFixed64+\nrepeated_sfixed32' (RrepeatedSfixed32+\nrepeated_sfixed64( (RrepeatedSfixed64%\nrepeated_float) (R\rrepeatedFloat'\nrepeated_double* (RrepeatedDouble#\n\rrepeated_bool+ (RrepeatedBool'\nrepeated_string, (	RrepeatedString%\nrepeated_bytes- (R\rrepeatedBytesT\n\rrepeatedgroup. (\n2..goproto.proto.test.TestAllTypes.RepeatedGroupR\rrepeatedgroupf\nrepeated_nested_message0 (2..goproto.proto.test.TestAllTypes.NestedMessageRrepeatedNestedMessage\\\nrepeated_foreign_message1 (2\".goproto.proto.test.ForeignMessageRrepeatedForeignMessageX\nrepeated_importmessage2 (2!.goproto.proto.test.ImportMessageRrepeatedImportmessage]\nrepeated_nested_enum3 (2+.goproto.proto.test.TestAllTypes.NestedEnumRrepeatedNestedEnumS\nrepeated_foreign_enum4 (2.goproto.proto.test.ForeignEnumRrepeatedForeignEnumO\nrepeated_importenum5 (2.goproto.proto.test.ImportEnumRrepeatedImportenum[\nmap_int32_int328 (23.goproto.proto.test.TestAllTypes.MapInt32Int32EntryR\rmapInt32Int32[\nmap_int64_int649 (23.goproto.proto.test.TestAllTypes.MapInt64Int64EntryR\rmapInt64Int64a\nmap_uint32_uint32: (25.goproto.proto.test.TestAllTypes.MapUint32Uint32EntryRmapUint32Uint32a\nmap_uint64_uint64; (25.goproto.proto.test.TestAllTypes.MapUint64Uint64EntryRmapUint64Uint64a\nmap_sint32_sint32< (25.goproto.proto.test.TestAllTypes.MapSint32Sint32EntryRmapSint32Sint32a\nmap_sint64_sint64= (25.goproto.proto.test.TestAllTypes.MapSint64Sint64EntryRmapSint64Sint64g\nmap_fixed32_fixed32> (27.goproto.proto.test.TestAllTypes.MapFixed32Fixed32EntryRmapFixed32Fixed32g\nmap_fixed64_fixed64? (27.goproto.proto.test.TestAllTypes.MapFixed64Fixed64EntryRmapFixed64Fixed64m\nmap_sfixed32_sfixed32@ (29.goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32EntryRmapSfixed32Sfixed32m\nmap_sfixed64_sfixed64A (29.goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64EntryRmapSfixed64Sfixed64[\nmap_int32_floatB (23.goproto.proto.test.TestAllTypes.MapInt32FloatEntryR\rmapInt32Float^\nmap_int32_doubleC (24.goproto.proto.test.TestAllTypes.MapInt32DoubleEntryRmapInt32DoubleU\n\rmap_bool_boolD (21.goproto.proto.test.TestAllTypes.MapBoolBoolEntryRmapBoolBoola\nmap_string_stringE (25.goproto.proto.test.TestAllTypes.MapStringStringEntryRmapStringString^\nmap_string_bytesF (24.goproto.proto.test.TestAllTypes.MapStringBytesEntryRmapStringBytesw\nmap_string_nested_messageG (2<.goproto.proto.test.TestAllTypes.MapStringNestedMessageEntryRmapStringNestedMessagen\nmap_string_nested_enumI (29.goproto.proto.test.TestAllTypes.MapStringNestedEnumEntryRmapStringNestedEnum'\n\rdefault_int32Q (:81RdefaultInt32'\n\rdefault_int64R (:82RdefaultInt64)\ndefault_uint32S (\r:83R\rdefaultUint32)\ndefault_uint64T (:84R\rdefaultUint64*\ndefault_sint32U (:-85R\rdefaultSint32)\ndefault_sint64V (:86R\rdefaultSint64+\ndefault_fixed32W (:87RdefaultFixed32+\ndefault_fixed64X (:88RdefaultFixed64-\ndefault_sfixed32Y (:89RdefaultSfixed32.\ndefault_sfixed64P (:-90RdefaultSfixed64)\n\rdefault_float[ (:91.5RdefaultFloat,\ndefault_double\\ (:92000R\rdefaultDouble'\ndefault_bool] (:trueRdefaultBool,\ndefault_string^ (	:helloR\rdefaultString*\n\rdefault_bytes_ (:worldRdefaultBytes`\ndefault_nested_enum` (2+.goproto.proto.test.TestAllTypes.NestedEnum:BARRdefaultNestedEnum^\ndefault_foreign_enuma (2.goproto.proto.test.ForeignEnum:FOREIGN_BARRdefaultForeignEnum#\noneof_uint32o (\rH\x00RoneofUint32b\noneof_nested_messagep (2..goproto.proto.test.TestAllTypes.NestedMessageH\x00RoneofNestedMessage#\noneof_stringq (	H\x00RoneofString!\noneof_bytesr (H\x00R\noneofBytes\n\noneof_bools (H\x00R	oneofBool#\noneof_uint64t (H\x00RoneofUint64!\noneof_floatu (H\x00R\noneofFloat#\noneof_doublev (H\x00RoneofDoubleL\n\noneof_enumw (2+.goproto.proto.test.TestAllTypes.NestedEnumH\x00R	oneofEnumM\n\noneofgroupy (\n2+.goproto.proto.test.TestAllTypes.OneofGroupH\x00R\noneofgroup4\noneof_optional_uint32x (\rHRoneofOptionalUint32a\n\rNestedMessage\na (RaB\ncorecursive (2 .goproto.proto.test.TestAllTypesRcorecursive\xb2\n\rOptionalGroup\na (Rag\noptional_nested_message\xe8 (2..goproto.proto.test.TestAllTypes.NestedMessageRoptionalNestedMessage*\nsame_field_number (RsameFieldNumber\x86\n\rRepeatedGroup\na/ (Rag\noptional_nested_message\xe9 (2..goproto.proto.test.TestAllTypes.NestedMessageRoptionalNestedMessage@\nMapInt32Int32Entry\nkey (Rkey\nvalue (Rvalue:8@\nMapInt64Int64Entry\nkey (Rkey\nvalue (Rvalue:8B\nMapUint32Uint32Entry\nkey (\rRkey\nvalue (\rRvalue:8B\nMapUint64Uint64Entry\nkey (Rkey\nvalue (Rvalue:8B\nMapSint32Sint32Entry\nkey (Rkey\nvalue (Rvalue:8B\nMapSint64Sint64Entry\nkey (Rkey\nvalue (Rvalue:8D\nMapFixed32Fixed32Entry\nkey (Rkey\nvalue (Rvalue:8D\nMapFixed64Fixed64Entry\nkey (Rkey\nvalue (Rvalue:8F\nMapSfixed32Sfixed32Entry\nkey (Rkey\nvalue (Rvalue:8F\nMapSfixed64Sfixed64Entry\nkey (Rkey\nvalue (Rvalue:8@\nMapInt32FloatEntry\nkey (Rkey\nvalue (Rvalue:8A\nMapInt32DoubleEntry\nkey (Rkey\nvalue (Rvalue:8>\nMapBoolBoolEntry\nkey (Rkey\nvalue (Rvalue:8B\nMapStringStringEntry\nkey (	Rkey\nvalue (	Rvalue:8A\nMapStringBytesEntry\nkey (	Rkey\nvalue (Rvalue:8y\nMapStringNestedMessageEntry\nkey (	RkeyD\nvalue (2..goproto.proto.test.TestAllTypes.NestedMessageRvalue:8s\nMapStringNestedEnumEntry\nkey (	RkeyA\nvalue (2+.goproto.proto.test.TestAllTypes.NestedEnumRvalue:8(\n\nOneofGroup\na (Ra\nb (Rb\"9\n\nNestedEnum\nFOO\x00\nBAR\nBAZ\nNEG\xff\xff\xff\xff\xff\xff\xff\xff\xffB\r\noneof_fieldB\noneof_optional\"\xde(\nTestManyMessageFieldsMessage0\nf1 (2 .goproto.proto.test.TestAllTypesRf10\nf2 (2 .goproto.proto.test.TestAllTypesRf20\nf3 (2 .goproto.proto.test.TestAllTypesRf30\nf4 (2 .goproto.proto.test.TestAllTypesRf40\nf5 (2 .goproto.proto.test.TestAllTypesRf50\nf6 (2 .goproto.proto.test.TestAllTypesRf60\nf7 (2 .goproto.proto.test.TestAllTypesRf70\nf8 (2 .goproto.proto.test.TestAllTypesRf80\nf9	 (2 .goproto.proto.test.TestAllTypesRf92\nf10\n (2 .goproto.proto.test.TestAllTypesRf102\nf11 (2 .goproto.proto.test.TestAllTypesRf112\nf12 (2 .goproto.proto.test.TestAllTypesRf122\nf13\r (2 .goproto.proto.test.TestAllTypesRf132\nf14 (2 .goproto.proto.test.TestAllTypesRf142\nf15 (2 .goproto.proto.test.TestAllTypesRf152\nf16 (2 .goproto.proto.test.TestAllTypesRf162\nf17 (2 .goproto.proto.test.TestAllTypesRf172\nf18 (2 .goproto.proto.test.TestAllTypesRf182\nf19 (2 .goproto.proto.test.TestAllTypesRf192\nf20 (2 .goproto.proto.test.TestAllTypesRf202\nf21 (2 .goproto.proto.test.TestAllTypesRf212\nf22 (2 .goproto.proto.test.TestAllTypesRf222\nf23 (2 .goproto.proto.test.TestAllTypesRf232\nf24 (2 .goproto.proto.test.TestAllTypesRf242\nf25 (2 .goproto.proto.test.TestAllTypesRf252\nf26 (2 .goproto.proto.test.TestAllTypesRf262\nf27 (2 .goproto.proto.test.TestAllTypesRf272\nf28 (2 .goproto.proto.test.TestAllTypesRf282\nf29 (2 .goproto.proto.test.TestAllTypesRf292\nf30 (2 .goproto.proto.test.TestAllTypesRf302\nf31 (2 .goproto.proto.test.TestAllTypesRf312\nf32  (2 .goproto.proto.test.TestAllTypesRf322\nf33! (2 .goproto.proto.test.TestAllTypesRf332\nf34\" (2 .goproto.proto.test.TestAllTypesRf342\nf35# (2 .goproto.proto.test.TestAllTypesRf352\nf36$ (2 .goproto.proto.test.TestAllTypesRf362\nf37% (2 .goproto.proto.test.TestAllTypesRf372\nf38& (2 .goproto.proto.test.TestAllTypesRf382\nf39' (2 .goproto.proto.test.TestAllTypesRf392\nf40( (2 .goproto.proto.test.TestAllTypesRf402\nf41) (2 .goproto.proto.test.TestAllTypesRf412\nf42* (2 .goproto.proto.test.TestAllTypesRf422\nf43+ (2 .goproto.proto.test.TestAllTypesRf432\nf44, (2 .goproto.proto.test.TestAllTypesRf442\nf45- (2 .goproto.proto.test.TestAllTypesRf452\nf46. (2 .goproto.proto.test.TestAllTypesRf462\nf47/ (2 .goproto.proto.test.TestAllTypesRf472\nf480 (2 .goproto.proto.test.TestAllTypesRf482\nf491 (2 .goproto.proto.test.TestAllTypesRf492\nf502 (2 .goproto.proto.test.TestAllTypesRf502\nf513 (2 .goproto.proto.test.TestAllTypesRf512\nf524 (2 .goproto.proto.test.TestAllTypesRf522\nf535 (2 .goproto.proto.test.TestAllTypesRf532\nf546 (2 .goproto.proto.test.TestAllTypesRf542\nf557 (2 .goproto.proto.test.TestAllTypesRf552\nf568 (2 .goproto.proto.test.TestAllTypesRf562\nf579 (2 .goproto.proto.test.TestAllTypesRf572\nf58: (2 .goproto.proto.test.TestAllTypesRf582\nf59; (2 .goproto.proto.test.TestAllTypesRf592\nf60< (2 .goproto.proto.test.TestAllTypesRf602\nf61= (2 .goproto.proto.test.TestAllTypesRf612\nf62> (2 .goproto.proto.test.TestAllTypesRf622\nf63? (2 .goproto.proto.test.TestAllTypesRf632\nf64@ (2 .goproto.proto.test.TestAllTypesRf642\nf65A (2 .goproto.proto.test.TestAllTypesRf652\nf66B (2 .goproto.proto.test.TestAllTypesRf662\nf67C (2 .goproto.proto.test.TestAllTypesRf672\nf68D (2 .goproto.proto.test.TestAllTypesRf682\nf69E (2 .goproto.proto.test.TestAllTypesRf692\nf70F (2 .goproto.proto.test.TestAllTypesRf702\nf71G (2 .goproto.proto.test.TestAllTypesRf712\nf72H (2 .goproto.proto.test.TestAllTypesRf722\nf73I (2 .goproto.proto.test.TestAllTypesRf732\nf74J (2 .goproto.proto.test.TestAllTypesRf742\nf75K (2 .goproto.proto.test.TestAllTypesRf752\nf76L (2 .goproto.proto.test.TestAllTypesRf762\nf77M (2 .goproto.proto.test.TestAllTypesRf772\nf78N (2 .goproto.proto.test.TestAllTypesRf782\nf79O (2 .goproto.proto.test.TestAllTypesRf792\nf80P (2 .goproto.proto.test.TestAllTypesRf802\nf81Q (2 .goproto.proto.test.TestAllTypesRf812\nf82R (2 .goproto.proto.test.TestAllTypesRf822\nf83S (2 .goproto.proto.test.TestAllTypesRf832\nf84T (2 .goproto.proto.test.TestAllTypesRf842\nf85U (2 .goproto.proto.test.TestAllTypesRf852\nf86V (2 .goproto.proto.test.TestAllTypesRf862\nf87W (2 .goproto.proto.test.TestAllTypesRf872\nf88X (2 .goproto.proto.test.TestAllTypesRf882\nf89Y (2 .goproto.proto.test.TestAllTypesRf892\nf90Z (2 .goproto.proto.test.TestAllTypesRf902\nf91[ (2 .goproto.proto.test.TestAllTypesRf912\nf92\\ (2 .goproto.proto.test.TestAllTypesRf922\nf93] (2 .goproto.proto.test.TestAllTypesRf932\nf94^ (2 .goproto.proto.test.TestAllTypesRf942\nf95_ (2 .goproto.proto.test.TestAllTypesRf952\nf96` (2 .goproto.proto.test.TestAllTypesRf962\nf97a (2 .goproto.proto.test.TestAllTypesRf972\nf98b (2 .goproto.proto.test.TestAllTypesRf982\nf99c (2 .goproto.proto.test.TestAllTypesRf994\nf100d (2 .goproto.proto.test.TestAllTypesRf100\"\xc4\nTestDeprecatedMessage-\ndeprecated_int32 (BRdeprecatedInt32:\ndeprecated_oneof_field (BH\x00RdeprecatedOneofField\"(\nDeprecatedEnum\n\nDEPRECATED\x00:B\ndeprecated_oneof\"\x99\nTestOneofWithRequired#\noneof_uint32 (\rH\x00RoneofUint32L\noneof_required (2#.goproto.proto.testrequired.MessageH\x00R\roneofRequiredB\r\noneof_field\",\nForeignMessage\nc (Rc\nd (Rd\"0\nTestReservedFieldsJJJ	RbarRbaz\"\x85\nTestAllExtensionsf\n\rNestedMessage\na (RaG\ncorecursive (2%.goproto.proto.test.TestAllExtensionsRcorecursive*\x80\x80\x80\x80\"\xb7\n\rOptionalGroup\na (Ra*\nsame_field_number (RsameFieldNumberl\noptional_nested_message\xe8 (23.goproto.proto.test.TestAllExtensions.NestedMessageRoptionalNestedMessage\"\x8b\n\rRepeatedGroup\na/ (Ral\noptional_nested_message\xe9 (23.goproto.proto.test.TestAllExtensions.NestedMessageRoptionalNestedMessage\"u\nTestNestedExtension2^\nnested_string_extension%.goproto.proto.test.TestAllExtensions\xeb (	RnestedStringExtension\"\xf7\nTestRequired%\nrequired_field (R\rrequiredField2`\nsingle%.goproto.proto.test.TestAllExtensions\xe8 (2 .goproto.proto.test.TestRequiredRsingle2^\nmulti%.goproto.proto.test.TestAllExtensions\xe9 (2 .goproto.proto.test.TestRequiredRmulti\"\xc2\nTestRequiredForeignK\noptional_message (2 .goproto.proto.test.TestRequiredRoptionalMessageK\nrepeated_message (2 .goproto.proto.test.TestRequiredRrepeatedMessageX\nmap_message (27.goproto.proto.test.TestRequiredForeign.MapMessageEntryR\nmapMessageG\n\roneof_message (2 .goproto.proto.test.TestRequiredH\x00RoneofMessage_\nMapMessageEntry\nkey (Rkey6\nvalue (2 .goproto.proto.test.TestRequiredRvalue:8B\r\noneof_field\"\x99\nTestRequiredGroupFields_\n\roptionalgroup (\n29.goproto.proto.test.TestRequiredGroupFields.OptionalGroupR\roptionalgroup_\n\rrepeatedgroup (\n29.goproto.proto.test.TestRequiredGroupFields.RepeatedGroupR\rrepeatedgroup\n\rOptionalGroup\na (Ra\n\rRepeatedGroup\na (Ra\"l\nTestRequiredLazyX\noptional_lazy_message (2 .goproto.proto.test.TestRequiredB(RoptionalLazyMessage\"\xb6\nTestWeakT\n\rweak_message1 (2+.goproto.proto.test.weak.WeakImportMessage1BPRweakMessage1T\n\rweak_message2 (2+.goproto.proto.test.weak.WeakImportMessage2BPRweakMessage2\"\xee\nTestPackedTypes%\npacked_int32Z (BRpackedInt32%\npacked_int64[ (BRpackedInt64'\n\rpacked_uint32\\ (\rBRpackedUint32'\n\rpacked_uint64] (BRpackedUint64'\n\rpacked_sint32^ (BRpackedSint32'\n\rpacked_sint64_ (BRpackedSint64)\npacked_fixed32` (BR\rpackedFixed32)\npacked_fixed64a (BR\rpackedFixed64+\npacked_sfixed32b (BRpackedSfixed32+\npacked_sfixed64c (BRpackedSfixed64%\npacked_floatd (BRpackedFloat'\n\rpacked_doublee (BRpackedDouble#\npacked_boolf (BR\npackedBoolD\npacked_enumg (2.goproto.proto.test.ForeignEnumBR\npackedEnum\"\xa8\nTestUnpackedTypes)\nunpacked_int32Z (B\x00R\runpackedInt32)\nunpacked_int64[ (B\x00R\runpackedInt64+\nunpacked_uint32\\ (\rB\x00RunpackedUint32+\nunpacked_uint64] (B\x00RunpackedUint64+\nunpacked_sint32^ (B\x00RunpackedSint32+\nunpacked_sint64_ (B\x00RunpackedSint64-\nunpacked_fixed32` (B\x00RunpackedFixed32-\nunpacked_fixed64a (B\x00RunpackedFixed64/\nunpacked_sfixed32b (B\x00RunpackedSfixed32/\nunpacked_sfixed64c (B\x00RunpackedSfixed64)\nunpacked_floatd (B\x00R\runpackedFloat+\nunpacked_doublee (B\x00RunpackedDouble'\n\runpacked_boolf (B\x00RunpackedBoolH\n\runpacked_enumg (2.goproto.proto.test.ForeignEnumB\x00RunpackedEnum\" \nTestPackedExtensions*\x80\x80\x80\x80\"\"\nTestUnpackedExtensions*\x80\x80\x80\x80\"\n\nFooRequest\"\r\nFooResponse\"a\nWeirdDefaultQ\n\rweird_default (:,hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef`RweirdDefault\"\xff\n\rRemoteDefault3\ndefault (2.goproto.proto.enums.EnumRdefault3\nzero (2.goproto.proto.enums.Enum:ZERORzero0\none (2.goproto.proto.enums.Enum:ONERone<\nelevent (2.goproto.proto.enums.Enum:ELEVENTReleventB\n	seventeen (2.goproto.proto.enums.Enum:	SEVENTEENR	seventeenH\nthirtyseven (2.goproto.proto.enums.Enum:THIRTYSEVENRthirtysevenE\n\nsixtyseven (2.goproto.proto.enums.Enum:\nSIXTYSEVENR\nsixtyseven?\nnegative (2.goproto.proto.enums.Enum:NEGATIVERnegative*@\nForeignEnum\nFOREIGN_FOO\nFOREIGN_BAR\nFOREIGN_BAZ*G\nTestReservedEnumFields\n\rRESERVED_ENUM\x00\"\"\"	*BAR*BAZ2\xa8\nTestServiceF\nFoo.goproto.proto.test.FooRequest.goproto.proto.test.FooResponseQ\n\nTestStream.goproto.proto.test.FooRequest.goproto.proto.test.FooResponse(02\x85\nTestDeprecatedServiceg\n\nDeprecated).goproto.proto.test.TestDeprecatedMessage).goproto.proto.test.TestDeprecatedMessage\"\x88\x88:L\noptional_int32%.goproto.proto.test.TestAllExtensions (R\roptionalInt32:L\noptional_int64%.goproto.proto.test.TestAllExtensions (R\roptionalInt64:N\noptional_uint32%.goproto.proto.test.TestAllExtensions (\rRoptionalUint32:N\noptional_uint64%.goproto.proto.test.TestAllExtensions (RoptionalUint64:N\noptional_sint32%.goproto.proto.test.TestAllExtensions (RoptionalSint32:N\noptional_sint64%.goproto.proto.test.TestAllExtensions (RoptionalSint64:P\noptional_fixed32%.goproto.proto.test.TestAllExtensions (RoptionalFixed32:P\noptional_fixed64%.goproto.proto.test.TestAllExtensions (RoptionalFixed64:R\noptional_sfixed32%.goproto.proto.test.TestAllExtensions	 (RoptionalSfixed32:R\noptional_sfixed64%.goproto.proto.test.TestAllExtensions\n (RoptionalSfixed64:L\noptional_float%.goproto.proto.test.TestAllExtensions (R\roptionalFloat:N\noptional_double%.goproto.proto.test.TestAllExtensions (RoptionalDouble:J\n\roptional_bool%.goproto.proto.test.TestAllExtensions\r (RoptionalBool:N\noptional_string%.goproto.proto.test.TestAllExtensions (	RoptionalString:L\noptional_bytes%.goproto.proto.test.TestAllExtensions (R\roptionalBytes:n\n\roptionalgroup%.goproto.proto.test.TestAllExtensions (\n2!.goproto.proto.test.OptionalGroupR\roptionalgroup:\x92\noptional_nested_message%.goproto.proto.test.TestAllExtensions (23.goproto.proto.test.TestAllExtensions.NestedMessageRoptionalNestedMessage:\x84\noptional_nested_enum%.goproto.proto.test.TestAllExtensions (2+.goproto.proto.test.TestAllTypes.NestedEnumRoptionalNestedEnum:L\nrepeated_int32%.goproto.proto.test.TestAllExtensions (R\rrepeatedInt32:L\nrepeated_int64%.goproto.proto.test.TestAllExtensions  (R\rrepeatedInt64:N\nrepeated_uint32%.goproto.proto.test.TestAllExtensions! (\rRrepeatedUint32:N\nrepeated_uint64%.goproto.proto.test.TestAllExtensions\" (RrepeatedUint64:N\nrepeated_sint32%.goproto.proto.test.TestAllExtensions# (RrepeatedSint32:N\nrepeated_sint64%.goproto.proto.test.TestAllExtensions$ (RrepeatedSint64:P\nrepeated_fixed32%.goproto.proto.test.TestAllExtensions% (RrepeatedFixed32:P\nrepeated_fixed64%.goproto.proto.test.TestAllExtensions& (RrepeatedFixed64:R\nrepeated_sfixed32%.goproto.proto.test.TestAllExtensions' (RrepeatedSfixed32:R\nrepeated_sfixed64%.goproto.proto.test.TestAllExtensions( (RrepeatedSfixed64:L\nrepeated_float%.goproto.proto.test.TestAllExtensions) (R\rrepeatedFloat:N\nrepeated_double%.goproto.proto.test.TestAllExtensions* (RrepeatedDouble:J\n\rrepeated_bool%.goproto.proto.test.TestAllExtensions+ (RrepeatedBool:N\nrepeated_string%.goproto.proto.test.TestAllExtensions, (	RrepeatedString:L\nrepeated_bytes%.goproto.proto.test.TestAllExtensions- (R\rrepeatedBytes:n\n\rrepeatedgroup%.goproto.proto.test.TestAllExtensions. (\n2!.goproto.proto.test.RepeatedGroupR\rrepeatedgroup:\x92\nrepeated_nested_message%.goproto.proto.test.TestAllExtensions0 (23.goproto.proto.test.TestAllExtensions.NestedMessageRrepeatedNestedMessage:\x84\nrepeated_nested_enum%.goproto.proto.test.TestAllExtensions3 (2+.goproto.proto.test.TestAllTypes.NestedEnumRrepeatedNestedEnum:N\n\rdefault_int32%.goproto.proto.test.TestAllExtensionsQ (:81RdefaultInt32:N\n\rdefault_int64%.goproto.proto.test.TestAllExtensionsR (:82RdefaultInt64:P\ndefault_uint32%.goproto.proto.test.TestAllExtensionsS (\r:83R\rdefaultUint32:P\ndefault_uint64%.goproto.proto.test.TestAllExtensionsT (:84R\rdefaultUint64:Q\ndefault_sint32%.goproto.proto.test.TestAllExtensionsU (:-85R\rdefaultSint32:P\ndefault_sint64%.goproto.proto.test.TestAllExtensionsV (:86R\rdefaultSint64:R\ndefault_fixed32%.goproto.proto.test.TestAllExtensionsW (:87RdefaultFixed32:R\ndefault_fixed64%.goproto.proto.test.TestAllExtensionsX (:88RdefaultFixed64:T\ndefault_sfixed32%.goproto.proto.test.TestAllExtensionsY (:89RdefaultSfixed32:U\ndefault_sfixed64%.goproto.proto.test.TestAllExtensionsP (:-90RdefaultSfixed64:P\n\rdefault_float%.goproto.proto.test.TestAllExtensions[ (:91.5RdefaultFloat:S\ndefault_double%.goproto.proto.test.TestAllExtensions\\ (:92000R\rdefaultDouble:N\ndefault_bool%.goproto.proto.test.TestAllExtensions] (:trueRdefaultBool:S\ndefault_string%.goproto.proto.test.TestAllExtensions^ (	:helloR\rdefaultString:Q\n\rdefault_bytes%.goproto.proto.test.TestAllExtensions_ (:worldRdefaultBytes:O\npacked_int32(.goproto.proto.test.TestPackedExtensionsZ (BRpackedInt32:O\npacked_int64(.goproto.proto.test.TestPackedExtensions[ (BRpackedInt64:Q\n\rpacked_uint32(.goproto.proto.test.TestPackedExtensions\\ (\rBRpackedUint32:Q\n\rpacked_uint64(.goproto.proto.test.TestPackedExtensions] (BRpackedUint64:Q\n\rpacked_sint32(.goproto.proto.test.TestPackedExtensions^ (BRpackedSint32:Q\n\rpacked_sint64(.goproto.proto.test.TestPackedExtensions_ (BRpackedSint64:S\npacked_fixed32(.goproto.proto.test.TestPackedExtensions` (BR\rpackedFixed32:S\npacked_fixed64(.goproto.proto.test.TestPackedExtensionsa (BR\rpackedFixed64:U\npacked_sfixed32(.goproto.proto.test.TestPackedExtensionsb (BRpackedSfixed32:U\npacked_sfixed64(.goproto.proto.test.TestPackedExtensionsc (BRpackedSfixed64:O\npacked_float(.goproto.proto.test.TestPackedExtensionsd (BRpackedFloat:Q\n\rpacked_double(.goproto.proto.test.TestPackedExtensionse (BRpackedDouble:M\npacked_bool(.goproto.proto.test.TestPackedExtensionsf (BR\npackedBool:n\npacked_enum(.goproto.proto.test.TestPackedExtensionsg (2.goproto.proto.test.ForeignEnumBR\npackedEnum:U\nunpacked_int32*.goproto.proto.test.TestUnpackedExtensionsZ (B\x00R\runpackedInt32:U\nunpacked_int64*.goproto.proto.test.TestUnpackedExtensions[ (B\x00R\runpackedInt64:W\nunpacked_uint32*.goproto.proto.test.TestUnpackedExtensions\\ (\rB\x00RunpackedUint32:W\nunpacked_uint64*.goproto.proto.test.TestUnpackedExtensions] (B\x00RunpackedUint64:W\nunpacked_sint32*.goproto.proto.test.TestUnpackedExtensions^ (B\x00RunpackedSint32:W\nunpacked_sint64*.goproto.proto.test.TestUnpackedExtensions_ (B\x00RunpackedSint64:Y\nunpacked_fixed32*.goproto.proto.test.TestUnpackedExtensions` (B\x00RunpackedFixed32:Y\nunpacked_fixed64*.goproto.proto.test.TestUnpackedExtensionsa (B\x00RunpackedFixed64:[\nunpacked_sfixed32*.goproto.proto.test.TestUnpackedExtensionsb (B\x00RunpackedSfixed32:[\nunpacked_sfixed64*.goproto.proto.test.TestUnpackedExtensionsc (B\x00RunpackedSfixed64:U\nunpacked_float*.goproto.proto.test.TestUnpackedExtensionsd (B\x00R\runpackedFloat:W\nunpacked_double*.goproto.proto.test.TestUnpackedExtensionse (B\x00RunpackedDouble:S\n\runpacked_bool*.goproto.proto.test.TestUnpackedExtensionsf (B\x00RunpackedBool:t\n\runpacked_enum*.goproto.proto.test.TestUnpackedExtensionsg (2.goproto.proto.test.ForeignEnumB\x00RunpackedEnumB5Z3google.golang.org/protobuf/internal/testprotos/testP\x00XX"

var (
	file_internal_testprotos_test_test_proto_rawDescOnce sync.Once
	file_internal_testprotos_test_test_proto_rawDescData = file_internal_testprotos_test_test_proto_rawDesc
)

func file_internal_testprotos_test_test_proto_rawDescGZIP() []byte {
	file_internal_testprotos_test_test_proto_rawDescOnce.Do(func() {
		file_internal_testprotos_test_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_test_proto_rawDescData)))
	})
	return []byte(file_internal_testprotos_test_test_proto_rawDescData)
}

var file_internal_testprotos_test_test_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_internal_testprotos_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_internal_testprotos_test_test_proto_goTypes = []any{
	(ForeignEnum)(0),                          // 0: goproto.proto.test.ForeignEnum
	(TestReservedEnumFields)(0),               // 1: goproto.proto.test.TestReservedEnumFields
	(TestAllTypes_NestedEnum)(0),              // 2: goproto.proto.test.TestAllTypes.NestedEnum
	(TestDeprecatedMessage_DeprecatedEnum)(0), // 3: goproto.proto.test.TestDeprecatedMessage.DeprecatedEnum
	(*TestAllTypes)(nil),                      // 4: goproto.proto.test.TestAllTypes
	(*TestManyMessageFieldsMessage)(nil),      // 5: goproto.proto.test.TestManyMessageFieldsMessage
	(*TestDeprecatedMessage)(nil),             // 6: goproto.proto.test.TestDeprecatedMessage
	(*TestOneofWithRequired)(nil),             // 7: goproto.proto.test.TestOneofWithRequired
	(*ForeignMessage)(nil),                    // 8: goproto.proto.test.ForeignMessage
	(*TestReservedFields)(nil),                // 9: goproto.proto.test.TestReservedFields
	(*TestAllExtensions)(nil),                 // 10: goproto.proto.test.TestAllExtensions
	(*OptionalGroup)(nil),                     // 11: goproto.proto.test.OptionalGroup
	(*RepeatedGroup)(nil),                     // 12: goproto.proto.test.RepeatedGroup
	(*TestNestedExtension)(nil),               // 13: goproto.proto.test.TestNestedExtension
	(*TestRequired)(nil),                      // 14: goproto.proto.test.TestRequired
	(*TestRequiredForeign)(nil),               // 15: goproto.proto.test.TestRequiredForeign
	(*TestRequiredGroupFields)(nil),           // 16: goproto.proto.test.TestRequiredGroupFields
	(*TestRequiredLazy)(nil),                  // 17: goproto.proto.test.TestRequiredLazy
	(*TestWeak)(nil),                          // 18: goproto.proto.test.TestWeak
	(*TestPackedTypes)(nil),                   // 19: goproto.proto.test.TestPackedTypes
	(*TestUnpackedTypes)(nil),                 // 20: goproto.proto.test.TestUnpackedTypes
	(*TestPackedExtensions)(nil),              // 21: goproto.proto.test.TestPackedExtensions
	(*TestUnpackedExtensions)(nil),            // 22: goproto.proto.test.TestUnpackedExtensions
	(*FooRequest)(nil),                        // 23: goproto.proto.test.FooRequest
	(*FooResponse)(nil),                       // 24: goproto.proto.test.FooResponse
	(*WeirdDefault)(nil),                      // 25: goproto.proto.test.WeirdDefault
	(*RemoteDefault)(nil),                     // 26: goproto.proto.test.RemoteDefault
	(*TestAllTypes_NestedMessage)(nil),        // 27: goproto.proto.test.TestAllTypes.NestedMessage
	(*TestAllTypes_OptionalGroup)(nil),        // 28: goproto.proto.test.TestAllTypes.OptionalGroup
	(*TestAllTypes_RepeatedGroup)(nil),        // 29: goproto.proto.test.TestAllTypes.RepeatedGroup
	nil,                                       // 30: goproto.proto.test.TestAllTypes.MapInt32Int32Entry
	nil,                                       // 31: goproto.proto.test.TestAllTypes.MapInt64Int64Entry
	nil,                                       // 32: goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
	nil,                                       // 33: goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
	nil,                                       // 34: goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
	nil,                                       // 35: goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
	nil,                                       // 36: goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
	nil,                                       // 37: goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
	nil,                                       // 38: goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
	nil,                                       // 39: goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
	nil,                                       // 40: goproto.proto.test.TestAllTypes.MapInt32FloatEntry
	nil,                                       // 41: goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
	nil,                                       // 42: goproto.proto.test.TestAllTypes.MapBoolBoolEntry
	nil,                                       // 43: goproto.proto.test.TestAllTypes.MapStringStringEntry
	nil,                                       // 44: goproto.proto.test.TestAllTypes.MapStringBytesEntry
	nil,                                       // 45: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
	nil,                                       // 46: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
	(*TestAllTypes_OneofGroup)(nil),           // 47: goproto.proto.test.TestAllTypes.OneofGroup
	(*TestAllExtensions_NestedMessage)(nil),   // 48: goproto.proto.test.TestAllExtensions.NestedMessage
	nil,                                       // 49: goproto.proto.test.TestRequiredForeign.MapMessageEntry
	(*TestRequiredGroupFields_OptionalGroup)(nil), // 50: goproto.proto.test.TestRequiredGroupFields.OptionalGroup
	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 51: goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
	(*ImportMessage)(nil),                         // 52: goproto.proto.test.ImportMessage
	(ImportEnum)(0),                               // 53: goproto.proto.test.ImportEnum
	(*required.Message)(nil),                      // 54: goproto.proto.testrequired.Message
	(enums.Enum)(0),                               // 55: goproto.proto.enums.Enum
}
var file_internal_testprotos_test_test_proto_depIdxs = []int32{
	28,  // 0: goproto.proto.test.TestAllTypes.optionalgroup:type_name -> goproto.proto.test.TestAllTypes.OptionalGroup
	27,  // 1: goproto.proto.test.TestAllTypes.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	8,   // 2: goproto.proto.test.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.test.ForeignMessage
	52,  // 3: goproto.proto.test.TestAllTypes.optional_import_message:type_name -> goproto.proto.test.ImportMessage
	2,   // 4: goproto.proto.test.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	0,   // 5: goproto.proto.test.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
	53,  // 6: goproto.proto.test.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test.ImportEnum
	27,  // 7: goproto.proto.test.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	29,  // 8: goproto.proto.test.TestAllTypes.repeatedgroup:type_name -> goproto.proto.test.TestAllTypes.RepeatedGroup
	27,  // 9: goproto.proto.test.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	8,   // 10: goproto.proto.test.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.test.ForeignMessage
	52,  // 11: goproto.proto.test.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.test.ImportMessage
	2,   // 12: goproto.proto.test.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	0,   // 13: goproto.proto.test.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
	53,  // 14: goproto.proto.test.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test.ImportEnum
	30,  // 15: goproto.proto.test.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test.TestAllTypes.MapInt32Int32Entry
	31,  // 16: goproto.proto.test.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test.TestAllTypes.MapInt64Int64Entry
	32,  // 17: goproto.proto.test.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
	33,  // 18: goproto.proto.test.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
	34,  // 19: goproto.proto.test.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
	35,  // 20: goproto.proto.test.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
	36,  // 21: goproto.proto.test.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
	37,  // 22: goproto.proto.test.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
	38,  // 23: goproto.proto.test.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
	39,  // 24: goproto.proto.test.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
	40,  // 25: goproto.proto.test.TestAllTypes.map_int32_float:type_name -> goproto.proto.test.TestAllTypes.MapInt32FloatEntry
	41,  // 26: goproto.proto.test.TestAllTypes.map_int32_double:type_name -> goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
	42,  // 27: goproto.proto.test.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test.TestAllTypes.MapBoolBoolEntry
	43,  // 28: goproto.proto.test.TestAllTypes.map_string_string:type_name -> goproto.proto.test.TestAllTypes.MapStringStringEntry
	44,  // 29: goproto.proto.test.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test.TestAllTypes.MapStringBytesEntry
	45,  // 30: goproto.proto.test.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
	46,  // 31: goproto.proto.test.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
	2,   // 32: goproto.proto.test.TestAllTypes.default_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	0,   // 33: goproto.proto.test.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
	27,  // 34: goproto.proto.test.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	2,   // 35: goproto.proto.test.TestAllTypes.oneof_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	47,  // 36: goproto.proto.test.TestAllTypes.oneofgroup:type_name -> goproto.proto.test.TestAllTypes.OneofGroup
	4,   // 37: goproto.proto.test.TestManyMessageFieldsMessage.f1:type_name -> goproto.proto.test.TestAllTypes
	4,   // 38: goproto.proto.test.TestManyMessageFieldsMessage.f2:type_name -> goproto.proto.test.TestAllTypes
	4,   // 39: goproto.proto.test.TestManyMessageFieldsMessage.f3:type_name -> goproto.proto.test.TestAllTypes
	4,   // 40: goproto.proto.test.TestManyMessageFieldsMessage.f4:type_name -> goproto.proto.test.TestAllTypes
	4,   // 41: goproto.proto.test.TestManyMessageFieldsMessage.f5:type_name -> goproto.proto.test.TestAllTypes
	4,   // 42: goproto.proto.test.TestManyMessageFieldsMessage.f6:type_name -> goproto.proto.test.TestAllTypes
	4,   // 43: goproto.proto.test.TestManyMessageFieldsMessage.f7:type_name -> goproto.proto.test.TestAllTypes
	4,   // 44: goproto.proto.test.TestManyMessageFieldsMessage.f8:type_name -> goproto.proto.test.TestAllTypes
	4,   // 45: goproto.proto.test.TestManyMessageFieldsMessage.f9:type_name -> goproto.proto.test.TestAllTypes
	4,   // 46: goproto.proto.test.TestManyMessageFieldsMessage.f10:type_name -> goproto.proto.test.TestAllTypes
	4,   // 47: goproto.proto.test.TestManyMessageFieldsMessage.f11:type_name -> goproto.proto.test.TestAllTypes
	4,   // 48: goproto.proto.test.TestManyMessageFieldsMessage.f12:type_name -> goproto.proto.test.TestAllTypes
	4,   // 49: goproto.proto.test.TestManyMessageFieldsMessage.f13:type_name -> goproto.proto.test.TestAllTypes
	4,   // 50: goproto.proto.test.TestManyMessageFieldsMessage.f14:type_name -> goproto.proto.test.TestAllTypes
	4,   // 51: goproto.proto.test.TestManyMessageFieldsMessage.f15:type_name -> goproto.proto.test.TestAllTypes
	4,   // 52: goproto.proto.test.TestManyMessageFieldsMessage.f16:type_name -> goproto.proto.test.TestAllTypes
	4,   // 53: goproto.proto.test.TestManyMessageFieldsMessage.f17:type_name -> goproto.proto.test.TestAllTypes
	4,   // 54: goproto.proto.test.TestManyMessageFieldsMessage.f18:type_name -> goproto.proto.test.TestAllTypes
	4,   // 55: goproto.proto.test.TestManyMessageFieldsMessage.f19:type_name -> goproto.proto.test.TestAllTypes
	4,   // 56: goproto.proto.test.TestManyMessageFieldsMessage.f20:type_name -> goproto.proto.test.TestAllTypes
	4,   // 57: goproto.proto.test.TestManyMessageFieldsMessage.f21:type_name -> goproto.proto.test.TestAllTypes
	4,   // 58: goproto.proto.test.TestManyMessageFieldsMessage.f22:type_name -> goproto.proto.test.TestAllTypes
	4,   // 59: goproto.proto.test.TestManyMessageFieldsMessage.f23:type_name -> goproto.proto.test.TestAllTypes
	4,   // 60: goproto.proto.test.TestManyMessageFieldsMessage.f24:type_name -> goproto.proto.test.TestAllTypes
	4,   // 61: goproto.proto.test.TestManyMessageFieldsMessage.f25:type_name -> goproto.proto.test.TestAllTypes
	4,   // 62: goproto.proto.test.TestManyMessageFieldsMessage.f26:type_name -> goproto.proto.test.TestAllTypes
	4,   // 63: goproto.proto.test.TestManyMessageFieldsMessage.f27:type_name -> goproto.proto.test.TestAllTypes
	4,   // 64: goproto.proto.test.TestManyMessageFieldsMessage.f28:type_name -> goproto.proto.test.TestAllTypes
	4,   // 65: goproto.proto.test.TestManyMessageFieldsMessage.f29:type_name -> goproto.proto.test.TestAllTypes
	4,   // 66: goproto.proto.test.TestManyMessageFieldsMessage.f30:type_name -> goproto.proto.test.TestAllTypes
	4,   // 67: goproto.proto.test.TestManyMessageFieldsMessage.f31:type_name -> goproto.proto.test.TestAllTypes
	4,   // 68: goproto.proto.test.TestManyMessageFieldsMessage.f32:type_name -> goproto.proto.test.TestAllTypes
	4,   // 69: goproto.proto.test.TestManyMessageFieldsMessage.f33:type_name -> goproto.proto.test.TestAllTypes
	4,   // 70: goproto.proto.test.TestManyMessageFieldsMessage.f34:type_name -> goproto.proto.test.TestAllTypes
	4,   // 71: goproto.proto.test.TestManyMessageFieldsMessage.f35:type_name -> goproto.proto.test.TestAllTypes
	4,   // 72: goproto.proto.test.TestManyMessageFieldsMessage.f36:type_name -> goproto.proto.test.TestAllTypes
	4,   // 73: goproto.proto.test.TestManyMessageFieldsMessage.f37:type_name -> goproto.proto.test.TestAllTypes
	4,   // 74: goproto.proto.test.TestManyMessageFieldsMessage.f38:type_name -> goproto.proto.test.TestAllTypes
	4,   // 75: goproto.proto.test.TestManyMessageFieldsMessage.f39:type_name -> goproto.proto.test.TestAllTypes
	4,   // 76: goproto.proto.test.TestManyMessageFieldsMessage.f40:type_name -> goproto.proto.test.TestAllTypes
	4,   // 77: goproto.proto.test.TestManyMessageFieldsMessage.f41:type_name -> goproto.proto.test.TestAllTypes
	4,   // 78: goproto.proto.test.TestManyMessageFieldsMessage.f42:type_name -> goproto.proto.test.TestAllTypes
	4,   // 79: goproto.proto.test.TestManyMessageFieldsMessage.f43:type_name -> goproto.proto.test.TestAllTypes
	4,   // 80: goproto.proto.test.TestManyMessageFieldsMessage.f44:type_name -> goproto.proto.test.TestAllTypes
	4,   // 81: goproto.proto.test.TestManyMessageFieldsMessage.f45:type_name -> goproto.proto.test.TestAllTypes
	4,   // 82: goproto.proto.test.TestManyMessageFieldsMessage.f46:type_name -> goproto.proto.test.TestAllTypes
	4,   // 83: goproto.proto.test.TestManyMessageFieldsMessage.f47:type_name -> goproto.proto.test.TestAllTypes
	4,   // 84: goproto.proto.test.TestManyMessageFieldsMessage.f48:type_name -> goproto.proto.test.TestAllTypes
	4,   // 85: goproto.proto.test.TestManyMessageFieldsMessage.f49:type_name -> goproto.proto.test.TestAllTypes
	4,   // 86: goproto.proto.test.TestManyMessageFieldsMessage.f50:type_name -> goproto.proto.test.TestAllTypes
	4,   // 87: goproto.proto.test.TestManyMessageFieldsMessage.f51:type_name -> goproto.proto.test.TestAllTypes
	4,   // 88: goproto.proto.test.TestManyMessageFieldsMessage.f52:type_name -> goproto.proto.test.TestAllTypes
	4,   // 89: goproto.proto.test.TestManyMessageFieldsMessage.f53:type_name -> goproto.proto.test.TestAllTypes
	4,   // 90: goproto.proto.test.TestManyMessageFieldsMessage.f54:type_name -> goproto.proto.test.TestAllTypes
	4,   // 91: goproto.proto.test.TestManyMessageFieldsMessage.f55:type_name -> goproto.proto.test.TestAllTypes
	4,   // 92: goproto.proto.test.TestManyMessageFieldsMessage.f56:type_name -> goproto.proto.test.TestAllTypes
	4,   // 93: goproto.proto.test.TestManyMessageFieldsMessage.f57:type_name -> goproto.proto.test.TestAllTypes
	4,   // 94: goproto.proto.test.TestManyMessageFieldsMessage.f58:type_name -> goproto.proto.test.TestAllTypes
	4,   // 95: goproto.proto.test.TestManyMessageFieldsMessage.f59:type_name -> goproto.proto.test.TestAllTypes
	4,   // 96: goproto.proto.test.TestManyMessageFieldsMessage.f60:type_name -> goproto.proto.test.TestAllTypes
	4,   // 97: goproto.proto.test.TestManyMessageFieldsMessage.f61:type_name -> goproto.proto.test.TestAllTypes
	4,   // 98: goproto.proto.test.TestManyMessageFieldsMessage.f62:type_name -> goproto.proto.test.TestAllTypes
	4,   // 99: goproto.proto.test.TestManyMessageFieldsMessage.f63:type_name -> goproto.proto.test.TestAllTypes
	4,   // 100: goproto.proto.test.TestManyMessageFieldsMessage.f64:type_name -> goproto.proto.test.TestAllTypes
	4,   // 101: goproto.proto.test.TestManyMessageFieldsMessage.f65:type_name -> goproto.proto.test.TestAllTypes
	4,   // 102: goproto.proto.test.TestManyMessageFieldsMessage.f66:type_name -> goproto.proto.test.TestAllTypes
	4,   // 103: goproto.proto.test.TestManyMessageFieldsMessage.f67:type_name -> goproto.proto.test.TestAllTypes
	4,   // 104: goproto.proto.test.TestManyMessageFieldsMessage.f68:type_name -> goproto.proto.test.TestAllTypes
	4,   // 105: goproto.proto.test.TestManyMessageFieldsMessage.f69:type_name -> goproto.proto.test.TestAllTypes
	4,   // 106: goproto.proto.test.TestManyMessageFieldsMessage.f70:type_name -> goproto.proto.test.TestAllTypes
	4,   // 107: goproto.proto.test.TestManyMessageFieldsMessage.f71:type_name -> goproto.proto.test.TestAllTypes
	4,   // 108: goproto.proto.test.TestManyMessageFieldsMessage.f72:type_name -> goproto.proto.test.TestAllTypes
	4,   // 109: goproto.proto.test.TestManyMessageFieldsMessage.f73:type_name -> goproto.proto.test.TestAllTypes
	4,   // 110: goproto.proto.test.TestManyMessageFieldsMessage.f74:type_name -> goproto.proto.test.TestAllTypes
	4,   // 111: goproto.proto.test.TestManyMessageFieldsMessage.f75:type_name -> goproto.proto.test.TestAllTypes
	4,   // 112: goproto.proto.test.TestManyMessageFieldsMessage.f76:type_name -> goproto.proto.test.TestAllTypes
	4,   // 113: goproto.proto.test.TestManyMessageFieldsMessage.f77:type_name -> goproto.proto.test.TestAllTypes
	4,   // 114: goproto.proto.test.TestManyMessageFieldsMessage.f78:type_name -> goproto.proto.test.TestAllTypes
	4,   // 115: goproto.proto.test.TestManyMessageFieldsMessage.f79:type_name -> goproto.proto.test.TestAllTypes
	4,   // 116: goproto.proto.test.TestManyMessageFieldsMessage.f80:type_name -> goproto.proto.test.TestAllTypes
	4,   // 117: goproto.proto.test.TestManyMessageFieldsMessage.f81:type_name -> goproto.proto.test.TestAllTypes
	4,   // 118: goproto.proto.test.TestManyMessageFieldsMessage.f82:type_name -> goproto.proto.test.TestAllTypes
	4,   // 119: goproto.proto.test.TestManyMessageFieldsMessage.f83:type_name -> goproto.proto.test.TestAllTypes
	4,   // 120: goproto.proto.test.TestManyMessageFieldsMessage.f84:type_name -> goproto.proto.test.TestAllTypes
	4,   // 121: goproto.proto.test.TestManyMessageFieldsMessage.f85:type_name -> goproto.proto.test.TestAllTypes
	4,   // 122: goproto.proto.test.TestManyMessageFieldsMessage.f86:type_name -> goproto.proto.test.TestAllTypes
	4,   // 123: goproto.proto.test.TestManyMessageFieldsMessage.f87:type_name -> goproto.proto.test.TestAllTypes
	4,   // 124: goproto.proto.test.TestManyMessageFieldsMessage.f88:type_name -> goproto.proto.test.TestAllTypes
	4,   // 125: goproto.proto.test.TestManyMessageFieldsMessage.f89:type_name -> goproto.proto.test.TestAllTypes
	4,   // 126: goproto.proto.test.TestManyMessageFieldsMessage.f90:type_name -> goproto.proto.test.TestAllTypes
	4,   // 127: goproto.proto.test.TestManyMessageFieldsMessage.f91:type_name -> goproto.proto.test.TestAllTypes
	4,   // 128: goproto.proto.test.TestManyMessageFieldsMessage.f92:type_name -> goproto.proto.test.TestAllTypes
	4,   // 129: goproto.proto.test.TestManyMessageFieldsMessage.f93:type_name -> goproto.proto.test.TestAllTypes
	4,   // 130: goproto.proto.test.TestManyMessageFieldsMessage.f94:type_name -> goproto.proto.test.TestAllTypes
	4,   // 131: goproto.proto.test.TestManyMessageFieldsMessage.f95:type_name -> goproto.proto.test.TestAllTypes
	4,   // 132: goproto.proto.test.TestManyMessageFieldsMessage.f96:type_name -> goproto.proto.test.TestAllTypes
	4,   // 133: goproto.proto.test.TestManyMessageFieldsMessage.f97:type_name -> goproto.proto.test.TestAllTypes
	4,   // 134: goproto.proto.test.TestManyMessageFieldsMessage.f98:type_name -> goproto.proto.test.TestAllTypes
	4,   // 135: goproto.proto.test.TestManyMessageFieldsMessage.f99:type_name -> goproto.proto.test.TestAllTypes
	4,   // 136: goproto.proto.test.TestManyMessageFieldsMessage.f100:type_name -> goproto.proto.test.TestAllTypes
	54,  // 137: goproto.proto.test.TestOneofWithRequired.oneof_required:type_name -> goproto.proto.testrequired.Message
	48,  // 138: goproto.proto.test.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
	48,  // 139: goproto.proto.test.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
	14,  // 140: goproto.proto.test.TestRequiredForeign.optional_message:type_name -> goproto.proto.test.TestRequired
	14,  // 141: goproto.proto.test.TestRequiredForeign.repeated_message:type_name -> goproto.proto.test.TestRequired
	49,  // 142: goproto.proto.test.TestRequiredForeign.map_message:type_name -> goproto.proto.test.TestRequiredForeign.MapMessageEntry
	14,  // 143: goproto.proto.test.TestRequiredForeign.oneof_message:type_name -> goproto.proto.test.TestRequired
	50,  // 144: goproto.proto.test.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.OptionalGroup
	51,  // 145: goproto.proto.test.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
	14,  // 146: goproto.proto.test.TestRequiredLazy.optional_lazy_message:type_name -> goproto.proto.test.TestRequired
	0,   // 147: goproto.proto.test.TestPackedTypes.packed_enum:type_name -> goproto.proto.test.ForeignEnum
	0,   // 148: goproto.proto.test.TestUnpackedTypes.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
	55,  // 149: goproto.proto.test.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
	55,  // 150: goproto.proto.test.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
	55,  // 151: goproto.proto.test.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
	55,  // 152: goproto.proto.test.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
	55,  // 153: goproto.proto.test.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
	55,  // 154: goproto.proto.test.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
	55,  // 155: goproto.proto.test.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
	55,  // 156: goproto.proto.test.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
	4,   // 157: goproto.proto.test.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllTypes
	27,  // 158: goproto.proto.test.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	27,  // 159: goproto.proto.test.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	27,  // 160: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	2,   // 161: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	10,  // 162: goproto.proto.test.TestAllExtensions.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllExtensions
	14,  // 163: goproto.proto.test.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.test.TestRequired
	10,  // 164: goproto.proto.test.optional_int32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 165: goproto.proto.test.optional_int64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 166: goproto.proto.test.optional_uint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 167: goproto.proto.test.optional_uint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 168: goproto.proto.test.optional_sint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 169: goproto.proto.test.optional_sint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 170: goproto.proto.test.optional_fixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 171: goproto.proto.test.optional_fixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 172: goproto.proto.test.optional_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 173: goproto.proto.test.optional_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 174: goproto.proto.test.optional_float:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 175: goproto.proto.test.optional_double:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 176: goproto.proto.test.optional_bool:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 177: goproto.proto.test.optional_string:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 178: goproto.proto.test.optional_bytes:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 179: goproto.proto.test.optionalgroup:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 180: goproto.proto.test.optional_nested_message:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 181: goproto.proto.test.optional_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 182: goproto.proto.test.repeated_int32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 183: goproto.proto.test.repeated_int64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 184: goproto.proto.test.repeated_uint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 185: goproto.proto.test.repeated_uint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 186: goproto.proto.test.repeated_sint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 187: goproto.proto.test.repeated_sint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 188: goproto.proto.test.repeated_fixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 189: goproto.proto.test.repeated_fixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 190: goproto.proto.test.repeated_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 191: goproto.proto.test.repeated_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 192: goproto.proto.test.repeated_float:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 193: goproto.proto.test.repeated_double:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 194: goproto.proto.test.repeated_bool:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 195: goproto.proto.test.repeated_string:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 196: goproto.proto.test.repeated_bytes:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 197: goproto.proto.test.repeatedgroup:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 198: goproto.proto.test.repeated_nested_message:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 199: goproto.proto.test.repeated_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 200: goproto.proto.test.default_int32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 201: goproto.proto.test.default_int64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 202: goproto.proto.test.default_uint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 203: goproto.proto.test.default_uint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 204: goproto.proto.test.default_sint32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 205: goproto.proto.test.default_sint64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 206: goproto.proto.test.default_fixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 207: goproto.proto.test.default_fixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 208: goproto.proto.test.default_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 209: goproto.proto.test.default_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 210: goproto.proto.test.default_float:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 211: goproto.proto.test.default_double:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 212: goproto.proto.test.default_bool:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 213: goproto.proto.test.default_string:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 214: goproto.proto.test.default_bytes:extendee -> goproto.proto.test.TestAllExtensions
	21,  // 215: goproto.proto.test.packed_int32:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 216: goproto.proto.test.packed_int64:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 217: goproto.proto.test.packed_uint32:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 218: goproto.proto.test.packed_uint64:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 219: goproto.proto.test.packed_sint32:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 220: goproto.proto.test.packed_sint64:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 221: goproto.proto.test.packed_fixed32:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 222: goproto.proto.test.packed_fixed64:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 223: goproto.proto.test.packed_sfixed32:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 224: goproto.proto.test.packed_sfixed64:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 225: goproto.proto.test.packed_float:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 226: goproto.proto.test.packed_double:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 227: goproto.proto.test.packed_bool:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 228: goproto.proto.test.packed_enum:extendee -> goproto.proto.test.TestPackedExtensions
	22,  // 229: goproto.proto.test.unpacked_int32:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 230: goproto.proto.test.unpacked_int64:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 231: goproto.proto.test.unpacked_uint32:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 232: goproto.proto.test.unpacked_uint64:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 233: goproto.proto.test.unpacked_sint32:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 234: goproto.proto.test.unpacked_sint64:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 235: goproto.proto.test.unpacked_fixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 236: goproto.proto.test.unpacked_fixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 237: goproto.proto.test.unpacked_sfixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 238: goproto.proto.test.unpacked_sfixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 239: goproto.proto.test.unpacked_float:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 240: goproto.proto.test.unpacked_double:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 241: goproto.proto.test.unpacked_bool:extendee -> goproto.proto.test.TestUnpackedExtensions
	22,  // 242: goproto.proto.test.unpacked_enum:extendee -> goproto.proto.test.TestUnpackedExtensions
	10,  // 243: goproto.proto.test.TestNestedExtension.nested_string_extension:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 244: goproto.proto.test.TestRequired.single:extendee -> goproto.proto.test.TestAllExtensions
	10,  // 245: goproto.proto.test.TestRequired.multi:extendee -> goproto.proto.test.TestAllExtensions
	11,  // 246: goproto.proto.test.optionalgroup:type_name -> goproto.proto.test.OptionalGroup
	48,  // 247: goproto.proto.test.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
	2,   // 248: goproto.proto.test.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	12,  // 249: goproto.proto.test.repeatedgroup:type_name -> goproto.proto.test.RepeatedGroup
	48,  // 250: goproto.proto.test.repeated_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
	2,   // 251: goproto.proto.test.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
	0,   // 252: goproto.proto.test.packed_enum:type_name -> goproto.proto.test.ForeignEnum
	0,   // 253: goproto.proto.test.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
	14,  // 254: goproto.proto.test.TestRequired.single:type_name -> goproto.proto.test.TestRequired
	14,  // 255: goproto.proto.test.TestRequired.multi:type_name -> goproto.proto.test.TestRequired
	23,  // 256: goproto.proto.test.TestService.Foo:input_type -> goproto.proto.test.FooRequest
	23,  // 257: goproto.proto.test.TestService.TestStream:input_type -> goproto.proto.test.FooRequest
	6,   // 258: goproto.proto.test.TestDeprecatedService.Deprecated:input_type -> goproto.proto.test.TestDeprecatedMessage
	24,  // 259: goproto.proto.test.TestService.Foo:output_type -> goproto.proto.test.FooResponse
	24,  // 260: goproto.proto.test.TestService.TestStream:output_type -> goproto.proto.test.FooResponse
	6,   // 261: goproto.proto.test.TestDeprecatedService.Deprecated:output_type -> goproto.proto.test.TestDeprecatedMessage
	259, // [259:262] is the sub-list for method output_type
	256, // [256:259] is the sub-list for method input_type
	246, // [246:256] is the sub-list for extension type_name
	164, // [164:246] is the sub-list for extension extendee
	0,   // [0:164] is the sub-list for field type_name
}

func init() { file_internal_testprotos_test_test_proto_init() }
func file_internal_testprotos_test_test_proto_init() {
	if File_internal_testprotos_test_test_proto != nil {
		return
	}
	file_internal_testprotos_test_test_public_proto_init()
	file_internal_testprotos_test_test_import_proto_init()
	file_internal_testprotos_test_test_proto_msgTypes[0].OneofWrappers = []any{
		(*TestAllTypes_OneofUint32)(nil),
		(*TestAllTypes_OneofNestedMessage)(nil),
		(*TestAllTypes_OneofString)(nil),
		(*TestAllTypes_OneofBytes)(nil),
		(*TestAllTypes_OneofBool)(nil),
		(*TestAllTypes_OneofUint64)(nil),
		(*TestAllTypes_OneofFloat)(nil),
		(*TestAllTypes_OneofDouble)(nil),
		(*TestAllTypes_OneofEnum)(nil),
		(*TestAllTypes_Oneofgroup)(nil),
		(*TestAllTypes_OneofOptionalUint32)(nil),
	}
	file_internal_testprotos_test_test_proto_msgTypes[2].OneofWrappers = []any{
		(*TestDeprecatedMessage_DeprecatedOneofField)(nil),
	}
	file_internal_testprotos_test_test_proto_msgTypes[3].OneofWrappers = []any{
		(*TestOneofWithRequired_OneofUint32)(nil),
		(*TestOneofWithRequired_OneofRequired)(nil),
	}
	file_internal_testprotos_test_test_proto_msgTypes[11].OneofWrappers = []any{
		(*TestRequiredForeign_OneofMessage)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: []byte(file_internal_testprotos_test_test_proto_rawDesc),
			NumEnums:      4,
			NumMessages:   48,
			NumExtensions: 82,
			NumServices:   2,
		},
		GoTypes:           file_internal_testprotos_test_test_proto_goTypes,
		DependencyIndexes: file_internal_testprotos_test_test_proto_depIdxs,
		EnumInfos:         file_internal_testprotos_test_test_proto_enumTypes,
		MessageInfos:      file_internal_testprotos_test_test_proto_msgTypes,
		ExtensionInfos:    file_internal_testprotos_test_test_proto_extTypes,
	}.Build()
	File_internal_testprotos_test_test_proto = out.File
	file_internal_testprotos_test_test_proto_goTypes = nil
	file_internal_testprotos_test_test_proto_depIdxs = nil
}
