// 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"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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() *TestRequired {
	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 *TestRequired `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 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[14]
	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[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 TestPackedTypes.ProtoReflect.Descriptor instead.
func (*TestPackedTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
}

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[15]
	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[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 TestUnpackedTypes.ProtoReflect.Descriptor instead.
func (*TestUnpackedTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
}

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[16]
	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[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 TestPackedExtensions.ProtoReflect.Descriptor instead.
func (*TestPackedExtensions) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{16}
}

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[17]
	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[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 TestUnpackedExtensions.ProtoReflect.Descriptor instead.
func (*TestUnpackedExtensions) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{17}
}

// 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[18]
	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[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 FooRequest.ProtoReflect.Descriptor instead.
func (*FooRequest) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{18}
}

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[19]
	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[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 FooResponse.ProtoReflect.Descriptor instead.
func (*FooResponse) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{19}
}

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[20]
	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[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 WeirdDefault.ProtoReflect.Descriptor instead.
func (*WeirdDefault) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{20}
}

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[21]
	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[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 RemoteDefault.ProtoReflect.Descriptor instead.
func (*RemoteDefault) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{21}
}

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[22]
	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[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 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[23]
	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[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_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[24]
	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[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_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[42]
	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[42]
	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[43]
	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[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 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[45]
	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[45]
	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[46]
	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[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_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\x12\x12goproto.proto.test\x1a*internal/testprotos/test/test_public.proto\x1a%internal/testprotos/enums/enums.proto\x1a*internal/testprotos/test/test_import.proto\"\x9a;\n" +
	"\fTestAllTypes\x12%\n" +
	"\x0eoptional_int32\x18\x01 \x01(\x05R\roptionalInt32\x12%\n" +
	"\x0eoptional_int64\x18\x02 \x01(\x03R\roptionalInt64\x12'\n" +
	"\x0foptional_uint32\x18\x03 \x01(\rR\x0eoptionalUint32\x12'\n" +
	"\x0foptional_uint64\x18\x04 \x01(\x04R\x0eoptionalUint64\x12'\n" +
	"\x0foptional_sint32\x18\x05 \x01(\x11R\x0eoptionalSint32\x12'\n" +
	"\x0foptional_sint64\x18\x06 \x01(\x12R\x0eoptionalSint64\x12)\n" +
	"\x10optional_fixed32\x18\a \x01(\aR\x0foptionalFixed32\x12)\n" +
	"\x10optional_fixed64\x18\b \x01(\x06R\x0foptionalFixed64\x12+\n" +
	"\x11optional_sfixed32\x18\t \x01(\x0fR\x10optionalSfixed32\x12+\n" +
	"\x11optional_sfixed64\x18\n" +
	" \x01(\x10R\x10optionalSfixed64\x12%\n" +
	"\x0eoptional_float\x18\v \x01(\x02R\roptionalFloat\x12'\n" +
	"\x0foptional_double\x18\f \x01(\x01R\x0eoptionalDouble\x12#\n" +
	"\roptional_bool\x18\r \x01(\bR\foptionalBool\x12'\n" +
	"\x0foptional_string\x18\x0e \x01(\tR\x0eoptionalString\x12%\n" +
	"\x0eoptional_bytes\x18\x0f \x01(\fR\roptionalBytes\x12T\n" +
	"\roptionalgroup\x18\x10 \x01(\n" +
	"2..goproto.proto.test.TestAllTypes.OptionalGroupR\roptionalgroup\x12f\n" +
	"\x17optional_nested_message\x18\x12 \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageR\x15optionalNestedMessage\x12\\\n" +
	"\x18optional_foreign_message\x18\x13 \x01(\v2\".goproto.proto.test.ForeignMessageR\x16optionalForeignMessage\x12Y\n" +
	"\x17optional_import_message\x18\x14 \x01(\v2!.goproto.proto.test.ImportMessageR\x15optionalImportMessage\x12]\n" +
	"\x14optional_nested_enum\x18\x15 \x01(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumR\x12optionalNestedEnum\x12S\n" +
	"\x15optional_foreign_enum\x18\x16 \x01(\x0e2\x1f.goproto.proto.test.ForeignEnumR\x13optionalForeignEnum\x12P\n" +
	"\x14optional_import_enum\x18\x17 \x01(\x0e2\x1e.goproto.proto.test.ImportEnumR\x12optionalImportEnum\x12s\n" +
	"\x1coptional_lazy_nested_message\x18\x18 \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageB\x02(\x01R\x19optionalLazyNestedMessage\x12%\n" +
	"\x0erepeated_int32\x18\x1f \x03(\x05R\rrepeatedInt32\x12%\n" +
	"\x0erepeated_int64\x18  \x03(\x03R\rrepeatedInt64\x12'\n" +
	"\x0frepeated_uint32\x18! \x03(\rR\x0erepeatedUint32\x12'\n" +
	"\x0frepeated_uint64\x18\" \x03(\x04R\x0erepeatedUint64\x12'\n" +
	"\x0frepeated_sint32\x18# \x03(\x11R\x0erepeatedSint32\x12'\n" +
	"\x0frepeated_sint64\x18$ \x03(\x12R\x0erepeatedSint64\x12)\n" +
	"\x10repeated_fixed32\x18% \x03(\aR\x0frepeatedFixed32\x12)\n" +
	"\x10repeated_fixed64\x18& \x03(\x06R\x0frepeatedFixed64\x12+\n" +
	"\x11repeated_sfixed32\x18' \x03(\x0fR\x10repeatedSfixed32\x12+\n" +
	"\x11repeated_sfixed64\x18( \x03(\x10R\x10repeatedSfixed64\x12%\n" +
	"\x0erepeated_float\x18) \x03(\x02R\rrepeatedFloat\x12'\n" +
	"\x0frepeated_double\x18* \x03(\x01R\x0erepeatedDouble\x12#\n" +
	"\rrepeated_bool\x18+ \x03(\bR\frepeatedBool\x12'\n" +
	"\x0frepeated_string\x18, \x03(\tR\x0erepeatedString\x12%\n" +
	"\x0erepeated_bytes\x18- \x03(\fR\rrepeatedBytes\x12T\n" +
	"\rrepeatedgroup\x18. \x03(\n" +
	"2..goproto.proto.test.TestAllTypes.RepeatedGroupR\rrepeatedgroup\x12f\n" +
	"\x17repeated_nested_message\x180 \x03(\v2..goproto.proto.test.TestAllTypes.NestedMessageR\x15repeatedNestedMessage\x12\\\n" +
	"\x18repeated_foreign_message\x181 \x03(\v2\".goproto.proto.test.ForeignMessageR\x16repeatedForeignMessage\x12X\n" +
	"\x16repeated_importmessage\x182 \x03(\v2!.goproto.proto.test.ImportMessageR\x15repeatedImportmessage\x12]\n" +
	"\x14repeated_nested_enum\x183 \x03(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumR\x12repeatedNestedEnum\x12S\n" +
	"\x15repeated_foreign_enum\x184 \x03(\x0e2\x1f.goproto.proto.test.ForeignEnumR\x13repeatedForeignEnum\x12O\n" +
	"\x13repeated_importenum\x185 \x03(\x0e2\x1e.goproto.proto.test.ImportEnumR\x12repeatedImportenum\x12[\n" +
	"\x0fmap_int32_int32\x188 \x03(\v23.goproto.proto.test.TestAllTypes.MapInt32Int32EntryR\rmapInt32Int32\x12[\n" +
	"\x0fmap_int64_int64\x189 \x03(\v23.goproto.proto.test.TestAllTypes.MapInt64Int64EntryR\rmapInt64Int64\x12a\n" +
	"\x11map_uint32_uint32\x18: \x03(\v25.goproto.proto.test.TestAllTypes.MapUint32Uint32EntryR\x0fmapUint32Uint32\x12a\n" +
	"\x11map_uint64_uint64\x18; \x03(\v25.goproto.proto.test.TestAllTypes.MapUint64Uint64EntryR\x0fmapUint64Uint64\x12a\n" +
	"\x11map_sint32_sint32\x18< \x03(\v25.goproto.proto.test.TestAllTypes.MapSint32Sint32EntryR\x0fmapSint32Sint32\x12a\n" +
	"\x11map_sint64_sint64\x18= \x03(\v25.goproto.proto.test.TestAllTypes.MapSint64Sint64EntryR\x0fmapSint64Sint64\x12g\n" +
	"\x13map_fixed32_fixed32\x18> \x03(\v27.goproto.proto.test.TestAllTypes.MapFixed32Fixed32EntryR\x11mapFixed32Fixed32\x12g\n" +
	"\x13map_fixed64_fixed64\x18? \x03(\v27.goproto.proto.test.TestAllTypes.MapFixed64Fixed64EntryR\x11mapFixed64Fixed64\x12m\n" +
	"\x15map_sfixed32_sfixed32\x18@ \x03(\v29.goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32EntryR\x13mapSfixed32Sfixed32\x12m\n" +
	"\x15map_sfixed64_sfixed64\x18A \x03(\v29.goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12[\n" +
	"\x0fmap_int32_float\x18B \x03(\v23.goproto.proto.test.TestAllTypes.MapInt32FloatEntryR\rmapInt32Float\x12^\n" +
	"\x10map_int32_double\x18C \x03(\v24.goproto.proto.test.TestAllTypes.MapInt32DoubleEntryR\x0emapInt32Double\x12U\n" +
	"\rmap_bool_bool\x18D \x03(\v21.goproto.proto.test.TestAllTypes.MapBoolBoolEntryR\vmapBoolBool\x12a\n" +
	"\x11map_string_string\x18E \x03(\v25.goproto.proto.test.TestAllTypes.MapStringStringEntryR\x0fmapStringString\x12^\n" +
	"\x10map_string_bytes\x18F \x03(\v24.goproto.proto.test.TestAllTypes.MapStringBytesEntryR\x0emapStringBytes\x12w\n" +
	"\x19map_string_nested_message\x18G \x03(\v2<.goproto.proto.test.TestAllTypes.MapStringNestedMessageEntryR\x16mapStringNestedMessage\x12n\n" +
	"\x16map_string_nested_enum\x18I \x03(\v29.goproto.proto.test.TestAllTypes.MapStringNestedEnumEntryR\x13mapStringNestedEnum\x12'\n" +
	"\rdefault_int32\x18Q \x01(\x05:\x0281R\fdefaultInt32\x12'\n" +
	"\rdefault_int64\x18R \x01(\x03:\x0282R\fdefaultInt64\x12)\n" +
	"\x0edefault_uint32\x18S \x01(\r:\x0283R\rdefaultUint32\x12)\n" +
	"\x0edefault_uint64\x18T \x01(\x04:\x0284R\rdefaultUint64\x12*\n" +
	"\x0edefault_sint32\x18U \x01(\x11:\x03-85R\rdefaultSint32\x12)\n" +
	"\x0edefault_sint64\x18V \x01(\x12:\x0286R\rdefaultSint64\x12+\n" +
	"\x0fdefault_fixed32\x18W \x01(\a:\x0287R\x0edefaultFixed32\x12+\n" +
	"\x0fdefault_fixed64\x18X \x01(\x06:\x0288R\x0edefaultFixed64\x12-\n" +
	"\x10default_sfixed32\x18Y \x01(\x0f:\x0289R\x0fdefaultSfixed32\x12.\n" +
	"\x10default_sfixed64\x18P \x01(\x10:\x03-90R\x0fdefaultSfixed64\x12)\n" +
	"\rdefault_float\x18[ \x01(\x02:\x0491.5R\fdefaultFloat\x12,\n" +
	"\x0edefault_double\x18\\ \x01(\x01:\x0592000R\rdefaultDouble\x12'\n" +
	"\fdefault_bool\x18] \x01(\b:\x04trueR\vdefaultBool\x12,\n" +
	"\x0edefault_string\x18^ \x01(\t:\x05helloR\rdefaultString\x12*\n" +
	"\rdefault_bytes\x18_ \x01(\f:\x05worldR\fdefaultBytes\x12`\n" +
	"\x13default_nested_enum\x18` \x01(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnum:\x03BARR\x11defaultNestedEnum\x12^\n" +
	"\x14default_foreign_enum\x18a \x01(\x0e2\x1f.goproto.proto.test.ForeignEnum:\vFOREIGN_BARR\x12defaultForeignEnum\x12#\n" +
	"\foneof_uint32\x18o \x01(\rH\x00R\voneofUint32\x12b\n" +
	"\x14oneof_nested_message\x18p \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageH\x00R\x12oneofNestedMessage\x12#\n" +
	"\foneof_string\x18q \x01(\tH\x00R\voneofString\x12!\n" +
	"\voneof_bytes\x18r \x01(\fH\x00R\n" +
	"oneofBytes\x12\x1f\n" +
	"\n" +
	"oneof_bool\x18s \x01(\bH\x00R\toneofBool\x12#\n" +
	"\foneof_uint64\x18t \x01(\x04H\x00R\voneofUint64\x12!\n" +
	"\voneof_float\x18u \x01(\x02H\x00R\n" +
	"oneofFloat\x12#\n" +
	"\foneof_double\x18v \x01(\x01H\x00R\voneofDouble\x12L\n" +
	"\n" +
	"oneof_enum\x18w \x01(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumH\x00R\toneofEnum\x12M\n" +
	"\n" +
	"oneofgroup\x18y \x01(\n" +
	"2+.goproto.proto.test.TestAllTypes.OneofGroupH\x00R\n" +
	"oneofgroup\x124\n" +
	"\x15oneof_optional_uint32\x18x \x01(\rH\x01R\x13oneofOptionalUint32\x1aa\n" +
	"\rNestedMessage\x12\f\n" +
	"\x01a\x18\x01 \x01(\x05R\x01a\x12B\n" +
	"\vcorecursive\x18\x02 \x01(\v2 .goproto.proto.test.TestAllTypesR\vcorecursive\x1a\xb2\x01\n" +
	"\rOptionalGroup\x12\f\n" +
	"\x01a\x18\x11 \x01(\x05R\x01a\x12g\n" +
	"\x17optional_nested_message\x18\xe8\a \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageR\x15optionalNestedMessage\x12*\n" +
	"\x11same_field_number\x18\x10 \x01(\x05R\x0fsameFieldNumber\x1a\x86\x01\n" +
	"\rRepeatedGroup\x12\f\n" +
	"\x01a\x18/ \x01(\x05R\x01a\x12g\n" +
	"\x17optional_nested_message\x18\xe9\a \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageR\x15optionalNestedMessage\x1a@\n" +
	"\x12MapInt32Int32Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a@\n" +
	"\x12MapInt64Int64Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x03R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01\x1aB\n" +
	"\x14MapUint32Uint32Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1aB\n" +
	"\x14MapUint64Uint64Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x04R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x04R\x05value:\x028\x01\x1aB\n" +
	"\x14MapSint32Sint32Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x11R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x11R\x05value:\x028\x01\x1aB\n" +
	"\x14MapSint64Sint64Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x12R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x12R\x05value:\x028\x01\x1aD\n" +
	"\x16MapFixed32Fixed32Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\aR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\aR\x05value:\x028\x01\x1aD\n" +
	"\x16MapFixed64Fixed64Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x06R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x06R\x05value:\x028\x01\x1aF\n" +
	"\x18MapSfixed32Sfixed32Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x0fR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x0fR\x05value:\x028\x01\x1aF\n" +
	"\x18MapSfixed64Sfixed64Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x10R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x10R\x05value:\x028\x01\x1a@\n" +
	"\x12MapInt32FloatEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\x1aA\n" +
	"\x13MapInt32DoubleEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a>\n" +
	"\x10MapBoolBoolEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\bR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1aB\n" +
	"\x14MapStringStringEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aA\n" +
	"\x13MapStringBytesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\fR\x05value:\x028\x01\x1ay\n" +
	"\x1bMapStringNestedMessageEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12D\n" +
	"\x05value\x18\x02 \x01(\v2..goproto.proto.test.TestAllTypes.NestedMessageR\x05value:\x028\x01\x1as\n" +
	"\x18MapStringNestedEnumEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12A\n" +
	"\x05value\x18\x02 \x01(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumR\x05value:\x028\x01\x1a(\n" +
	"\n" +
	"OneofGroup\x12\f\n" +
	"\x01a\x18\x01 \x01(\x05R\x01a\x12\f\n" +
	"\x01b\x18\x02 \x01(\x05R\x01b\"9\n" +
	"\n" +
	"NestedEnum\x12\a\n" +
	"\x03FOO\x10\x00\x12\a\n" +
	"\x03BAR\x10\x01\x12\a\n" +
	"\x03BAZ\x10\x02\x12\x10\n" +
	"\x03NEG\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01B\r\n" +
	"\voneof_fieldB\x10\n" +
	"\x0eoneof_optional\"\xde(\n" +
	"\x1cTestManyMessageFieldsMessage\x120\n" +
	"\x02f1\x18\x01 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f1\x120\n" +
	"\x02f2\x18\x02 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f2\x120\n" +
	"\x02f3\x18\x03 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f3\x120\n" +
	"\x02f4\x18\x04 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f4\x120\n" +
	"\x02f5\x18\x05 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f5\x120\n" +
	"\x02f6\x18\x06 \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f6\x120\n" +
	"\x02f7\x18\a \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f7\x120\n" +
	"\x02f8\x18\b \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f8\x120\n" +
	"\x02f9\x18\t \x01(\v2 .goproto.proto.test.TestAllTypesR\x02f9\x122\n" +
	"\x03f10\x18\n" +
	" \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f10\x122\n" +
	"\x03f11\x18\v \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f11\x122\n" +
	"\x03f12\x18\f \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f12\x122\n" +
	"\x03f13\x18\r \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f13\x122\n" +
	"\x03f14\x18\x0e \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f14\x122\n" +
	"\x03f15\x18\x0f \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f15\x122\n" +
	"\x03f16\x18\x10 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f16\x122\n" +
	"\x03f17\x18\x11 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f17\x122\n" +
	"\x03f18\x18\x12 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f18\x122\n" +
	"\x03f19\x18\x13 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f19\x122\n" +
	"\x03f20\x18\x14 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f20\x122\n" +
	"\x03f21\x18\x15 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f21\x122\n" +
	"\x03f22\x18\x16 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f22\x122\n" +
	"\x03f23\x18\x17 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f23\x122\n" +
	"\x03f24\x18\x18 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f24\x122\n" +
	"\x03f25\x18\x19 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f25\x122\n" +
	"\x03f26\x18\x1a \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f26\x122\n" +
	"\x03f27\x18\x1b \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f27\x122\n" +
	"\x03f28\x18\x1c \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f28\x122\n" +
	"\x03f29\x18\x1d \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f29\x122\n" +
	"\x03f30\x18\x1e \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f30\x122\n" +
	"\x03f31\x18\x1f \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f31\x122\n" +
	"\x03f32\x18  \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f32\x122\n" +
	"\x03f33\x18! \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f33\x122\n" +
	"\x03f34\x18\" \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f34\x122\n" +
	"\x03f35\x18# \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f35\x122\n" +
	"\x03f36\x18$ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f36\x122\n" +
	"\x03f37\x18% \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f37\x122\n" +
	"\x03f38\x18& \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f38\x122\n" +
	"\x03f39\x18' \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f39\x122\n" +
	"\x03f40\x18( \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f40\x122\n" +
	"\x03f41\x18) \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f41\x122\n" +
	"\x03f42\x18* \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f42\x122\n" +
	"\x03f43\x18+ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f43\x122\n" +
	"\x03f44\x18, \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f44\x122\n" +
	"\x03f45\x18- \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f45\x122\n" +
	"\x03f46\x18. \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f46\x122\n" +
	"\x03f47\x18/ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f47\x122\n" +
	"\x03f48\x180 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f48\x122\n" +
	"\x03f49\x181 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f49\x122\n" +
	"\x03f50\x182 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f50\x122\n" +
	"\x03f51\x183 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f51\x122\n" +
	"\x03f52\x184 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f52\x122\n" +
	"\x03f53\x185 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f53\x122\n" +
	"\x03f54\x186 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f54\x122\n" +
	"\x03f55\x187 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f55\x122\n" +
	"\x03f56\x188 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f56\x122\n" +
	"\x03f57\x189 \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f57\x122\n" +
	"\x03f58\x18: \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f58\x122\n" +
	"\x03f59\x18; \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f59\x122\n" +
	"\x03f60\x18< \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f60\x122\n" +
	"\x03f61\x18= \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f61\x122\n" +
	"\x03f62\x18> \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f62\x122\n" +
	"\x03f63\x18? \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f63\x122\n" +
	"\x03f64\x18@ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f64\x122\n" +
	"\x03f65\x18A \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f65\x122\n" +
	"\x03f66\x18B \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f66\x122\n" +
	"\x03f67\x18C \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f67\x122\n" +
	"\x03f68\x18D \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f68\x122\n" +
	"\x03f69\x18E \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f69\x122\n" +
	"\x03f70\x18F \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f70\x122\n" +
	"\x03f71\x18G \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f71\x122\n" +
	"\x03f72\x18H \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f72\x122\n" +
	"\x03f73\x18I \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f73\x122\n" +
	"\x03f74\x18J \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f74\x122\n" +
	"\x03f75\x18K \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f75\x122\n" +
	"\x03f76\x18L \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f76\x122\n" +
	"\x03f77\x18M \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f77\x122\n" +
	"\x03f78\x18N \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f78\x122\n" +
	"\x03f79\x18O \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f79\x122\n" +
	"\x03f80\x18P \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f80\x122\n" +
	"\x03f81\x18Q \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f81\x122\n" +
	"\x03f82\x18R \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f82\x122\n" +
	"\x03f83\x18S \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f83\x122\n" +
	"\x03f84\x18T \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f84\x122\n" +
	"\x03f85\x18U \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f85\x122\n" +
	"\x03f86\x18V \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f86\x122\n" +
	"\x03f87\x18W \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f87\x122\n" +
	"\x03f88\x18X \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f88\x122\n" +
	"\x03f89\x18Y \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f89\x122\n" +
	"\x03f90\x18Z \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f90\x122\n" +
	"\x03f91\x18[ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f91\x122\n" +
	"\x03f92\x18\\ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f92\x122\n" +
	"\x03f93\x18] \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f93\x122\n" +
	"\x03f94\x18^ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f94\x122\n" +
	"\x03f95\x18_ \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f95\x122\n" +
	"\x03f96\x18` \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f96\x122\n" +
	"\x03f97\x18a \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f97\x122\n" +
	"\x03f98\x18b \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f98\x122\n" +
	"\x03f99\x18c \x01(\v2 .goproto.proto.test.TestAllTypesR\x03f99\x124\n" +
	"\x04f100\x18d \x01(\v2 .goproto.proto.test.TestAllTypesR\x04f100\"\xc4\x01\n" +
	"\x15TestDeprecatedMessage\x12-\n" +
	"\x10deprecated_int32\x18\x01 \x01(\x05B\x02\x18\x01R\x0fdeprecatedInt32\x12:\n" +
	"\x16deprecated_oneof_field\x18\x02 \x01(\x05B\x02\x18\x01H\x00R\x14deprecatedOneofField\"(\n" +
	"\x0eDeprecatedEnum\x12\x12\n" +
	"\n" +
	"DEPRECATED\x10\x00\x1a\x02\b\x01\x1a\x02\x18\x01:\x02\x18\x01B\x12\n" +
	"\x10deprecated_oneof\"\x96\x01\n" +
	"\x15TestOneofWithRequired\x12#\n" +
	"\foneof_uint32\x18\x01 \x01(\rH\x00R\voneofUint32\x12I\n" +
	"\x0eoneof_required\x18\x02 \x01(\v2 .goproto.proto.test.TestRequiredH\x00R\roneofRequiredB\r\n" +
	"\voneof_field\",\n" +
	"\x0eForeignMessage\x12\f\n" +
	"\x01c\x18\x01 \x01(\x05R\x01c\x12\f\n" +
	"\x01d\x18\x02 \x01(\x05R\x01d\"0\n" +
	"\x12TestReservedFieldsJ\x04\b\x02\x10\x03J\x04\b\x0f\x10\x10J\x04\b\t\x10\fR\x03barR\x03baz\"\x85\x01\n" +
	"\x11TestAllExtensions\x1af\n" +
	"\rNestedMessage\x12\f\n" +
	"\x01a\x18\x01 \x01(\x05R\x01a\x12G\n" +
	"\vcorecursive\x18\x02 \x01(\v2%.goproto.proto.test.TestAllExtensionsR\vcorecursive*\b\b\x01\x10\x80\x80\x80\x80\x02\"\xb7\x01\n" +
	"\rOptionalGroup\x12\f\n" +
	"\x01a\x18\x11 \x01(\x05R\x01a\x12*\n" +
	"\x11same_field_number\x18\x10 \x01(\x05R\x0fsameFieldNumber\x12l\n" +
	"\x17optional_nested_message\x18\xe8\a \x01(\v23.goproto.proto.test.TestAllExtensions.NestedMessageR\x15optionalNestedMessage\"\x8b\x01\n" +
	"\rRepeatedGroup\x12\f\n" +
	"\x01a\x18/ \x01(\x05R\x01a\x12l\n" +
	"\x17optional_nested_message\x18\xe9\a \x01(\v23.goproto.proto.test.TestAllExtensions.NestedMessageR\x15optionalNestedMessage\"u\n" +
	"\x13TestNestedExtension2^\n" +
	"\x17nested_string_extension\x12%.goproto.proto.test.TestAllExtensions\x18\xeb\a \x01(\tR\x15nestedStringExtension\"\xf7\x01\n" +
	"\fTestRequired\x12%\n" +
	"\x0erequired_field\x18\x01 \x02(\x05R\rrequiredField2`\n" +
	"\x06single\x12%.goproto.proto.test.TestAllExtensions\x18\xe8\a \x01(\v2 .goproto.proto.test.TestRequiredR\x06single2^\n" +
	"\x05multi\x12%.goproto.proto.test.TestAllExtensions\x18\xe9\a \x03(\v2 .goproto.proto.test.TestRequiredR\x05multi\"\xc2\x03\n" +
	"\x13TestRequiredForeign\x12K\n" +
	"\x10optional_message\x18\x01 \x01(\v2 .goproto.proto.test.TestRequiredR\x0foptionalMessage\x12K\n" +
	"\x10repeated_message\x18\x02 \x03(\v2 .goproto.proto.test.TestRequiredR\x0frepeatedMessage\x12X\n" +
	"\vmap_message\x18\x03 \x03(\v27.goproto.proto.test.TestRequiredForeign.MapMessageEntryR\n" +
	"mapMessage\x12G\n" +
	"\roneof_message\x18\x04 \x01(\v2 .goproto.proto.test.TestRequiredH\x00R\foneofMessage\x1a_\n" +
	"\x0fMapMessageEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x126\n" +
	"\x05value\x18\x02 \x01(\v2 .goproto.proto.test.TestRequiredR\x05value:\x028\x01B\r\n" +
	"\voneof_field\"\x99\x02\n" +
	"\x17TestRequiredGroupFields\x12_\n" +
	"\roptionalgroup\x18\x01 \x01(\n" +
	"29.goproto.proto.test.TestRequiredGroupFields.OptionalGroupR\roptionalgroup\x12_\n" +
	"\rrepeatedgroup\x18\x03 \x03(\n" +
	"29.goproto.proto.test.TestRequiredGroupFields.RepeatedGroupR\rrepeatedgroup\x1a\x1d\n" +
	"\rOptionalGroup\x12\f\n" +
	"\x01a\x18\x02 \x02(\x05R\x01a\x1a\x1d\n" +
	"\rRepeatedGroup\x12\f\n" +
	"\x01a\x18\x04 \x02(\x05R\x01a\"l\n" +
	"\x10TestRequiredLazy\x12X\n" +
	"\x15optional_lazy_message\x18\x01 \x01(\v2 .goproto.proto.test.TestRequiredB\x02(\x01R\x13optionalLazyMessage\"\xee\x04\n" +
	"\x0fTestPackedTypes\x12%\n" +
	"\fpacked_int32\x18Z \x03(\x05B\x02\x10\x01R\vpackedInt32\x12%\n" +
	"\fpacked_int64\x18[ \x03(\x03B\x02\x10\x01R\vpackedInt64\x12'\n" +
	"\rpacked_uint32\x18\\ \x03(\rB\x02\x10\x01R\fpackedUint32\x12'\n" +
	"\rpacked_uint64\x18] \x03(\x04B\x02\x10\x01R\fpackedUint64\x12'\n" +
	"\rpacked_sint32\x18^ \x03(\x11B\x02\x10\x01R\fpackedSint32\x12'\n" +
	"\rpacked_sint64\x18_ \x03(\x12B\x02\x10\x01R\fpackedSint64\x12)\n" +
	"\x0epacked_fixed32\x18` \x03(\aB\x02\x10\x01R\rpackedFixed32\x12)\n" +
	"\x0epacked_fixed64\x18a \x03(\x06B\x02\x10\x01R\rpackedFixed64\x12+\n" +
	"\x0fpacked_sfixed32\x18b \x03(\x0fB\x02\x10\x01R\x0epackedSfixed32\x12+\n" +
	"\x0fpacked_sfixed64\x18c \x03(\x10B\x02\x10\x01R\x0epackedSfixed64\x12%\n" +
	"\fpacked_float\x18d \x03(\x02B\x02\x10\x01R\vpackedFloat\x12'\n" +
	"\rpacked_double\x18e \x03(\x01B\x02\x10\x01R\fpackedDouble\x12#\n" +
	"\vpacked_bool\x18f \x03(\bB\x02\x10\x01R\n" +
	"packedBool\x12D\n" +
	"\vpacked_enum\x18g \x03(\x0e2\x1f.goproto.proto.test.ForeignEnumB\x02\x10\x01R\n" +
	"packedEnum\"\xa8\x05\n" +
	"\x11TestUnpackedTypes\x12)\n" +
	"\x0eunpacked_int32\x18Z \x03(\x05B\x02\x10\x00R\runpackedInt32\x12)\n" +
	"\x0eunpacked_int64\x18[ \x03(\x03B\x02\x10\x00R\runpackedInt64\x12+\n" +
	"\x0funpacked_uint32\x18\\ \x03(\rB\x02\x10\x00R\x0eunpackedUint32\x12+\n" +
	"\x0funpacked_uint64\x18] \x03(\x04B\x02\x10\x00R\x0eunpackedUint64\x12+\n" +
	"\x0funpacked_sint32\x18^ \x03(\x11B\x02\x10\x00R\x0eunpackedSint32\x12+\n" +
	"\x0funpacked_sint64\x18_ \x03(\x12B\x02\x10\x00R\x0eunpackedSint64\x12-\n" +
	"\x10unpacked_fixed32\x18` \x03(\aB\x02\x10\x00R\x0funpackedFixed32\x12-\n" +
	"\x10unpacked_fixed64\x18a \x03(\x06B\x02\x10\x00R\x0funpackedFixed64\x12/\n" +
	"\x11unpacked_sfixed32\x18b \x03(\x0fB\x02\x10\x00R\x10unpackedSfixed32\x12/\n" +
	"\x11unpacked_sfixed64\x18c \x03(\x10B\x02\x10\x00R\x10unpackedSfixed64\x12)\n" +
	"\x0eunpacked_float\x18d \x03(\x02B\x02\x10\x00R\runpackedFloat\x12+\n" +
	"\x0funpacked_double\x18e \x03(\x01B\x02\x10\x00R\x0eunpackedDouble\x12'\n" +
	"\runpacked_bool\x18f \x03(\bB\x02\x10\x00R\funpackedBool\x12H\n" +
	"\runpacked_enum\x18g \x03(\x0e2\x1f.goproto.proto.test.ForeignEnumB\x02\x10\x00R\funpackedEnum\" \n" +
	"\x14TestPackedExtensions*\b\b\x01\x10\x80\x80\x80\x80\x02\"\"\n" +
	"\x16TestUnpackedExtensions*\b\b\x01\x10\x80\x80\x80\x80\x02\"\f\n" +
	"\n" +
	"FooRequest\"\r\n" +
	"\vFooResponse\"a\n" +
	"\fWeirdDefault\x12Q\n" +
	"\rweird_default\x18\x01 \x01(\f:,hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef`R\fweirdDefault\"\xff\x03\n" +
	"\rRemoteDefault\x123\n" +
	"\adefault\x18\x01 \x01(\x0e2\x19.goproto.proto.enums.EnumR\adefault\x123\n" +
	"\x04zero\x18\x02 \x01(\x0e2\x19.goproto.proto.enums.Enum:\x04ZEROR\x04zero\x120\n" +
	"\x03one\x18\x03 \x01(\x0e2\x19.goproto.proto.enums.Enum:\x03ONER\x03one\x12<\n" +
	"\aelevent\x18\x04 \x01(\x0e2\x19.goproto.proto.enums.Enum:\aELEVENTR\aelevent\x12B\n" +
	"\tseventeen\x18\x05 \x01(\x0e2\x19.goproto.proto.enums.Enum:\tSEVENTEENR\tseventeen\x12H\n" +
	"\vthirtyseven\x18\x06 \x01(\x0e2\x19.goproto.proto.enums.Enum:\vTHIRTYSEVENR\vthirtyseven\x12E\n" +
	"\n" +
	"sixtyseven\x18\a \x01(\x0e2\x19.goproto.proto.enums.Enum:\n" +
	"SIXTYSEVENR\n" +
	"sixtyseven\x12?\n" +
	"\bnegative\x18\b \x01(\x0e2\x19.goproto.proto.enums.Enum:\bNEGATIVER\bnegative*@\n" +
	"\vForeignEnum\x12\x0f\n" +
	"\vFOREIGN_FOO\x10\x04\x12\x0f\n" +
	"\vFOREIGN_BAR\x10\x05\x12\x0f\n" +
	"\vFOREIGN_BAZ\x10\x06*G\n" +
	"\x16TestReservedEnumFields\x12\x11\n" +
	"\rRESERVED_ENUM\x10\x00\"\x04\b\x02\x10\x02\"\x04\b\x0f\x10\x0f\"\x04\b\t\x10\v*\x03BAR*\x03BAZ2\xa8\x01\n" +
	"\vTestService\x12F\n" +
	"\x03Foo\x12\x1e.goproto.proto.test.FooRequest\x1a\x1f.goproto.proto.test.FooResponse\x12Q\n" +
	"\n" +
	"TestStream\x12\x1e.goproto.proto.test.FooRequest\x1a\x1f.goproto.proto.test.FooResponse(\x010\x012\x85\x01\n" +
	"\x15TestDeprecatedService\x12g\n" +
	"\n" +
	"Deprecated\x12).goproto.proto.test.TestDeprecatedMessage\x1a).goproto.proto.test.TestDeprecatedMessage\"\x03\x88\x02\x01\x1a\x03\x88\x02\x01:L\n" +
	"\x0eoptional_int32\x12%.goproto.proto.test.TestAllExtensions\x18\x01 \x01(\x05R\roptionalInt32:L\n" +
	"\x0eoptional_int64\x12%.goproto.proto.test.TestAllExtensions\x18\x02 \x01(\x03R\roptionalInt64:N\n" +
	"\x0foptional_uint32\x12%.goproto.proto.test.TestAllExtensions\x18\x03 \x01(\rR\x0eoptionalUint32:N\n" +
	"\x0foptional_uint64\x12%.goproto.proto.test.TestAllExtensions\x18\x04 \x01(\x04R\x0eoptionalUint64:N\n" +
	"\x0foptional_sint32\x12%.goproto.proto.test.TestAllExtensions\x18\x05 \x01(\x11R\x0eoptionalSint32:N\n" +
	"\x0foptional_sint64\x12%.goproto.proto.test.TestAllExtensions\x18\x06 \x01(\x12R\x0eoptionalSint64:P\n" +
	"\x10optional_fixed32\x12%.goproto.proto.test.TestAllExtensions\x18\a \x01(\aR\x0foptionalFixed32:P\n" +
	"\x10optional_fixed64\x12%.goproto.proto.test.TestAllExtensions\x18\b \x01(\x06R\x0foptionalFixed64:R\n" +
	"\x11optional_sfixed32\x12%.goproto.proto.test.TestAllExtensions\x18\t \x01(\x0fR\x10optionalSfixed32:R\n" +
	"\x11optional_sfixed64\x12%.goproto.proto.test.TestAllExtensions\x18\n" +
	" \x01(\x10R\x10optionalSfixed64:L\n" +
	"\x0eoptional_float\x12%.goproto.proto.test.TestAllExtensions\x18\v \x01(\x02R\roptionalFloat:N\n" +
	"\x0foptional_double\x12%.goproto.proto.test.TestAllExtensions\x18\f \x01(\x01R\x0eoptionalDouble:J\n" +
	"\roptional_bool\x12%.goproto.proto.test.TestAllExtensions\x18\r \x01(\bR\foptionalBool:N\n" +
	"\x0foptional_string\x12%.goproto.proto.test.TestAllExtensions\x18\x0e \x01(\tR\x0eoptionalString:L\n" +
	"\x0eoptional_bytes\x12%.goproto.proto.test.TestAllExtensions\x18\x0f \x01(\fR\roptionalBytes:n\n" +
	"\roptionalgroup\x12%.goproto.proto.test.TestAllExtensions\x18\x10 \x01(\n" +
	"2!.goproto.proto.test.OptionalGroupR\roptionalgroup:\x92\x01\n" +
	"\x17optional_nested_message\x12%.goproto.proto.test.TestAllExtensions\x18\x12 \x01(\v23.goproto.proto.test.TestAllExtensions.NestedMessageR\x15optionalNestedMessage:\x84\x01\n" +
	"\x14optional_nested_enum\x12%.goproto.proto.test.TestAllExtensions\x18\x15 \x01(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumR\x12optionalNestedEnum:L\n" +
	"\x0erepeated_int32\x12%.goproto.proto.test.TestAllExtensions\x18\x1f \x03(\x05R\rrepeatedInt32:L\n" +
	"\x0erepeated_int64\x12%.goproto.proto.test.TestAllExtensions\x18  \x03(\x03R\rrepeatedInt64:N\n" +
	"\x0frepeated_uint32\x12%.goproto.proto.test.TestAllExtensions\x18! \x03(\rR\x0erepeatedUint32:N\n" +
	"\x0frepeated_uint64\x12%.goproto.proto.test.TestAllExtensions\x18\" \x03(\x04R\x0erepeatedUint64:N\n" +
	"\x0frepeated_sint32\x12%.goproto.proto.test.TestAllExtensions\x18# \x03(\x11R\x0erepeatedSint32:N\n" +
	"\x0frepeated_sint64\x12%.goproto.proto.test.TestAllExtensions\x18$ \x03(\x12R\x0erepeatedSint64:P\n" +
	"\x10repeated_fixed32\x12%.goproto.proto.test.TestAllExtensions\x18% \x03(\aR\x0frepeatedFixed32:P\n" +
	"\x10repeated_fixed64\x12%.goproto.proto.test.TestAllExtensions\x18& \x03(\x06R\x0frepeatedFixed64:R\n" +
	"\x11repeated_sfixed32\x12%.goproto.proto.test.TestAllExtensions\x18' \x03(\x0fR\x10repeatedSfixed32:R\n" +
	"\x11repeated_sfixed64\x12%.goproto.proto.test.TestAllExtensions\x18( \x03(\x10R\x10repeatedSfixed64:L\n" +
	"\x0erepeated_float\x12%.goproto.proto.test.TestAllExtensions\x18) \x03(\x02R\rrepeatedFloat:N\n" +
	"\x0frepeated_double\x12%.goproto.proto.test.TestAllExtensions\x18* \x03(\x01R\x0erepeatedDouble:J\n" +
	"\rrepeated_bool\x12%.goproto.proto.test.TestAllExtensions\x18+ \x03(\bR\frepeatedBool:N\n" +
	"\x0frepeated_string\x12%.goproto.proto.test.TestAllExtensions\x18, \x03(\tR\x0erepeatedString:L\n" +
	"\x0erepeated_bytes\x12%.goproto.proto.test.TestAllExtensions\x18- \x03(\fR\rrepeatedBytes:n\n" +
	"\rrepeatedgroup\x12%.goproto.proto.test.TestAllExtensions\x18. \x03(\n" +
	"2!.goproto.proto.test.RepeatedGroupR\rrepeatedgroup:\x92\x01\n" +
	"\x17repeated_nested_message\x12%.goproto.proto.test.TestAllExtensions\x180 \x03(\v23.goproto.proto.test.TestAllExtensions.NestedMessageR\x15repeatedNestedMessage:\x84\x01\n" +
	"\x14repeated_nested_enum\x12%.goproto.proto.test.TestAllExtensions\x183 \x03(\x0e2+.goproto.proto.test.TestAllTypes.NestedEnumR\x12repeatedNestedEnum:N\n" +
	"\rdefault_int32\x12%.goproto.proto.test.TestAllExtensions\x18Q \x01(\x05:\x0281R\fdefaultInt32:N\n" +
	"\rdefault_int64\x12%.goproto.proto.test.TestAllExtensions\x18R \x01(\x03:\x0282R\fdefaultInt64:P\n" +
	"\x0edefault_uint32\x12%.goproto.proto.test.TestAllExtensions\x18S \x01(\r:\x0283R\rdefaultUint32:P\n" +
	"\x0edefault_uint64\x12%.goproto.proto.test.TestAllExtensions\x18T \x01(\x04:\x0284R\rdefaultUint64:Q\n" +
	"\x0edefault_sint32\x12%.goproto.proto.test.TestAllExtensions\x18U \x01(\x11:\x03-85R\rdefaultSint32:P\n" +
	"\x0edefault_sint64\x12%.goproto.proto.test.TestAllExtensions\x18V \x01(\x12:\x0286R\rdefaultSint64:R\n" +
	"\x0fdefault_fixed32\x12%.goproto.proto.test.TestAllExtensions\x18W \x01(\a:\x0287R\x0edefaultFixed32:R\n" +
	"\x0fdefault_fixed64\x12%.goproto.proto.test.TestAllExtensions\x18X \x01(\x06:\x0288R\x0edefaultFixed64:T\n" +
	"\x10default_sfixed32\x12%.goproto.proto.test.TestAllExtensions\x18Y \x01(\x0f:\x0289R\x0fdefaultSfixed32:U\n" +
	"\x10default_sfixed64\x12%.goproto.proto.test.TestAllExtensions\x18P \x01(\x10:\x03-90R\x0fdefaultSfixed64:P\n" +
	"\rdefault_float\x12%.goproto.proto.test.TestAllExtensions\x18[ \x01(\x02:\x0491.5R\fdefaultFloat:S\n" +
	"\x0edefault_double\x12%.goproto.proto.test.TestAllExtensions\x18\\ \x01(\x01:\x0592000R\rdefaultDouble:N\n" +
	"\fdefault_bool\x12%.goproto.proto.test.TestAllExtensions\x18] \x01(\b:\x04trueR\vdefaultBool:S\n" +
	"\x0edefault_string\x12%.goproto.proto.test.TestAllExtensions\x18^ \x01(\t:\x05helloR\rdefaultString:Q\n" +
	"\rdefault_bytes\x12%.goproto.proto.test.TestAllExtensions\x18_ \x01(\f:\x05worldR\fdefaultBytes:O\n" +
	"\fpacked_int32\x12(.goproto.proto.test.TestPackedExtensions\x18Z \x03(\x05B\x02\x10\x01R\vpackedInt32:O\n" +
	"\fpacked_int64\x12(.goproto.proto.test.TestPackedExtensions\x18[ \x03(\x03B\x02\x10\x01R\vpackedInt64:Q\n" +
	"\rpacked_uint32\x12(.goproto.proto.test.TestPackedExtensions\x18\\ \x03(\rB\x02\x10\x01R\fpackedUint32:Q\n" +
	"\rpacked_uint64\x12(.goproto.proto.test.TestPackedExtensions\x18] \x03(\x04B\x02\x10\x01R\fpackedUint64:Q\n" +
	"\rpacked_sint32\x12(.goproto.proto.test.TestPackedExtensions\x18^ \x03(\x11B\x02\x10\x01R\fpackedSint32:Q\n" +
	"\rpacked_sint64\x12(.goproto.proto.test.TestPackedExtensions\x18_ \x03(\x12B\x02\x10\x01R\fpackedSint64:S\n" +
	"\x0epacked_fixed32\x12(.goproto.proto.test.TestPackedExtensions\x18` \x03(\aB\x02\x10\x01R\rpackedFixed32:S\n" +
	"\x0epacked_fixed64\x12(.goproto.proto.test.TestPackedExtensions\x18a \x03(\x06B\x02\x10\x01R\rpackedFixed64:U\n" +
	"\x0fpacked_sfixed32\x12(.goproto.proto.test.TestPackedExtensions\x18b \x03(\x0fB\x02\x10\x01R\x0epackedSfixed32:U\n" +
	"\x0fpacked_sfixed64\x12(.goproto.proto.test.TestPackedExtensions\x18c \x03(\x10B\x02\x10\x01R\x0epackedSfixed64:O\n" +
	"\fpacked_float\x12(.goproto.proto.test.TestPackedExtensions\x18d \x03(\x02B\x02\x10\x01R\vpackedFloat:Q\n" +
	"\rpacked_double\x12(.goproto.proto.test.TestPackedExtensions\x18e \x03(\x01B\x02\x10\x01R\fpackedDouble:M\n" +
	"\vpacked_bool\x12(.goproto.proto.test.TestPackedExtensions\x18f \x03(\bB\x02\x10\x01R\n" +
	"packedBool:n\n" +
	"\vpacked_enum\x12(.goproto.proto.test.TestPackedExtensions\x18g \x03(\x0e2\x1f.goproto.proto.test.ForeignEnumB\x02\x10\x01R\n" +
	"packedEnum:U\n" +
	"\x0eunpacked_int32\x12*.goproto.proto.test.TestUnpackedExtensions\x18Z \x03(\x05B\x02\x10\x00R\runpackedInt32:U\n" +
	"\x0eunpacked_int64\x12*.goproto.proto.test.TestUnpackedExtensions\x18[ \x03(\x03B\x02\x10\x00R\runpackedInt64:W\n" +
	"\x0funpacked_uint32\x12*.goproto.proto.test.TestUnpackedExtensions\x18\\ \x03(\rB\x02\x10\x00R\x0eunpackedUint32:W\n" +
	"\x0funpacked_uint64\x12*.goproto.proto.test.TestUnpackedExtensions\x18] \x03(\x04B\x02\x10\x00R\x0eunpackedUint64:W\n" +
	"\x0funpacked_sint32\x12*.goproto.proto.test.TestUnpackedExtensions\x18^ \x03(\x11B\x02\x10\x00R\x0eunpackedSint32:W\n" +
	"\x0funpacked_sint64\x12*.goproto.proto.test.TestUnpackedExtensions\x18_ \x03(\x12B\x02\x10\x00R\x0eunpackedSint64:Y\n" +
	"\x10unpacked_fixed32\x12*.goproto.proto.test.TestUnpackedExtensions\x18` \x03(\aB\x02\x10\x00R\x0funpackedFixed32:Y\n" +
	"\x10unpacked_fixed64\x12*.goproto.proto.test.TestUnpackedExtensions\x18a \x03(\x06B\x02\x10\x00R\x0funpackedFixed64:[\n" +
	"\x11unpacked_sfixed32\x12*.goproto.proto.test.TestUnpackedExtensions\x18b \x03(\x0fB\x02\x10\x00R\x10unpackedSfixed32:[\n" +
	"\x11unpacked_sfixed64\x12*.goproto.proto.test.TestUnpackedExtensions\x18c \x03(\x10B\x02\x10\x00R\x10unpackedSfixed64:U\n" +
	"\x0eunpacked_float\x12*.goproto.proto.test.TestUnpackedExtensions\x18d \x03(\x02B\x02\x10\x00R\runpackedFloat:W\n" +
	"\x0funpacked_double\x12*.goproto.proto.test.TestUnpackedExtensions\x18e \x03(\x01B\x02\x10\x00R\x0eunpackedDouble:S\n" +
	"\runpacked_bool\x12*.goproto.proto.test.TestUnpackedExtensions\x18f \x03(\bB\x02\x10\x00R\funpackedBool:t\n" +
	"\runpacked_enum\x12*.goproto.proto.test.TestUnpackedExtensions\x18g \x03(\x0e2\x1f.goproto.proto.test.ForeignEnumB\x02\x10\x00R\funpackedEnumB5Z3google.golang.org/protobuf/internal/testprotos/testP\x00"

