// Copyright 2024 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/testeditions/test.proto

package testeditions

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_ZERO ForeignEnum = 0
	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{
		0: "FOREIGN_ZERO",
		4: "FOREIGN_FOO",
		5: "FOREIGN_BAR",
		6: "FOREIGN_BAZ",
	}
	ForeignEnum_value = map[string]int32{
		"FOREIGN_ZERO": 0,
		"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_testeditions_test_proto_enumTypes[0].Descriptor()
}

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

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

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

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_testeditions_test_proto_enumTypes[1].Descriptor()
}

func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
	return &file_internal_testprotos_testeditions_test_proto_enumTypes[1]
}

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

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

type TestAllTypes struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	SingularInt32    int32                  `protobuf:"varint,124,opt,name=singular_int32,json=singularInt32" json:"singular_int32,omitempty"`
	SingularInt64    int64                  `protobuf:"varint,125,opt,name=singular_int64,json=singularInt64" json:"singular_int64,omitempty"`
	SingularUint32   uint32                 `protobuf:"varint,126,opt,name=singular_uint32,json=singularUint32" json:"singular_uint32,omitempty"`
	SingularUint64   uint64                 `protobuf:"varint,127,opt,name=singular_uint64,json=singularUint64" json:"singular_uint64,omitempty"`
	SingularSint32   int32                  `protobuf:"zigzag32,128,opt,name=singular_sint32,json=singularSint32" json:"singular_sint32,omitempty"`
	SingularSint64   int64                  `protobuf:"zigzag64,129,opt,name=singular_sint64,json=singularSint64" json:"singular_sint64,omitempty"`
	SingularFixed32  uint32                 `protobuf:"fixed32,130,opt,name=singular_fixed32,json=singularFixed32" json:"singular_fixed32,omitempty"`
	SingularFixed64  uint64                 `protobuf:"fixed64,131,opt,name=singular_fixed64,json=singularFixed64" json:"singular_fixed64,omitempty"`
	SingularSfixed32 int32                  `protobuf:"fixed32,132,opt,name=singular_sfixed32,json=singularSfixed32" json:"singular_sfixed32,omitempty"`
	SingularSfixed64 int64                  `protobuf:"fixed64,133,opt,name=singular_sfixed64,json=singularSfixed64" json:"singular_sfixed64,omitempty"`
	SingularFloat    float32                `protobuf:"fixed32,134,opt,name=singular_float,json=singularFloat" json:"singular_float,omitempty"`
	SingularDouble   float64                `protobuf:"fixed64,135,opt,name=singular_double,json=singularDouble" json:"singular_double,omitempty"`
	SingularBool     bool                   `protobuf:"varint,136,opt,name=singular_bool,json=singularBool" json:"singular_bool,omitempty"`
	SingularString   string                 `protobuf:"bytes,137,opt,name=singular_string,json=singularString" json:"singular_string,omitempty"`
	SingularBytes    []byte                 `protobuf:"bytes,138,opt,name=singular_bytes,json=singularBytes" json:"singular_bytes,omitempty"`
	// message-typed fields elided, as they cannot specify implicit presence.
	SingularNestedEnum        TestAllTypes_NestedEnum                `protobuf:"varint,142,opt,name=singular_nested_enum,json=singularNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
	SingularForeignEnum       ForeignEnum                            `protobuf:"varint,143,opt,name=singular_foreign_enum,json=singularForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"singular_foreign_enum,omitempty"`
	SingularImportEnum        ImportEnum                             `protobuf:"varint,144,opt,name=singular_import_enum,json=singularImportEnum,enum=goproto.proto.testeditions.ImportEnum" json:"singular_import_enum,omitempty"`
	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"`
	NotGroupLikeDelimited     *TestAllTypes_OptionalGroup            `protobuf:"group,17,opt,name=OptionalGroup,json=notGroupLikeDelimited" json:"not_group_like_delimited,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.testeditions.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
	OptionalForeignEnum       *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"optional_foreign_enum,omitempty"`
	OptionalImportEnum        *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=goproto.proto.testeditions.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,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
	RepeatedInt64             []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
	RepeatedUint32            []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
	RepeatedUint64            []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
	RepeatedSint32            []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
	RepeatedSint64            []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
	RepeatedFixed32           []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
	RepeatedFixed64           []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
	RepeatedSfixed32          []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
	RepeatedSfixed64          []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
	RepeatedFloat             []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
	RepeatedDouble            []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
	RepeatedBool              []bool                                 `protobuf:"varint,43,rep,packed,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,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=goproto.proto.testeditions.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
	RepeatedForeignEnum       []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=goproto.proto.testeditions.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
	RepeatedImportenum        []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,enum=goproto.proto.testeditions.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.testeditions.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.testeditions.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=goproto.proto.testeditions.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_testeditions_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_testeditions_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_testeditions_test_proto_rawDescGZIP(), []int{0}
}

func (x *TestAllTypes) GetSingularInt32() int32 {
	if x != nil {
		return x.SingularInt32
	}
	return 0
}

func (x *TestAllTypes) GetSingularInt64() int64 {
	if x != nil {
		return x.SingularInt64
	}
	return 0
}

func (x *TestAllTypes) GetSingularUint32() uint32 {
	if x != nil {
		return x.SingularUint32
	}
	return 0
}

func (x *TestAllTypes) GetSingularUint64() uint64 {
	if x != nil {
		return x.SingularUint64
	}
	return 0
}

func (x *TestAllTypes) GetSingularSint32() int32 {
	if x != nil {
		return x.SingularSint32
	}
	return 0
}

func (x *TestAllTypes) GetSingularSint64() int64 {
	if x != nil {
		return x.SingularSint64
	}
	return 0
}

func (x *TestAllTypes) GetSingularFixed32() uint32 {
	if x != nil {
		return x.SingularFixed32
	}
	return 0
}

func (x *TestAllTypes) GetSingularFixed64() uint64 {
	if x != nil {
		return x.SingularFixed64
	}
	return 0
}

func (x *TestAllTypes) GetSingularSfixed32() int32 {
	if x != nil {
		return x.SingularSfixed32
	}
	return 0
}

func (x *TestAllTypes) GetSingularSfixed64() int64 {
	if x != nil {
		return x.SingularSfixed64
	}
	return 0
}

func (x *TestAllTypes) GetSingularFloat() float32 {
	if x != nil {
		return x.SingularFloat
	}
	return 0
}

func (x *TestAllTypes) GetSingularDouble() float64 {
	if x != nil {
		return x.SingularDouble
	}
	return 0
}

func (x *TestAllTypes) GetSingularBool() bool {
	if x != nil {
		return x.SingularBool
	}
	return false
}

func (x *TestAllTypes) GetSingularString() string {
	if x != nil {
		return x.SingularString
	}
	return ""
}

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

func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
	if x != nil {
		return x.SingularNestedEnum
	}
	return TestAllTypes_FOO
}

func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
	if x != nil {
		return x.SingularForeignEnum
	}
	return ForeignEnum_FOREIGN_ZERO
}

func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
	if x != nil {
		return x.SingularImportEnum
	}
	return ImportEnum_IMPORT_ZERO
}

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) GetNotGroupLikeDelimited() *TestAllTypes_OptionalGroup {
	if x != nil {
		return x.NotGroupLikeDelimited
	}
	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_ZERO
}

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.testeditions.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_testeditions_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_testeditions_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_testeditions_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
}

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_testeditions_test_proto_msgTypes[2]
	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_testeditions_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 ForeignMessage.ProtoReflect.Descriptor instead.
func (*ForeignMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{2}
}

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 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_testeditions_test_proto_msgTypes[3]
	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_testeditions_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 TestRequired.ProtoReflect.Descriptor instead.
func (*TestRequired) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{3}
}

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_testeditions_test_proto_msgTypes[4]
	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_testeditions_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 TestRequiredForeign.ProtoReflect.Descriptor instead.
func (*TestRequiredForeign) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{4}
}

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_testeditions_test_proto_msgTypes[5]
	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_testeditions_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 TestRequiredGroupFields.ProtoReflect.Descriptor instead.
func (*TestRequiredGroupFields) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{5}
}

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_testeditions_test_proto_msgTypes[6]
	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_testeditions_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 TestRequiredLazy.ProtoReflect.Descriptor instead.
func (*TestRequiredLazy) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{6}
}

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.testeditions.ForeignEnum" json:"packed_enum,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *TestPackedTypes) Reset() {
	*x = TestPackedTypes{}
	mi := &file_internal_testprotos_testeditions_test_proto_msgTypes[7]
	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_testeditions_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 TestPackedTypes.ProtoReflect.Descriptor instead.
func (*TestPackedTypes) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_test_proto_rawDescGZIP(), []int{7}
}

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

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

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_testeditions_test_proto_msgTypes[10]
	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_testeditions_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 TestAllTypes_NestedMessage.ProtoReflect.Descriptor instead.
func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_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_testeditions_test_proto_msgTypes[11]
	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_testeditions_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 TestAllTypes_OptionalGroup.ProtoReflect.Descriptor instead.
func (*TestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_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_testeditions_test_proto_msgTypes[12]
	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_testeditions_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 TestAllTypes_RepeatedGroup.ProtoReflect.Descriptor instead.
func (*TestAllTypes_RepeatedGroup) Descriptor() ([]byte, []int) {
	return file_internal_testprotos_testeditions_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_testeditions_test_proto_msgTypes[30]
	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_testeditions_test_proto_msgTypes[30]
	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_testeditions_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 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_testeditions_test_proto_msgTypes[32]
	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_testeditions_test_proto_msgTypes[32]
	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_testeditions_test_proto_rawDescGZIP(), []int{5, 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_testeditions_test_proto_msgTypes[33]
	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_testeditions_test_proto_msgTypes[33]
	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_testeditions_test_proto_rawDescGZIP(), []int{5, 1}
}

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

var file_internal_testprotos_testeditions_test_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         90,
		Name:          "goproto.proto.testeditions.packed_int32",
		Tag:           "varint,90,rep,packed,name=packed_int32",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         91,
		Name:          "goproto.proto.testeditions.packed_int64",
		Tag:           "varint,91,rep,packed,name=packed_int64",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         92,
		Name:          "goproto.proto.testeditions.packed_uint32",
		Tag:           "varint,92,rep,packed,name=packed_uint32",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         93,
		Name:          "goproto.proto.testeditions.packed_uint64",
		Tag:           "varint,93,rep,packed,name=packed_uint64",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         94,
		Name:          "goproto.proto.testeditions.packed_sint32",
		Tag:           "zigzag32,94,rep,packed,name=packed_sint32",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         95,
		Name:          "goproto.proto.testeditions.packed_sint64",
		Tag:           "zigzag64,95,rep,packed,name=packed_sint64",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         96,
		Name:          "goproto.proto.testeditions.packed_fixed32",
		Tag:           "fixed32,96,rep,packed,name=packed_fixed32",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         97,
		Name:          "goproto.proto.testeditions.packed_fixed64",
		Tag:           "fixed64,97,rep,packed,name=packed_fixed64",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         98,
		Name:          "goproto.proto.testeditions.packed_sfixed32",
		Tag:           "fixed32,98,rep,packed,name=packed_sfixed32",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         99,
		Name:          "goproto.proto.testeditions.packed_sfixed64",
		Tag:           "fixed64,99,rep,packed,name=packed_sfixed64",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         100,
		Name:          "goproto.proto.testeditions.packed_float",
		Tag:           "fixed32,100,rep,packed,name=packed_float",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         101,
		Name:          "goproto.proto.testeditions.packed_double",
		Tag:           "fixed64,101,rep,packed,name=packed_double",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         102,
		Name:          "goproto.proto.testeditions.packed_bool",
		Tag:           "varint,102,rep,packed,name=packed_bool",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
	{
		ExtendedType:  (*TestPackedExtensions)(nil),
		ExtensionType: ([]ForeignEnum)(nil),
		Field:         103,
		Name:          "goproto.proto.testeditions.packed_enum",
		Tag:           "varint,103,rep,packed,name=packed_enum,enum=goproto.proto.testeditions.ForeignEnum",
		Filename:      "internal/testprotos/testeditions/test.proto",
	},
}

// Extension fields to TestPackedExtensions.
var (
	// repeated int32 packed_int32 = 90;
	E_PackedInt32 = &file_internal_testprotos_testeditions_test_proto_extTypes[0]
	// repeated int64 packed_int64 = 91;
	E_PackedInt64 = &file_internal_testprotos_testeditions_test_proto_extTypes[1]
	// repeated uint32 packed_uint32 = 92;
	E_PackedUint32 = &file_internal_testprotos_testeditions_test_proto_extTypes[2]
	// repeated uint64 packed_uint64 = 93;
	E_PackedUint64 = &file_internal_testprotos_testeditions_test_proto_extTypes[3]
	// repeated sint32 packed_sint32 = 94;
	E_PackedSint32 = &file_internal_testprotos_testeditions_test_proto_extTypes[4]
	// repeated sint64 packed_sint64 = 95;
	E_PackedSint64 = &file_internal_testprotos_testeditions_test_proto_extTypes[5]
	// repeated fixed32 packed_fixed32 = 96;
	E_PackedFixed32 = &file_internal_testprotos_testeditions_test_proto_extTypes[6]
	// repeated fixed64 packed_fixed64 = 97;
	E_PackedFixed64 = &file_internal_testprotos_testeditions_test_proto_extTypes[7]
	// repeated sfixed32 packed_sfixed32 = 98;
	E_PackedSfixed32 = &file_internal_testprotos_testeditions_test_proto_extTypes[8]
	// repeated sfixed64 packed_sfixed64 = 99;
	E_PackedSfixed64 = &file_internal_testprotos_testeditions_test_proto_extTypes[9]
	// repeated float packed_float = 100;
	E_PackedFloat = &file_internal_testprotos_testeditions_test_proto_extTypes[10]
	// repeated double packed_double = 101;
	E_PackedDouble = &file_internal_testprotos_testeditions_test_proto_extTypes[11]
	// repeated bool packed_bool = 102;
	E_PackedBool = &file_internal_testprotos_testeditions_test_proto_extTypes[12]
	// repeated goproto.proto.testeditions.ForeignEnum packed_enum = 103;
	E_PackedEnum = &file_internal_testprotos_testeditions_test_proto_extTypes[13]
)

var File_internal_testprotos_testeditions_test_proto protoreflect.FileDescriptor

const file_internal_testprotos_testeditions_test_proto_rawDesc = "" +
	"\n" +
	"+internal/testprotos/testeditions/test.proto\x12\x1agoproto.proto.testeditions\x1a%internal/testprotos/enums/enums.proto\x1a2internal/testprotos/testeditions/test_import.proto\"\x8bG\n" +
	"\fTestAllTypes\x12,\n" +
	"\x0esingular_int32\x18| \x01(\x05B\x05\xaa\x01\x02\b\x02R\rsingularInt32\x12,\n" +
	"\x0esingular_int64\x18} \x01(\x03B\x05\xaa\x01\x02\b\x02R\rsingularInt64\x12.\n" +
	"\x0fsingular_uint32\x18~ \x01(\rB\x05\xaa\x01\x02\b\x02R\x0esingularUint32\x12.\n" +
	"\x0fsingular_uint64\x18\x7f \x01(\x04B\x05\xaa\x01\x02\b\x02R\x0esingularUint64\x12/\n" +
	"\x0fsingular_sint32\x18\x80\x01 \x01(\x11B\x05\xaa\x01\x02\b\x02R\x0esingularSint32\x12/\n" +
	"\x0fsingular_sint64\x18\x81\x01 \x01(\x12B\x05\xaa\x01\x02\b\x02R\x0esingularSint64\x121\n" +
	"\x10singular_fixed32\x18\x82\x01 \x01(\aB\x05\xaa\x01\x02\b\x02R\x0fsingularFixed32\x121\n" +
	"\x10singular_fixed64\x18\x83\x01 \x01(\x06B\x05\xaa\x01\x02\b\x02R\x0fsingularFixed64\x123\n" +
	"\x11singular_sfixed32\x18\x84\x01 \x01(\x0fB\x05\xaa\x01\x02\b\x02R\x10singularSfixed32\x123\n" +
	"\x11singular_sfixed64\x18\x85\x01 \x01(\x10B\x05\xaa\x01\x02\b\x02R\x10singularSfixed64\x12-\n" +
	"\x0esingular_float\x18\x86\x01 \x01(\x02B\x05\xaa\x01\x02\b\x02R\rsingularFloat\x12/\n" +
	"\x0fsingular_double\x18\x87\x01 \x01(\x01B\x05\xaa\x01\x02\b\x02R\x0esingularDouble\x12+\n" +
	"\rsingular_bool\x18\x88\x01 \x01(\bB\x05\xaa\x01\x02\b\x02R\fsingularBool\x12/\n" +
	"\x0fsingular_string\x18\x89\x01 \x01(\tB\x05\xaa\x01\x02\b\x02R\x0esingularString\x12-\n" +
	"\x0esingular_bytes\x18\x8a\x01 \x01(\fB\x05\xaa\x01\x02\b\x02R\rsingularBytes\x12m\n" +
	"\x14singular_nested_enum\x18\x8e\x01 \x01(\x0e23.goproto.proto.testeditions.TestAllTypes.NestedEnumB\x05\xaa\x01\x02\b\x02R\x12singularNestedEnum\x12c\n" +
	"\x15singular_foreign_enum\x18\x8f\x01 \x01(\x0e2'.goproto.proto.testeditions.ForeignEnumB\x05\xaa\x01\x02\b\x02R\x13singularForeignEnum\x12`\n" +
	"\x14singular_import_enum\x18\x90\x01 \x01(\x0e2&.goproto.proto.testeditions.ImportEnumB\x05\xaa\x01\x02\b\x02R\x12singularImportEnum\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\x12c\n" +
	"\roptionalgroup\x18\x10 \x01(\v26.goproto.proto.testeditions.TestAllTypes.OptionalGroupB\x05\xaa\x01\x02(\x02R\roptionalgroup\x12v\n" +
	"\x18not_group_like_delimited\x18\x11 \x01(\v26.goproto.proto.testeditions.TestAllTypes.OptionalGroupB\x05\xaa\x01\x02(\x02R\x15notGroupLikeDelimited\x12n\n" +
	"\x17optional_nested_message\x18\x12 \x01(\v26.goproto.proto.testeditions.TestAllTypes.NestedMessageR\x15optionalNestedMessage\x12d\n" +
	"\x18optional_foreign_message\x18\x13 \x01(\v2*.goproto.proto.testeditions.ForeignMessageR\x16optionalForeignMessage\x12a\n" +
	"\x17optional_import_message\x18\x14 \x01(\v2).goproto.proto.testeditions.ImportMessageR\x15optionalImportMessage\x12e\n" +
	"\x14optional_nested_enum\x18\x15 \x01(\x0e23.goproto.proto.testeditions.TestAllTypes.NestedEnumR\x12optionalNestedEnum\x12[\n" +
	"\x15optional_foreign_enum\x18\x16 \x01(\x0e2'.goproto.proto.testeditions.ForeignEnumR\x13optionalForeignEnum\x12X\n" +
	"\x14optional_import_enum\x18\x17 \x01(\x0e2&.goproto.proto.testeditions.ImportEnumR\x12optionalImportEnum\x12{\n" +
	"\x1coptional_lazy_nested_message\x18\x18 \x01(\v26.goproto.proto.testeditions.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\x12e\n" +
	"\rrepeatedgroup\x18. \x03(\v26.goproto.proto.testeditions.TestAllTypes.RepeatedGroupB\a\xaa\x01\x04\x18\x02(\x02R\rrepeatedgroup\x12n\n" +
	"\x17repeated_nested_message\x180 \x03(\v26.goproto.proto.testeditions.TestAllTypes.NestedMessageR\x15repeatedNestedMessage\x12d\n" +
	"\x18repeated_foreign_message\x181 \x03(\v2*.goproto.proto.testeditions.ForeignMessageR\x16repeatedForeignMessage\x12`\n" +
	"\x16repeated_importmessage\x182 \x03(\v2).goproto.proto.testeditions.ImportMessageR\x15repeatedImportmessage\x12e\n" +
	"\x14repeated_nested_enum\x183 \x03(\x0e23.goproto.proto.testeditions.TestAllTypes.NestedEnumR\x12repeatedNestedEnum\x12[\n" +
	"\x15repeated_foreign_enum\x184 \x03(\x0e2'.goproto.proto.testeditions.ForeignEnumR\x13repeatedForeignEnum\x12W\n" +
	"\x13repeated_importenum\x185 \x03(\x0e2&.goproto.proto.testeditions.ImportEnumR\x12repeatedImportenum\x12c\n" +
	"\x0fmap_int32_int32\x188 \x03(\v2;.goproto.proto.testeditions.TestAllTypes.MapInt32Int32EntryR\rmapInt32Int32\x12c\n" +
	"\x0fmap_int64_int64\x189 \x03(\v2;.goproto.proto.testeditions.TestAllTypes.MapInt64Int64EntryR\rmapInt64Int64\x12i\n" +
	"\x11map_uint32_uint32\x18: \x03(\v2=.goproto.proto.testeditions.TestAllTypes.MapUint32Uint32EntryR\x0fmapUint32Uint32\x12i\n" +
	"\x11map_uint64_uint64\x18; \x03(\v2=.goproto.proto.testeditions.TestAllTypes.MapUint64Uint64EntryR\x0fmapUint64Uint64\x12i\n" +
	"\x11map_sint32_sint32\x18< \x03(\v2=.goproto.proto.testeditions.TestAllTypes.MapSint32Sint32EntryR\x0fmapSint32Sint32\x12i\n" +
	"\x11map_sint64_sint64\x18= \x03(\v2=.goproto.proto.testeditions.TestAllTypes.MapSint64Sint64EntryR\x0fmapSint64Sint64\x12o\n" +
	"\x13map_fixed32_fixed32\x18> \x03(\v2?.goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32EntryR\x11mapFixed32Fixed32\x12o\n" +
	"\x13map_fixed64_fixed64\x18? \x03(\v2?.goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64EntryR\x11mapFixed64Fixed64\x12u\n" +
	"\x15map_sfixed32_sfixed32\x18@ \x03(\v2A.goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32EntryR\x13mapSfixed32Sfixed32\x12u\n" +
	"\x15map_sfixed64_sfixed64\x18A \x03(\v2A.goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64EntryR\x13mapSfixed64Sfixed64\x12c\n" +
	"\x0fmap_int32_float\x18B \x03(\v2;.goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntryR\rmapInt32Float\x12f\n" +
	"\x10map_int32_double\x18C \x03(\v2<.goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntryR\x0emapInt32Double\x12]\n" +
	"\rmap_bool_bool\x18D \x03(\v29.goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntryR\vmapBoolBool\x12i\n" +
	"\x11map_string_string\x18E \x03(\v2=.goproto.proto.testeditions.TestAllTypes.MapStringStringEntryR\x0fmapStringString\x12f\n" +
	"\x10map_string_bytes\x18F \x03(\v2<.goproto.proto.testeditions.TestAllTypes.MapStringBytesEntryR\x0emapStringBytes\x12\x7f\n" +
	"\x19map_string_nested_message\x18G \x03(\v2D.goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntryR\x16mapStringNestedMessage\x12v\n" +
	"\x16map_string_nested_enum\x18I \x03(\v2A.goproto.proto.testeditions.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\x12h\n" +
	"\x13default_nested_enum\x18` \x01(\x0e23.goproto.proto.testeditions.TestAllTypes.NestedEnum:\x03BARR\x11defaultNestedEnum\x12f\n" +
	"\x14default_foreign_enum\x18a \x01(\x0e2'.goproto.proto.testeditions.ForeignEnum:\vFOREIGN_BARR\x12defaultForeignEnum\x12#\n" +
	"\foneof_uint32\x18o \x01(\rH\x00R\voneofUint32\x12j\n" +
	"\x14oneof_nested_message\x18p \x01(\v26.goproto.proto.testeditions.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\x12T\n" +
	"\n" +
	"oneof_enum\x18w \x01(\x0e23.goproto.proto.testeditions.TestAllTypes.NestedEnumH\x00R\toneofEnum\x12\\\n" +
	"\n" +
	"oneofgroup\x18y \x01(\v23.goproto.proto.testeditions.TestAllTypes.OneofGroupB\x05\xaa\x01\x02(\x02H\x00R\n" +
	"oneofgroup\x124\n" +
	"\x15oneof_optional_uint32\x18x \x01(\rH\x01R\x13oneofOptionalUint32\x1ai\n" +
	"\rNestedMessage\x12\f\n" +
	"\x01a\x18\x01 \x01(\x05R\x01a\x12J\n" +
	"\vcorecursive\x18\x02 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\vcorecursive\x1a\xba\x01\n" +
	"\rOptionalGroup\x12\f\n" +
	"\x01a\x18\x11 \x01(\x05R\x01a\x12o\n" +
	"\x17optional_nested_message\x18\xe8\a \x01(\v26.goproto.proto.testeditions.TestAllTypes.NestedMessageR\x15optionalNestedMessage\x12*\n" +
	"\x11same_field_number\x18\x10 \x01(\x05R\x0fsameFieldNumber\x1a\x8e\x01\n" +
	"\rRepeatedGroup\x12\f\n" +
	"\x01a\x18/ \x01(\x05R\x01a\x12o\n" +
	"\x17optional_nested_message\x18\xe9\a \x01(\v26.goproto.proto.testeditions.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\x1a\x81\x01\n" +
	"\x1bMapStringNestedMessageEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12L\n" +
	"\x05value\x18\x02 \x01(\v26.goproto.proto.testeditions.TestAllTypes.NestedMessageR\x05value:\x028\x01\x1a{\n" +
	"\x18MapStringNestedEnumEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12I\n" +
	"\x05value\x18\x02 \x01(\x0e23.goproto.proto.testeditions.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\"\xfe.\n" +
	"\x1cTestManyMessageFieldsMessage\x128\n" +
	"\x02f1\x18\x01 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f1\x128\n" +
	"\x02f2\x18\x02 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f2\x128\n" +
	"\x02f3\x18\x03 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f3\x128\n" +
	"\x02f4\x18\x04 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f4\x128\n" +
	"\x02f5\x18\x05 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f5\x128\n" +
	"\x02f6\x18\x06 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f6\x128\n" +
	"\x02f7\x18\a \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f7\x128\n" +
	"\x02f8\x18\b \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f8\x128\n" +
	"\x02f9\x18\t \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x02f9\x12:\n" +
	"\x03f10\x18\n" +
	" \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f10\x12:\n" +
	"\x03f11\x18\v \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f11\x12:\n" +
	"\x03f12\x18\f \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f12\x12:\n" +
	"\x03f13\x18\r \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f13\x12:\n" +
	"\x03f14\x18\x0e \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f14\x12:\n" +
	"\x03f15\x18\x0f \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f15\x12:\n" +
	"\x03f16\x18\x10 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f16\x12:\n" +
	"\x03f17\x18\x11 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f17\x12:\n" +
	"\x03f18\x18\x12 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f18\x12:\n" +
	"\x03f19\x18\x13 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f19\x12:\n" +
	"\x03f20\x18\x14 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f20\x12:\n" +
	"\x03f21\x18\x15 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f21\x12:\n" +
	"\x03f22\x18\x16 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f22\x12:\n" +
	"\x03f23\x18\x17 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f23\x12:\n" +
	"\x03f24\x18\x18 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f24\x12:\n" +
	"\x03f25\x18\x19 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f25\x12:\n" +
	"\x03f26\x18\x1a \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f26\x12:\n" +
	"\x03f27\x18\x1b \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f27\x12:\n" +
	"\x03f28\x18\x1c \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f28\x12:\n" +
	"\x03f29\x18\x1d \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f29\x12:\n" +
	"\x03f30\x18\x1e \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f30\x12:\n" +
	"\x03f31\x18\x1f \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f31\x12:\n" +
	"\x03f32\x18  \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f32\x12:\n" +
	"\x03f33\x18! \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f33\x12:\n" +
	"\x03f34\x18\" \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f34\x12:\n" +
	"\x03f35\x18# \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f35\x12:\n" +
	"\x03f36\x18$ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f36\x12:\n" +
	"\x03f37\x18% \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f37\x12:\n" +
	"\x03f38\x18& \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f38\x12:\n" +
	"\x03f39\x18' \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f39\x12:\n" +
	"\x03f40\x18( \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f40\x12:\n" +
	"\x03f41\x18) \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f41\x12:\n" +
	"\x03f42\x18* \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f42\x12:\n" +
	"\x03f43\x18+ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f43\x12:\n" +
	"\x03f44\x18, \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f44\x12:\n" +
	"\x03f45\x18- \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f45\x12:\n" +
	"\x03f46\x18. \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f46\x12:\n" +
	"\x03f47\x18/ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f47\x12:\n" +
	"\x03f48\x180 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f48\x12:\n" +
	"\x03f49\x181 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f49\x12:\n" +
	"\x03f50\x182 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f50\x12:\n" +
	"\x03f51\x183 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f51\x12:\n" +
	"\x03f52\x184 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f52\x12:\n" +
	"\x03f53\x185 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f53\x12:\n" +
	"\x03f54\x186 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f54\x12:\n" +
	"\x03f55\x187 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f55\x12:\n" +
	"\x03f56\x188 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f56\x12:\n" +
	"\x03f57\x189 \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f57\x12:\n" +
	"\x03f58\x18: \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f58\x12:\n" +
	"\x03f59\x18; \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f59\x12:\n" +
	"\x03f60\x18< \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f60\x12:\n" +
	"\x03f61\x18= \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f61\x12:\n" +
	"\x03f62\x18> \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f62\x12:\n" +
	"\x03f63\x18? \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f63\x12:\n" +
	"\x03f64\x18@ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f64\x12:\n" +
	"\x03f65\x18A \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f65\x12:\n" +
	"\x03f66\x18B \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f66\x12:\n" +
	"\x03f67\x18C \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f67\x12:\n" +
	"\x03f68\x18D \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f68\x12:\n" +
	"\x03f69\x18E \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f69\x12:\n" +
	"\x03f70\x18F \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f70\x12:\n" +
	"\x03f71\x18G \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f71\x12:\n" +
	"\x03f72\x18H \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f72\x12:\n" +
	"\x03f73\x18I \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f73\x12:\n" +
	"\x03f74\x18J \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f74\x12:\n" +
	"\x03f75\x18K \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f75\x12:\n" +
	"\x03f76\x18L \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f76\x12:\n" +
	"\x03f77\x18M \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f77\x12:\n" +
	"\x03f78\x18N \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f78\x12:\n" +
	"\x03f79\x18O \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f79\x12:\n" +
	"\x03f80\x18P \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f80\x12:\n" +
	"\x03f81\x18Q \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f81\x12:\n" +
	"\x03f82\x18R \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f82\x12:\n" +
	"\x03f83\x18S \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f83\x12:\n" +
	"\x03f84\x18T \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f84\x12:\n" +
	"\x03f85\x18U \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f85\x12:\n" +
	"\x03f86\x18V \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f86\x12:\n" +
	"\x03f87\x18W \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f87\x12:\n" +
	"\x03f88\x18X \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f88\x12:\n" +
	"\x03f89\x18Y \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f89\x12:\n" +
	"\x03f90\x18Z \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f90\x12:\n" +
	"\x03f91\x18[ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f91\x12:\n" +
	"\x03f92\x18\\ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f92\x12:\n" +
	"\x03f93\x18] \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f93\x12:\n" +
	"\x03f94\x18^ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f94\x12:\n" +
	"\x03f95\x18_ \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f95\x12:\n" +
	"\x03f96\x18` \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f96\x12:\n" +
	"\x03f97\x18a \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f97\x12:\n" +
	"\x03f98\x18b \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f98\x12:\n" +
	"\x03f99\x18c \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x03f99\x12<\n" +
	"\x04f100\x18d \x01(\v2(.goproto.proto.testeditions.TestAllTypesR\x04f100\",\n" +
	"\x0eForeignMessage\x12\f\n" +
	"\x01c\x18\x01 \x01(\x05R\x01c\x12\f\n" +
	"\x01d\x18\x02 \x01(\x05R\x01d\"<\n" +
	"\fTestRequired\x12,\n" +
	"\x0erequired_field\x18\x01 \x01(\x05B\x05\xaa\x01\x02\b\x03R\rrequiredField\"\xea\x03\n" +
	"\x13TestRequiredForeign\x12S\n" +
	"\x10optional_message\x18\x01 \x01(\v2(.goproto.proto.testeditions.TestRequiredR\x0foptionalMessage\x12S\n" +
	"\x10repeated_message\x18\x02 \x03(\v2(.goproto.proto.testeditions.TestRequiredR\x0frepeatedMessage\x12`\n" +
	"\vmap_message\x18\x03 \x03(\v2?.goproto.proto.testeditions.TestRequiredForeign.MapMessageEntryR\n" +
	"mapMessage\x12O\n" +
	"\roneof_message\x18\x04 \x01(\v2(.goproto.proto.testeditions.TestRequiredH\x00R\foneofMessage\x1ag\n" +
	"\x0fMapMessageEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x12>\n" +
	"\x05value\x18\x02 \x01(\v2(.goproto.proto.testeditions.TestRequiredR\x05value:\x028\x01B\r\n" +
	"\voneof_field\"\xc5\x02\n" +
	"\x17TestRequiredGroupFields\x12n\n" +
	"\roptionalgroup\x18\x01 \x01(\v2A.goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroupB\x05\xaa\x01\x02(\x02R\roptionalgroup\x12n\n" +
	"\rrepeatedgroup\x18\x03 \x03(\v2A.goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroupB\x05\xaa\x01\x02(\x02R\rrepeatedgroup\x1a$\n" +
	"\rOptionalGroup\x12\x13\n" +
	"\x01a\x18\x02 \x01(\x05B\x05\xaa\x01\x02\b\x03R\x01a\x1a$\n" +
	"\rRepeatedGroup\x12\x13\n" +
	"\x01a\x18\x04 \x01(\x05B\x05\xaa\x01\x02\b\x03R\x01a\"t\n" +
	"\x10TestRequiredLazy\x12`\n" +
	"\x15optional_lazy_message\x18\x01 \x01(\v2(.goproto.proto.testeditions.TestRequiredB\x02(\x01R\x13optionalLazyMessage\"\xa0\x05\n" +
	"\x0fTestPackedTypes\x12(\n" +
	"\fpacked_int32\x18Z \x03(\x05B\x05\xaa\x01\x02\x18\x01R\vpackedInt32\x12(\n" +
	"\fpacked_int64\x18[ \x03(\x03B\x05\xaa\x01\x02\x18\x01R\vpackedInt64\x12*\n" +
	"\rpacked_uint32\x18\\ \x03(\rB\x05\xaa\x01\x02\x18\x01R\fpackedUint32\x12*\n" +
	"\rpacked_uint64\x18] \x03(\x04B\x05\xaa\x01\x02\x18\x01R\fpackedUint64\x12*\n" +
	"\rpacked_sint32\x18^ \x03(\x11B\x05\xaa\x01\x02\x18\x01R\fpackedSint32\x12*\n" +
	"\rpacked_sint64\x18_ \x03(\x12B\x05\xaa\x01\x02\x18\x01R\fpackedSint64\x12,\n" +
	"\x0epacked_fixed32\x18` \x03(\aB\x05\xaa\x01\x02\x18\x01R\rpackedFixed32\x12,\n" +
	"\x0epacked_fixed64\x18a \x03(\x06B\x05\xaa\x01\x02\x18\x01R\rpackedFixed64\x12.\n" +
	"\x0fpacked_sfixed32\x18b \x03(\x0fB\x05\xaa\x01\x02\x18\x01R\x0epackedSfixed32\x12.\n" +
	"\x0fpacked_sfixed64\x18c \x03(\x10B\x05\xaa\x01\x02\x18\x01R\x0epackedSfixed64\x12(\n" +
	"\fpacked_float\x18d \x03(\x02B\x05\xaa\x01\x02\x18\x01R\vpackedFloat\x12*\n" +
	"\rpacked_double\x18e \x03(\x01B\x05\xaa\x01\x02\x18\x01R\fpackedDouble\x12&\n" +
	"\vpacked_bool\x18f \x03(\bB\x05\xaa\x01\x02\x18\x01R\n" +
	"packedBool\x12O\n" +
	"\vpacked_enum\x18g \x03(\x0e2'.goproto.proto.testeditions.ForeignEnumB\x05\xaa\x01\x02\x18\x01R\n" +
	"packedEnum\" \n" +
	"\x14TestPackedExtensions*\b\b\x01\x10\x80\x80\x80\x80\x02\"\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*R\n" +
	"\vForeignEnum\x12\x10\n" +
	"\fFOREIGN_ZERO\x10\x00\x12\x0f\n" +
	"\vFOREIGN_FOO\x10\x04\x12\x0f\n" +
	"\vFOREIGN_BAR\x10\x05\x12\x0f\n" +
	"\vFOREIGN_BAZ\x10\x06:Z\n" +
	"\fpacked_int32\x120.goproto.proto.testeditions.TestPackedExtensions\x18Z \x03(\x05B\x05\xaa\x01\x02\x18\x01R\vpackedInt32:Z\n" +
	"\fpacked_int64\x120.goproto.proto.testeditions.TestPackedExtensions\x18[ \x03(\x03B\x05\xaa\x01\x02\x18\x01R\vpackedInt64:\\\n" +
	"\rpacked_uint32\x120.goproto.proto.testeditions.TestPackedExtensions\x18\\ \x03(\rB\x05\xaa\x01\x02\x18\x01R\fpackedUint32:\\\n" +
	"\rpacked_uint64\x120.goproto.proto.testeditions.TestPackedExtensions\x18] \x03(\x04B\x05\xaa\x01\x02\x18\x01R\fpackedUint64:\\\n" +
	"\rpacked_sint32\x120.goproto.proto.testeditions.TestPackedExtensions\x18^ \x03(\x11B\x05\xaa\x01\x02\x18\x01R\fpackedSint32:\\\n" +
	"\rpacked_sint64\x120.goproto.proto.testeditions.TestPackedExtensions\x18_ \x03(\x12B\x05\xaa\x01\x02\x18\x01R\fpackedSint64:^\n" +
	"\x0epacked_fixed32\x120.goproto.proto.testeditions.TestPackedExtensions\x18` \x03(\aB\x05\xaa\x01\x02\x18\x01R\rpackedFixed32:^\n" +
	"\x0epacked_fixed64\x120.goproto.proto.testeditions.TestPackedExtensions\x18a \x03(\x06B\x05\xaa\x01\x02\x18\x01R\rpackedFixed64:`\n" +
	"\x0fpacked_sfixed32\x120.goproto.proto.testeditions.TestPackedExtensions\x18b \x03(\x0fB\x05\xaa\x01\x02\x18\x01R\x0epackedSfixed32:`\n" +
	"\x0fpacked_sfixed64\x120.goproto.proto.testeditions.TestPackedExtensions\x18c \x03(\x10B\x05\xaa\x01\x02\x18\x01R\x0epackedSfixed64:Z\n" +
	"\fpacked_float\x120.goproto.proto.testeditions.TestPackedExtensions\x18d \x03(\x02B\x05\xaa\x01\x02\x18\x01R\vpackedFloat:\\\n" +
	"\rpacked_double\x120.goproto.proto.testeditions.TestPackedExtensions\x18e \x03(\x01B\x05\xaa\x01\x02\x18\x01R\fpackedDouble:X\n" +
	"\vpacked_bool\x120.goproto.proto.testeditions.TestPackedExtensions\x18f \x03(\bB\x05\xaa\x01\x02\x18\x01R\n" +
	"packedBool:\x81\x01\n" +
	"\vpacked_enum\x120.goproto.proto.testeditions.TestPackedExtensions\x18g \x03(\x0e2'.goproto.proto.testeditions.ForeignEnumB\x05\xaa\x01\x02\x18\x01R\n" +
	"packedEnumB=Z;google.golang.org/protobuf/internal/testprotos/testeditionsb\beditionsp\xe8\a"

var (
	file_internal_testprotos_testeditions_test_proto_rawDescOnce sync.Once
	file_internal_testprotos_testeditions_test_proto_rawDescData []byte
)

func file_internal_testprotos_testeditions_test_proto_rawDescGZIP() []byte {
	file_internal_testprotos_testeditions_test_proto_rawDescOnce.Do(func() {
		file_internal_testprotos_testeditions_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_test_proto_rawDesc), len(file_internal_testprotos_testeditions_test_proto_rawDesc)))
	})
	return file_internal_testprotos_testeditions_test_proto_rawDescData
}

var file_internal_testprotos_testeditions_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_internal_testprotos_testeditions_test_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
var file_internal_testprotos_testeditions_test_proto_goTypes = []any{
	(ForeignEnum)(0),                     // 0: goproto.proto.testeditions.ForeignEnum
	(TestAllTypes_NestedEnum)(0),         // 1: goproto.proto.testeditions.TestAllTypes.NestedEnum
	(*TestAllTypes)(nil),                 // 2: goproto.proto.testeditions.TestAllTypes
	(*TestManyMessageFieldsMessage)(nil), // 3: goproto.proto.testeditions.TestManyMessageFieldsMessage
	(*ForeignMessage)(nil),               // 4: goproto.proto.testeditions.ForeignMessage
	(*TestRequired)(nil),                 // 5: goproto.proto.testeditions.TestRequired
	(*TestRequiredForeign)(nil),          // 6: goproto.proto.testeditions.TestRequiredForeign
	(*TestRequiredGroupFields)(nil),      // 7: goproto.proto.testeditions.TestRequiredGroupFields
	(*TestRequiredLazy)(nil),             // 8: goproto.proto.testeditions.TestRequiredLazy
	(*TestPackedTypes)(nil),              // 9: goproto.proto.testeditions.TestPackedTypes
	(*TestPackedExtensions)(nil),         // 10: goproto.proto.testeditions.TestPackedExtensions
	(*RemoteDefault)(nil),                // 11: goproto.proto.testeditions.RemoteDefault
	(*TestAllTypes_NestedMessage)(nil),   // 12: goproto.proto.testeditions.TestAllTypes.NestedMessage
	(*TestAllTypes_OptionalGroup)(nil),   // 13: goproto.proto.testeditions.TestAllTypes.OptionalGroup
	(*TestAllTypes_RepeatedGroup)(nil),   // 14: goproto.proto.testeditions.TestAllTypes.RepeatedGroup
	nil,                                  // 15: goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
	nil,                                  // 16: goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
	nil,                                  // 17: goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
	nil,                                  // 18: goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
	nil,                                  // 19: goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
	nil,                                  // 20: goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
	nil,                                  // 21: goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
	nil,                                  // 22: goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
	nil,                                  // 23: goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
	nil,                                  // 24: goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
	nil,                                  // 25: goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
	nil,                                  // 26: goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
	nil,                                  // 27: goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
	nil,                                  // 28: goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
	nil,                                  // 29: goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
	nil,                                  // 30: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
	nil,                                  // 31: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
	(*TestAllTypes_OneofGroup)(nil),      // 32: goproto.proto.testeditions.TestAllTypes.OneofGroup
	nil,                                  // 33: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
	(*TestRequiredGroupFields_OptionalGroup)(nil), // 34: goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 35: goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
	(ImportEnum)(0),       // 36: goproto.proto.testeditions.ImportEnum
	(*ImportMessage)(nil), // 37: goproto.proto.testeditions.ImportMessage
	(enums.Enum)(0),       // 38: goproto.proto.enums.Enum
}
var file_internal_testprotos_testeditions_test_proto_depIdxs = []int32{
	1,   // 0: goproto.proto.testeditions.TestAllTypes.singular_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	0,   // 1: goproto.proto.testeditions.TestAllTypes.singular_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	36,  // 2: goproto.proto.testeditions.TestAllTypes.singular_import_enum:type_name -> goproto.proto.testeditions.ImportEnum
	13,  // 3: goproto.proto.testeditions.TestAllTypes.optionalgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
	13,  // 4: goproto.proto.testeditions.TestAllTypes.not_group_like_delimited:type_name -> goproto.proto.testeditions.TestAllTypes.OptionalGroup
	12,  // 5: goproto.proto.testeditions.TestAllTypes.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	4,   // 6: goproto.proto.testeditions.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
	37,  // 7: goproto.proto.testeditions.TestAllTypes.optional_import_message:type_name -> goproto.proto.testeditions.ImportMessage
	1,   // 8: goproto.proto.testeditions.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	0,   // 9: goproto.proto.testeditions.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	36,  // 10: goproto.proto.testeditions.TestAllTypes.optional_import_enum:type_name -> goproto.proto.testeditions.ImportEnum
	12,  // 11: goproto.proto.testeditions.TestAllTypes.optional_lazy_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	14,  // 12: goproto.proto.testeditions.TestAllTypes.repeatedgroup:type_name -> goproto.proto.testeditions.TestAllTypes.RepeatedGroup
	12,  // 13: goproto.proto.testeditions.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	4,   // 14: goproto.proto.testeditions.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.testeditions.ForeignMessage
	37,  // 15: goproto.proto.testeditions.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.testeditions.ImportMessage
	1,   // 16: goproto.proto.testeditions.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	0,   // 17: goproto.proto.testeditions.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	36,  // 18: goproto.proto.testeditions.TestAllTypes.repeated_importenum:type_name -> goproto.proto.testeditions.ImportEnum
	15,  // 19: goproto.proto.testeditions.TestAllTypes.map_int32_int32:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32Int32Entry
	16,  // 20: goproto.proto.testeditions.TestAllTypes.map_int64_int64:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt64Int64Entry
	17,  // 21: goproto.proto.testeditions.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint32Uint32Entry
	18,  // 22: goproto.proto.testeditions.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapUint64Uint64Entry
	19,  // 23: goproto.proto.testeditions.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint32Sint32Entry
	20,  // 24: goproto.proto.testeditions.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSint64Sint64Entry
	21,  // 25: goproto.proto.testeditions.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed32Fixed32Entry
	22,  // 26: goproto.proto.testeditions.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapFixed64Fixed64Entry
	23,  // 27: goproto.proto.testeditions.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed32Sfixed32Entry
	24,  // 28: goproto.proto.testeditions.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.testeditions.TestAllTypes.MapSfixed64Sfixed64Entry
	25,  // 29: goproto.proto.testeditions.TestAllTypes.map_int32_float:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32FloatEntry
	26,  // 30: goproto.proto.testeditions.TestAllTypes.map_int32_double:type_name -> goproto.proto.testeditions.TestAllTypes.MapInt32DoubleEntry
	27,  // 31: goproto.proto.testeditions.TestAllTypes.map_bool_bool:type_name -> goproto.proto.testeditions.TestAllTypes.MapBoolBoolEntry
	28,  // 32: goproto.proto.testeditions.TestAllTypes.map_string_string:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringStringEntry
	29,  // 33: goproto.proto.testeditions.TestAllTypes.map_string_bytes:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringBytesEntry
	30,  // 34: goproto.proto.testeditions.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry
	31,  // 35: goproto.proto.testeditions.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry
	1,   // 36: goproto.proto.testeditions.TestAllTypes.default_nested_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	0,   // 37: goproto.proto.testeditions.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	12,  // 38: goproto.proto.testeditions.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	1,   // 39: goproto.proto.testeditions.TestAllTypes.oneof_enum:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	32,  // 40: goproto.proto.testeditions.TestAllTypes.oneofgroup:type_name -> goproto.proto.testeditions.TestAllTypes.OneofGroup
	2,   // 41: goproto.proto.testeditions.TestManyMessageFieldsMessage.f1:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 42: goproto.proto.testeditions.TestManyMessageFieldsMessage.f2:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 43: goproto.proto.testeditions.TestManyMessageFieldsMessage.f3:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 44: goproto.proto.testeditions.TestManyMessageFieldsMessage.f4:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 45: goproto.proto.testeditions.TestManyMessageFieldsMessage.f5:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 46: goproto.proto.testeditions.TestManyMessageFieldsMessage.f6:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 47: goproto.proto.testeditions.TestManyMessageFieldsMessage.f7:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 48: goproto.proto.testeditions.TestManyMessageFieldsMessage.f8:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 49: goproto.proto.testeditions.TestManyMessageFieldsMessage.f9:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 50: goproto.proto.testeditions.TestManyMessageFieldsMessage.f10:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 51: goproto.proto.testeditions.TestManyMessageFieldsMessage.f11:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 52: goproto.proto.testeditions.TestManyMessageFieldsMessage.f12:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 53: goproto.proto.testeditions.TestManyMessageFieldsMessage.f13:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 54: goproto.proto.testeditions.TestManyMessageFieldsMessage.f14:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 55: goproto.proto.testeditions.TestManyMessageFieldsMessage.f15:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 56: goproto.proto.testeditions.TestManyMessageFieldsMessage.f16:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 57: goproto.proto.testeditions.TestManyMessageFieldsMessage.f17:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 58: goproto.proto.testeditions.TestManyMessageFieldsMessage.f18:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 59: goproto.proto.testeditions.TestManyMessageFieldsMessage.f19:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 60: goproto.proto.testeditions.TestManyMessageFieldsMessage.f20:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 61: goproto.proto.testeditions.TestManyMessageFieldsMessage.f21:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 62: goproto.proto.testeditions.TestManyMessageFieldsMessage.f22:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 63: goproto.proto.testeditions.TestManyMessageFieldsMessage.f23:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 64: goproto.proto.testeditions.TestManyMessageFieldsMessage.f24:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 65: goproto.proto.testeditions.TestManyMessageFieldsMessage.f25:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 66: goproto.proto.testeditions.TestManyMessageFieldsMessage.f26:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 67: goproto.proto.testeditions.TestManyMessageFieldsMessage.f27:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 68: goproto.proto.testeditions.TestManyMessageFieldsMessage.f28:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 69: goproto.proto.testeditions.TestManyMessageFieldsMessage.f29:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 70: goproto.proto.testeditions.TestManyMessageFieldsMessage.f30:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 71: goproto.proto.testeditions.TestManyMessageFieldsMessage.f31:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 72: goproto.proto.testeditions.TestManyMessageFieldsMessage.f32:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 73: goproto.proto.testeditions.TestManyMessageFieldsMessage.f33:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 74: goproto.proto.testeditions.TestManyMessageFieldsMessage.f34:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 75: goproto.proto.testeditions.TestManyMessageFieldsMessage.f35:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 76: goproto.proto.testeditions.TestManyMessageFieldsMessage.f36:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 77: goproto.proto.testeditions.TestManyMessageFieldsMessage.f37:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 78: goproto.proto.testeditions.TestManyMessageFieldsMessage.f38:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 79: goproto.proto.testeditions.TestManyMessageFieldsMessage.f39:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 80: goproto.proto.testeditions.TestManyMessageFieldsMessage.f40:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 81: goproto.proto.testeditions.TestManyMessageFieldsMessage.f41:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 82: goproto.proto.testeditions.TestManyMessageFieldsMessage.f42:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 83: goproto.proto.testeditions.TestManyMessageFieldsMessage.f43:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 84: goproto.proto.testeditions.TestManyMessageFieldsMessage.f44:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 85: goproto.proto.testeditions.TestManyMessageFieldsMessage.f45:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 86: goproto.proto.testeditions.TestManyMessageFieldsMessage.f46:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 87: goproto.proto.testeditions.TestManyMessageFieldsMessage.f47:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 88: goproto.proto.testeditions.TestManyMessageFieldsMessage.f48:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 89: goproto.proto.testeditions.TestManyMessageFieldsMessage.f49:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 90: goproto.proto.testeditions.TestManyMessageFieldsMessage.f50:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 91: goproto.proto.testeditions.TestManyMessageFieldsMessage.f51:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 92: goproto.proto.testeditions.TestManyMessageFieldsMessage.f52:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 93: goproto.proto.testeditions.TestManyMessageFieldsMessage.f53:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 94: goproto.proto.testeditions.TestManyMessageFieldsMessage.f54:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 95: goproto.proto.testeditions.TestManyMessageFieldsMessage.f55:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 96: goproto.proto.testeditions.TestManyMessageFieldsMessage.f56:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 97: goproto.proto.testeditions.TestManyMessageFieldsMessage.f57:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 98: goproto.proto.testeditions.TestManyMessageFieldsMessage.f58:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 99: goproto.proto.testeditions.TestManyMessageFieldsMessage.f59:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 100: goproto.proto.testeditions.TestManyMessageFieldsMessage.f60:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 101: goproto.proto.testeditions.TestManyMessageFieldsMessage.f61:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 102: goproto.proto.testeditions.TestManyMessageFieldsMessage.f62:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 103: goproto.proto.testeditions.TestManyMessageFieldsMessage.f63:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 104: goproto.proto.testeditions.TestManyMessageFieldsMessage.f64:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 105: goproto.proto.testeditions.TestManyMessageFieldsMessage.f65:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 106: goproto.proto.testeditions.TestManyMessageFieldsMessage.f66:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 107: goproto.proto.testeditions.TestManyMessageFieldsMessage.f67:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 108: goproto.proto.testeditions.TestManyMessageFieldsMessage.f68:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 109: goproto.proto.testeditions.TestManyMessageFieldsMessage.f69:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 110: goproto.proto.testeditions.TestManyMessageFieldsMessage.f70:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 111: goproto.proto.testeditions.TestManyMessageFieldsMessage.f71:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 112: goproto.proto.testeditions.TestManyMessageFieldsMessage.f72:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 113: goproto.proto.testeditions.TestManyMessageFieldsMessage.f73:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 114: goproto.proto.testeditions.TestManyMessageFieldsMessage.f74:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 115: goproto.proto.testeditions.TestManyMessageFieldsMessage.f75:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 116: goproto.proto.testeditions.TestManyMessageFieldsMessage.f76:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 117: goproto.proto.testeditions.TestManyMessageFieldsMessage.f77:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 118: goproto.proto.testeditions.TestManyMessageFieldsMessage.f78:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 119: goproto.proto.testeditions.TestManyMessageFieldsMessage.f79:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 120: goproto.proto.testeditions.TestManyMessageFieldsMessage.f80:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 121: goproto.proto.testeditions.TestManyMessageFieldsMessage.f81:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 122: goproto.proto.testeditions.TestManyMessageFieldsMessage.f82:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 123: goproto.proto.testeditions.TestManyMessageFieldsMessage.f83:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 124: goproto.proto.testeditions.TestManyMessageFieldsMessage.f84:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 125: goproto.proto.testeditions.TestManyMessageFieldsMessage.f85:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 126: goproto.proto.testeditions.TestManyMessageFieldsMessage.f86:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 127: goproto.proto.testeditions.TestManyMessageFieldsMessage.f87:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 128: goproto.proto.testeditions.TestManyMessageFieldsMessage.f88:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 129: goproto.proto.testeditions.TestManyMessageFieldsMessage.f89:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 130: goproto.proto.testeditions.TestManyMessageFieldsMessage.f90:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 131: goproto.proto.testeditions.TestManyMessageFieldsMessage.f91:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 132: goproto.proto.testeditions.TestManyMessageFieldsMessage.f92:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 133: goproto.proto.testeditions.TestManyMessageFieldsMessage.f93:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 134: goproto.proto.testeditions.TestManyMessageFieldsMessage.f94:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 135: goproto.proto.testeditions.TestManyMessageFieldsMessage.f95:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 136: goproto.proto.testeditions.TestManyMessageFieldsMessage.f96:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 137: goproto.proto.testeditions.TestManyMessageFieldsMessage.f97:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 138: goproto.proto.testeditions.TestManyMessageFieldsMessage.f98:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 139: goproto.proto.testeditions.TestManyMessageFieldsMessage.f99:type_name -> goproto.proto.testeditions.TestAllTypes
	2,   // 140: goproto.proto.testeditions.TestManyMessageFieldsMessage.f100:type_name -> goproto.proto.testeditions.TestAllTypes
	5,   // 141: goproto.proto.testeditions.TestRequiredForeign.optional_message:type_name -> goproto.proto.testeditions.TestRequired
	5,   // 142: goproto.proto.testeditions.TestRequiredForeign.repeated_message:type_name -> goproto.proto.testeditions.TestRequired
	33,  // 143: goproto.proto.testeditions.TestRequiredForeign.map_message:type_name -> goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry
	5,   // 144: goproto.proto.testeditions.TestRequiredForeign.oneof_message:type_name -> goproto.proto.testeditions.TestRequired
	34,  // 145: goproto.proto.testeditions.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.OptionalGroup
	35,  // 146: goproto.proto.testeditions.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.testeditions.TestRequiredGroupFields.RepeatedGroup
	5,   // 147: goproto.proto.testeditions.TestRequiredLazy.optional_lazy_message:type_name -> goproto.proto.testeditions.TestRequired
	0,   // 148: goproto.proto.testeditions.TestPackedTypes.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	38,  // 149: goproto.proto.testeditions.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
	38,  // 150: goproto.proto.testeditions.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
	38,  // 151: goproto.proto.testeditions.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
	38,  // 152: goproto.proto.testeditions.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
	38,  // 153: goproto.proto.testeditions.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
	38,  // 154: goproto.proto.testeditions.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
	38,  // 155: goproto.proto.testeditions.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
	38,  // 156: goproto.proto.testeditions.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
	2,   // 157: goproto.proto.testeditions.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.testeditions.TestAllTypes
	12,  // 158: goproto.proto.testeditions.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	12,  // 159: goproto.proto.testeditions.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	12,  // 160: goproto.proto.testeditions.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedMessage
	1,   // 161: goproto.proto.testeditions.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.testeditions.TestAllTypes.NestedEnum
	5,   // 162: goproto.proto.testeditions.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.testeditions.TestRequired
	10,  // 163: goproto.proto.testeditions.packed_int32:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 164: goproto.proto.testeditions.packed_int64:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 165: goproto.proto.testeditions.packed_uint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 166: goproto.proto.testeditions.packed_uint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 167: goproto.proto.testeditions.packed_sint32:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 168: goproto.proto.testeditions.packed_sint64:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 169: goproto.proto.testeditions.packed_fixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 170: goproto.proto.testeditions.packed_fixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 171: goproto.proto.testeditions.packed_sfixed32:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 172: goproto.proto.testeditions.packed_sfixed64:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 173: goproto.proto.testeditions.packed_float:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 174: goproto.proto.testeditions.packed_double:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 175: goproto.proto.testeditions.packed_bool:extendee -> goproto.proto.testeditions.TestPackedExtensions
	10,  // 176: goproto.proto.testeditions.packed_enum:extendee -> goproto.proto.testeditions.TestPackedExtensions
	0,   // 177: goproto.proto.testeditions.packed_enum:type_name -> goproto.proto.testeditions.ForeignEnum
	178, // [178:178] is the sub-list for method output_type
	178, // [178:178] is the sub-list for method input_type
	177, // [177:178] is the sub-list for extension type_name
	163, // [163:177] is the sub-list for extension extendee
	0,   // [0:163] is the sub-list for field type_name
}

func init() { file_internal_testprotos_testeditions_test_proto_init() }
func file_internal_testprotos_testeditions_test_proto_init() {
	if File_internal_testprotos_testeditions_test_proto != nil {
		return
	}
	file_internal_testprotos_testeditions_test_import_proto_init()
	file_internal_testprotos_testeditions_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_testeditions_test_proto_msgTypes[4].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_testeditions_test_proto_rawDesc), len(file_internal_testprotos_testeditions_test_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   34,
			NumExtensions: 14,
			NumServices:   0,
		},
		GoTypes:           file_internal_testprotos_testeditions_test_proto_goTypes,
		DependencyIndexes: file_internal_testprotos_testeditions_test_proto_depIdxs,
		EnumInfos:         file_internal_testprotos_testeditions_test_proto_enumTypes,
		MessageInfos:      file_internal_testprotos_testeditions_test_proto_msgTypes,
		ExtensionInfos:    file_internal_testprotos_testeditions_test_proto_extTypes,
	}.Build()
	File_internal_testprotos_testeditions_test_proto = out.File
	file_internal_testprotos_testeditions_test_proto_goTypes = nil
	file_internal_testprotos_testeditions_test_proto_depIdxs = nil
}