var (
	file_internal_testprotos_test_test_proto_rawDescOnce sync.Once
	file_internal_testprotos_test_test_proto_rawDescData []byte
)

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 = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_test_proto_rawDesc), len(file_internal_testprotos_test_test_proto_rawDesc)))
	})
	return 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, 47)
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
	(*TestPackedTypes)(nil),                   // 18: goproto.proto.test.TestPackedTypes
	(*TestUnpackedTypes)(nil),                 // 19: goproto.proto.test.TestUnpackedTypes
	(*TestPackedExtensions)(nil),              // 20: goproto.proto.test.TestPackedExtensions
	(*TestUnpackedExtensions)(nil),            // 21: goproto.proto.test.TestUnpackedExtensions
	(*FooRequest)(nil),                        // 22: goproto.proto.test.FooRequest
	(*FooResponse)(nil),                       // 23: goproto.proto.test.FooResponse
	(*WeirdDefault)(nil),                      // 24: goproto.proto.test.WeirdDefault
	(*RemoteDefault)(nil),                     // 25: goproto.proto.test.RemoteDefault
	(*TestAllTypes_NestedMessage)(nil),        // 26: goproto.proto.test.TestAllTypes.NestedMessage
	(*TestAllTypes_OptionalGroup)(nil),        // 27: goproto.proto.test.TestAllTypes.OptionalGroup
	(*TestAllTypes_RepeatedGroup)(nil),        // 28: goproto.proto.test.TestAllTypes.RepeatedGroup
	nil,                                       // 29: goproto.proto.test.TestAllTypes.MapInt32Int32Entry
	nil,                                       // 30: goproto.proto.test.TestAllTypes.MapInt64Int64Entry
	nil,                                       // 31: goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
	nil,                                       // 32: goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
	nil,                                       // 33: goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
	nil,                                       // 34: goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
	nil,                                       // 35: goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
	nil,                                       // 36: goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
	nil,                                       // 37: goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
	nil,                                       // 38: goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
	nil,                                       // 39: goproto.proto.test.TestAllTypes.MapInt32FloatEntry
	nil,                                       // 40: goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
	nil,                                       // 41: goproto.proto.test.TestAllTypes.MapBoolBoolEntry
	nil,                                       // 42: goproto.proto.test.TestAllTypes.MapStringStringEntry
	nil,                                       // 43: goproto.proto.test.TestAllTypes.MapStringBytesEntry
	nil,                                       // 44: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
	nil,                                       // 45: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
	(*TestAllTypes_OneofGroup)(nil),           // 46: goproto.proto.test.TestAllTypes.OneofGroup
	(*TestAllExtensions_NestedMessage)(nil),   // 47: goproto.proto.test.TestAllExtensions.NestedMessage
	nil,                                       // 48: goproto.proto.test.TestRequiredForeign.MapMessageEntry
	(*TestRequiredGroupFields_OptionalGroup)(nil), // 49: goproto.proto.test.TestRequiredGroupFields.OptionalGroup
	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 50: goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
	(*ImportMessage)(nil),                         // 51: goproto.proto.test.ImportMessage
	(ImportEnum)(0),                               // 52: goproto.proto.test.ImportEnum
	(enums.Enum)(0),                               // 53: goproto.proto.enums.Enum
}
var file_internal_testprotos_test_test_proto_depIdxs = []int32{
	27,  // 0: goproto.proto.test.TestAllTypes.optionalgroup:type_name -> goproto.proto.test.TestAllTypes.OptionalGroup
	26,  // 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
	51,  // 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
	52,  // 6: goproto.proto.test.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test.ImportEnum
	26,  // 7: goproto.proto.test.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	28,  // 8: goproto.proto.test.TestAllTypes.repeatedgroup:type_name -> goproto.proto.test.TestAllTypes.RepeatedGroup
	26,  // 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
	51,  // 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
	52,  // 14: goproto.proto.test.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test.ImportEnum
	29,  // 15: goproto.proto.test.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test.TestAllTypes.MapInt32Int32Entry
	30,  // 16: goproto.proto.test.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test.TestAllTypes.MapInt64Int64Entry
	31,  // 17: goproto.proto.test.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
	32,  // 18: goproto.proto.test.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
	33,  // 19: goproto.proto.test.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
	34,  // 20: goproto.proto.test.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
	35,  // 21: goproto.proto.test.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
	36,  // 22: goproto.proto.test.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
	37,  // 23: goproto.proto.test.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
	38,  // 24: goproto.proto.test.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
	39,  // 25: goproto.proto.test.TestAllTypes.map_int32_float:type_name -> goproto.proto.test.TestAllTypes.MapInt32FloatEntry
	40,  // 26: goproto.proto.test.TestAllTypes.map_int32_double:type_name -> goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
	41,  // 27: goproto.proto.test.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test.TestAllTypes.MapBoolBoolEntry
	42,  // 28: goproto.proto.test.TestAllTypes.map_string_string:type_name -> goproto.proto.test.TestAllTypes.MapStringStringEntry
	43,  // 29: goproto.proto.test.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test.TestAllTypes.MapStringBytesEntry
	44,  // 30: goproto.proto.test.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
	45,  // 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
	26,  // 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
	46,  // 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
	14,  // 137: goproto.proto.test.TestOneofWithRequired.oneof_required:type_name -> goproto.proto.test.TestRequired
	47,  // 138: goproto.proto.test.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
	47,  // 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
	48,  // 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
	49,  // 144: goproto.proto.test.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.OptionalGroup
	50,  // 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
	53,  // 149: goproto.proto.test.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
	53,  // 150: goproto.proto.test.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
	53,  // 151: goproto.proto.test.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
	53,  // 152: goproto.proto.test.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
	53,  // 153: goproto.proto.test.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
	53,  // 154: goproto.proto.test.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
	53,  // 155: goproto.proto.test.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
	53,  // 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
	26,  // 158: goproto.proto.test.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	26,  // 159: goproto.proto.test.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
	26,  // 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
	20,  // 215: goproto.proto.test.packed_int32:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 216: goproto.proto.test.packed_int64:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 217: goproto.proto.test.packed_uint32:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 218: goproto.proto.test.packed_uint64:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 219: goproto.proto.test.packed_sint32:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 220: goproto.proto.test.packed_sint64:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 221: goproto.proto.test.packed_fixed32:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 222: goproto.proto.test.packed_fixed64:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 223: goproto.proto.test.packed_sfixed32:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 224: goproto.proto.test.packed_sfixed64:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 225: goproto.proto.test.packed_float:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 226: goproto.proto.test.packed_double:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 227: goproto.proto.test.packed_bool:extendee -> goproto.proto.test.TestPackedExtensions
	20,  // 228: goproto.proto.test.packed_enum:extendee -> goproto.proto.test.TestPackedExtensions
	21,  // 229: goproto.proto.test.unpacked_int32:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 230: goproto.proto.test.unpacked_int64:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 231: goproto.proto.test.unpacked_uint32:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 232: goproto.proto.test.unpacked_uint64:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 233: goproto.proto.test.unpacked_sint32:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 234: goproto.proto.test.unpacked_sint64:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 235: goproto.proto.test.unpacked_fixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 236: goproto.proto.test.unpacked_fixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 237: goproto.proto.test.unpacked_sfixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 238: goproto.proto.test.unpacked_sfixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 239: goproto.proto.test.unpacked_float:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 240: goproto.proto.test.unpacked_double:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 241: goproto.proto.test.unpacked_bool:extendee -> goproto.proto.test.TestUnpackedExtensions
	21,  // 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
	47,  // 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
	47,  // 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
	22,  // 256: goproto.proto.test.TestService.Foo:input_type -> goproto.proto.test.FooRequest
	22,  // 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
	23,  // 259: goproto.proto.test.TestService.Foo:output_type -> goproto.proto.test.FooResponse
	23,  // 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: unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_test_proto_rawDesc), len(file_internal_testprotos_test_test_proto_rawDesc)),
			NumEnums:      4,
			NumMessages:   47,
			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
}
