// 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/testeditions_opaque/test_extension.opaque.proto

package testeditions_opaque

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	_ "google.golang.org/protobuf/types/gofeaturespb"
	reflect "reflect"
)

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

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

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

func (*TestAllExtensions) ProtoMessage() {}

func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

type TestAllExtensions_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 TestAllExtensions_builder) Build() *TestAllExtensions {
	m0 := &TestAllExtensions{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

type OptionalGroup struct {
	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
	xxx_hidden_A                     int32                            `protobuf:"varint,17,opt,name=a"`
	xxx_hidden_SameFieldNumber       int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
	XXX_presence                     [1]uint32
	unknownFields                    protoimpl.UnknownFields
	sizeCache                        protoimpl.SizeCache
}

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

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

func (*OptionalGroup) ProtoMessage() {}

func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

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

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

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

func (x *OptionalGroup) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
}

func (x *OptionalGroup) SetSameFieldNumber(v int32) {
	x.xxx_hidden_SameFieldNumber = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
}

func (x *OptionalGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
	x.xxx_hidden_OptionalNestedMessage = v
}

func (x *OptionalGroup) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *OptionalGroup) HasSameFieldNumber() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
}

func (x *OptionalGroup) HasOptionalNestedMessage() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_OptionalNestedMessage != nil
}

func (x *OptionalGroup) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *OptionalGroup) ClearSameFieldNumber() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
	x.xxx_hidden_SameFieldNumber = 0
}

func (x *OptionalGroup) ClearOptionalNestedMessage() {
	x.xxx_hidden_OptionalNestedMessage = nil
}

type OptionalGroup_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A                     *int32
	SameFieldNumber       *int32
	OptionalNestedMessage *TestAllExtensions_NestedMessage
}

func (b0 OptionalGroup_builder) Build() *OptionalGroup {
	m0 := &OptionalGroup{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
		x.xxx_hidden_A = *b.A
	}
	if b.SameFieldNumber != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
		x.xxx_hidden_SameFieldNumber = *b.SameFieldNumber
	}
	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

type RepeatedGroup struct {
	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
	xxx_hidden_A                     int32                            `protobuf:"varint,47,opt,name=a"`
	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
	XXX_presence                     [1]uint32
	unknownFields                    protoimpl.UnknownFields
	sizeCache                        protoimpl.SizeCache
}

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

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

func (*RepeatedGroup) ProtoMessage() {}

func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

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

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

func (x *RepeatedGroup) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
}

func (x *RepeatedGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
	x.xxx_hidden_OptionalNestedMessage = v
}

func (x *RepeatedGroup) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *RepeatedGroup) HasOptionalNestedMessage() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_OptionalNestedMessage != nil
}

func (x *RepeatedGroup) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *RepeatedGroup) ClearOptionalNestedMessage() {
	x.xxx_hidden_OptionalNestedMessage = nil
}

type RepeatedGroup_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A                     *int32
	OptionalNestedMessage *TestAllExtensions_NestedMessage
}

func (b0 RepeatedGroup_builder) Build() *RepeatedGroup {
	m0 := &RepeatedGroup{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
		x.xxx_hidden_A = *b.A
	}
	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

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

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

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

func (*TestFeatureResolution) ProtoMessage() {}

func (x *TestFeatureResolution) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

type TestFeatureResolution_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 TestFeatureResolution_builder) Build() *TestFeatureResolution {
	m0 := &TestFeatureResolution{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

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

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

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

func (*RepeatedFieldEncoding) ProtoMessage() {}

func (x *RepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

type RepeatedFieldEncoding_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 RepeatedFieldEncoding_builder) Build() *RepeatedFieldEncoding {
	m0 := &RepeatedFieldEncoding{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

type TestAllExtensions_NestedMessage struct {
	state                  protoimpl.MessageState `protogen:"opaque.v1"`
	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
	xxx_hidden_Corecursive *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive"`
	XXX_raceDetectHookData protoimpl.RaceDetectHookData
	XXX_presence           [1]uint32
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

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

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

func (*TestAllExtensions_NestedMessage) ProtoMessage() {}

func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_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)
}

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

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

func (x *TestAllExtensions_NestedMessage) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
}

func (x *TestAllExtensions_NestedMessage) SetCorecursive(v *TestAllExtensions) {
	x.xxx_hidden_Corecursive = v
}

func (x *TestAllExtensions_NestedMessage) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *TestAllExtensions_NestedMessage) HasCorecursive() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_Corecursive != nil
}

func (x *TestAllExtensions_NestedMessage) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *TestAllExtensions_NestedMessage) ClearCorecursive() {
	x.xxx_hidden_Corecursive = nil
}

type TestAllExtensions_NestedMessage_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A           *int32
	Corecursive *TestAllExtensions
}

func (b0 TestAllExtensions_NestedMessage_builder) Build() *TestAllExtensions_NestedMessage {
	m0 := &TestAllExtensions_NestedMessage{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
		x.xxx_hidden_A = *b.A
	}
	x.xxx_hidden_Corecursive = b.Corecursive
	return m0
}

var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         1,
		Name:          "opaque.goproto.proto.testeditions.optional_int32",
		Tag:           "varint,1,opt,name=optional_int32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         2,
		Name:          "opaque.goproto.proto.testeditions.optional_int64",
		Tag:           "varint,2,opt,name=optional_int64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         3,
		Name:          "opaque.goproto.proto.testeditions.optional_uint32",
		Tag:           "varint,3,opt,name=optional_uint32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         4,
		Name:          "opaque.goproto.proto.testeditions.optional_uint64",
		Tag:           "varint,4,opt,name=optional_uint64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         5,
		Name:          "opaque.goproto.proto.testeditions.optional_sint32",
		Tag:           "zigzag32,5,opt,name=optional_sint32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         6,
		Name:          "opaque.goproto.proto.testeditions.optional_sint64",
		Tag:           "zigzag64,6,opt,name=optional_sint64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         7,
		Name:          "opaque.goproto.proto.testeditions.optional_fixed32",
		Tag:           "fixed32,7,opt,name=optional_fixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         8,
		Name:          "opaque.goproto.proto.testeditions.optional_fixed64",
		Tag:           "fixed64,8,opt,name=optional_fixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         9,
		Name:          "opaque.goproto.proto.testeditions.optional_sfixed32",
		Tag:           "fixed32,9,opt,name=optional_sfixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         10,
		Name:          "opaque.goproto.proto.testeditions.optional_sfixed64",
		Tag:           "fixed64,10,opt,name=optional_sfixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         11,
		Name:          "opaque.goproto.proto.testeditions.optional_float",
		Tag:           "fixed32,11,opt,name=optional_float",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         12,
		Name:          "opaque.goproto.proto.testeditions.optional_double",
		Tag:           "fixed64,12,opt,name=optional_double",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         13,
		Name:          "opaque.goproto.proto.testeditions.optional_bool",
		Tag:           "varint,13,opt,name=optional_bool",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         14,
		Name:          "opaque.goproto.proto.testeditions.optional_string",
		Tag:           "bytes,14,opt,name=optional_string",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         15,
		Name:          "opaque.goproto.proto.testeditions.optional_bytes",
		Tag:           "bytes,15,opt,name=optional_bytes",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*OptionalGroup)(nil),
		Field:         16,
		Name:          "opaque.goproto.proto.testeditions.optionalgroup",
		Tag:           "group,16,opt,name=OptionalGroup",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
		Field:         18,
		Name:          "opaque.goproto.proto.testeditions.optional_nested_message",
		Tag:           "bytes,18,opt,name=optional_nested_message",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
		Field:         21,
		Name:          "opaque.goproto.proto.testeditions.optional_nested_enum",
		Tag:           "varint,21,opt,name=optional_nested_enum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         31,
		Name:          "opaque.goproto.proto.testeditions.repeated_int32",
		Tag:           "varint,31,rep,name=repeated_int32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         32,
		Name:          "opaque.goproto.proto.testeditions.repeated_int64",
		Tag:           "varint,32,rep,name=repeated_int64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         33,
		Name:          "opaque.goproto.proto.testeditions.repeated_uint32",
		Tag:           "varint,33,rep,name=repeated_uint32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         34,
		Name:          "opaque.goproto.proto.testeditions.repeated_uint64",
		Tag:           "varint,34,rep,name=repeated_uint64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         35,
		Name:          "opaque.goproto.proto.testeditions.repeated_sint32",
		Tag:           "zigzag32,35,rep,name=repeated_sint32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         36,
		Name:          "opaque.goproto.proto.testeditions.repeated_sint64",
		Tag:           "zigzag64,36,rep,name=repeated_sint64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         37,
		Name:          "opaque.goproto.proto.testeditions.repeated_fixed32",
		Tag:           "fixed32,37,rep,name=repeated_fixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         38,
		Name:          "opaque.goproto.proto.testeditions.repeated_fixed64",
		Tag:           "fixed64,38,rep,name=repeated_fixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         39,
		Name:          "opaque.goproto.proto.testeditions.repeated_sfixed32",
		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         40,
		Name:          "opaque.goproto.proto.testeditions.repeated_sfixed64",
		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         41,
		Name:          "opaque.goproto.proto.testeditions.repeated_float",
		Tag:           "fixed32,41,rep,name=repeated_float",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         42,
		Name:          "opaque.goproto.proto.testeditions.repeated_double",
		Tag:           "fixed64,42,rep,name=repeated_double",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         43,
		Name:          "opaque.goproto.proto.testeditions.repeated_bool",
		Tag:           "varint,43,rep,name=repeated_bool",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]string)(nil),
		Field:         44,
		Name:          "opaque.goproto.proto.testeditions.repeated_string",
		Tag:           "bytes,44,rep,name=repeated_string",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([][]byte)(nil),
		Field:         45,
		Name:          "opaque.goproto.proto.testeditions.repeated_bytes",
		Tag:           "bytes,45,rep,name=repeated_bytes",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*RepeatedGroup)(nil),
		Field:         46,
		Name:          "opaque.goproto.proto.testeditions.repeatedgroup",
		Tag:           "group,46,rep,name=RepeatedGroup",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
		Field:         48,
		Name:          "opaque.goproto.proto.testeditions.repeated_nested_message",
		Tag:           "bytes,48,rep,name=repeated_nested_message",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
		Field:         51,
		Name:          "opaque.goproto.proto.testeditions.repeated_nested_enum",
		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=opaque.goproto.proto.testeditions.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         81,
		Name:          "opaque.goproto.proto.testeditions.default_int32",
		Tag:           "varint,81,opt,name=default_int32,def=81",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         82,
		Name:          "opaque.goproto.proto.testeditions.default_int64",
		Tag:           "varint,82,opt,name=default_int64,def=82",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         83,
		Name:          "opaque.goproto.proto.testeditions.default_uint32",
		Tag:           "varint,83,opt,name=default_uint32,def=83",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         84,
		Name:          "opaque.goproto.proto.testeditions.default_uint64",
		Tag:           "varint,84,opt,name=default_uint64,def=84",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         85,
		Name:          "opaque.goproto.proto.testeditions.default_sint32",
		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         86,
		Name:          "opaque.goproto.proto.testeditions.default_sint64",
		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         87,
		Name:          "opaque.goproto.proto.testeditions.default_fixed32",
		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         88,
		Name:          "opaque.goproto.proto.testeditions.default_fixed64",
		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         89,
		Name:          "opaque.goproto.proto.testeditions.default_sfixed32",
		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         80,
		Name:          "opaque.goproto.proto.testeditions.default_sfixed64",
		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         91,
		Name:          "opaque.goproto.proto.testeditions.default_float",
		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         92,
		Name:          "opaque.goproto.proto.testeditions.default_double",
		Tag:           "fixed64,92,opt,name=default_double,def=92000",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         93,
		Name:          "opaque.goproto.proto.testeditions.default_bool",
		Tag:           "varint,93,opt,name=default_bool,def=1",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         94,
		Name:          "opaque.goproto.proto.testeditions.default_string",
		Tag:           "bytes,94,opt,name=default_string,def=hello",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         95,
		Name:          "opaque.goproto.proto.testeditions.default_bytes",
		Tag:           "bytes,95,opt,name=default_bytes,def=world",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestRequired)(nil),
		Field:         1000,
		Name:          "opaque.goproto.proto.testeditions.single",
		Tag:           "bytes,1000,opt,name=single",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestRequired)(nil),
		Field:         1001,
		Name:          "opaque.goproto.proto.testeditions.multi",
		Tag:           "bytes,1001,rep,name=multi",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         2,
		Name:          "opaque.goproto.proto.testeditions.global_expanded_extension",
		Tag:           "varint,2,rep,name=global_expanded_extension",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         3,
		Name:          "opaque.goproto.proto.testeditions.global_packed_extension_overriden",
		Tag:           "varint,3,rep,packed,name=global_packed_extension_overriden",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         4,
		Name:          "opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension",
		Tag:           "varint,4,rep,name=message_expanded_extension",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         5,
		Name:          "opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden",
		Tag:           "varint,5,rep,packed,name=message_packed_extension_overriden",
		Filename:      "internal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto",
	},
}

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

// Extension fields to TestFeatureResolution.
var (
	// repeated int32 global_expanded_extension = 2;
	E_GlobalExpandedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[53]
	// repeated int32 global_packed_extension_overriden = 3;
	E_GlobalPackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[54]
	// repeated int32 message_expanded_extension = 4;
	E_RepeatedFieldEncoding_MessageExpandedExtension = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[55]
	// repeated int32 message_packed_extension_overriden = 5;
	E_RepeatedFieldEncoding_MessagePackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes[56]
)

var File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto protoreflect.FileDescriptor

const file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_rawDesc = "\nPinternal/testprotos/testeditions/testeditions_opaque/test_extension.opaque.proto!opaque.goproto.proto.testeditionsFinternal/testprotos/testeditions/testeditions_opaque/test.opaque.proto!google/protobuf/go_features.proto\"\x94\nTestAllExtensionsu\n\rNestedMessage\na (RaV\ncorecursive (24.opaque.goproto.proto.testeditions.TestAllExtensionsRcorecursive*\x80\x80\x80\x80\"\xc6\n\rOptionalGroup\na (Ra*\nsame_field_number (RsameFieldNumber{\noptional_nested_message\xe8 (2B.opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage\"\x9a\n\rRepeatedGroup\na/ (Ra{\noptional_nested_message\xe9 (2B.opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage\"!\nTestFeatureResolution*\x80\x80\x80\x80\"\x9e\nRepeatedFieldEncoding2v\nmessage_expanded_extension8.opaque.goproto.proto.testeditions.TestFeatureResolution (RmessageExpandedExtension2\x8c\n\"message_packed_extension_overriden8.opaque.goproto.proto.testeditions.TestFeatureResolution (B\xaaRmessagePackedExtensionOverriden:[\noptional_int324.opaque.goproto.proto.testeditions.TestAllExtensions (R\roptionalInt32:[\noptional_int644.opaque.goproto.proto.testeditions.TestAllExtensions (R\roptionalInt64:]\noptional_uint324.opaque.goproto.proto.testeditions.TestAllExtensions (\rRoptionalUint32:]\noptional_uint644.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalUint64:]\noptional_sint324.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalSint32:]\noptional_sint644.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalSint64:_\noptional_fixed324.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalFixed32:_\noptional_fixed644.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalFixed64:a\noptional_sfixed324.opaque.goproto.proto.testeditions.TestAllExtensions	 (RoptionalSfixed32:a\noptional_sfixed644.opaque.goproto.proto.testeditions.TestAllExtensions\n (RoptionalSfixed64:[\noptional_float4.opaque.goproto.proto.testeditions.TestAllExtensions (R\roptionalFloat:]\noptional_double4.opaque.goproto.proto.testeditions.TestAllExtensions (RoptionalDouble:Y\n\roptional_bool4.opaque.goproto.proto.testeditions.TestAllExtensions\r (RoptionalBool:]\noptional_string4.opaque.goproto.proto.testeditions.TestAllExtensions (	RoptionalString:[\noptional_bytes4.opaque.goproto.proto.testeditions.TestAllExtensions (R\roptionalBytes:\x93\n\roptionalgroup4.opaque.goproto.proto.testeditions.TestAllExtensions (20.opaque.goproto.proto.testeditions.OptionalGroupB\xaa(R\roptionalgroup:\xb0\noptional_nested_message4.opaque.goproto.proto.testeditions.TestAllExtensions (2B.opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage:\xa2\noptional_nested_enum4.opaque.goproto.proto.testeditions.TestAllExtensions (2:.opaque.goproto.proto.testeditions.TestAllTypes.NestedEnumRoptionalNestedEnum:[\nrepeated_int324.opaque.goproto.proto.testeditions.TestAllExtensions (R\rrepeatedInt32:[\nrepeated_int644.opaque.goproto.proto.testeditions.TestAllExtensions  (R\rrepeatedInt64:]\nrepeated_uint324.opaque.goproto.proto.testeditions.TestAllExtensions! (\rRrepeatedUint32:]\nrepeated_uint644.opaque.goproto.proto.testeditions.TestAllExtensions\" (RrepeatedUint64:]\nrepeated_sint324.opaque.goproto.proto.testeditions.TestAllExtensions# (RrepeatedSint32:]\nrepeated_sint644.opaque.goproto.proto.testeditions.TestAllExtensions$ (RrepeatedSint64:_\nrepeated_fixed324.opaque.goproto.proto.testeditions.TestAllExtensions% (RrepeatedFixed32:_\nrepeated_fixed644.opaque.goproto.proto.testeditions.TestAllExtensions& (RrepeatedFixed64:a\nrepeated_sfixed324.opaque.goproto.proto.testeditions.TestAllExtensions' (RrepeatedSfixed32:a\nrepeated_sfixed644.opaque.goproto.proto.testeditions.TestAllExtensions( (RrepeatedSfixed64:[\nrepeated_float4.opaque.goproto.proto.testeditions.TestAllExtensions) (R\rrepeatedFloat:]\nrepeated_double4.opaque.goproto.proto.testeditions.TestAllExtensions* (RrepeatedDouble:Y\n\rrepeated_bool4.opaque.goproto.proto.testeditions.TestAllExtensions+ (RrepeatedBool:]\nrepeated_string4.opaque.goproto.proto.testeditions.TestAllExtensions, (	RrepeatedString:[\nrepeated_bytes4.opaque.goproto.proto.testeditions.TestAllExtensions- (R\rrepeatedBytes:\x93\n\rrepeatedgroup4.opaque.goproto.proto.testeditions.TestAllExtensions. (20.opaque.goproto.proto.testeditions.RepeatedGroupB\xaa(R\rrepeatedgroup:\xb0\nrepeated_nested_message4.opaque.goproto.proto.testeditions.TestAllExtensions0 (2B.opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessageRrepeatedNestedMessage:\xa2\nrepeated_nested_enum4.opaque.goproto.proto.testeditions.TestAllExtensions3 (2:.opaque.goproto.proto.testeditions.TestAllTypes.NestedEnumRrepeatedNestedEnum:]\n\rdefault_int324.opaque.goproto.proto.testeditions.TestAllExtensionsQ (:81RdefaultInt32:]\n\rdefault_int644.opaque.goproto.proto.testeditions.TestAllExtensionsR (:82RdefaultInt64:_\ndefault_uint324.opaque.goproto.proto.testeditions.TestAllExtensionsS (\r:83R\rdefaultUint32:_\ndefault_uint644.opaque.goproto.proto.testeditions.TestAllExtensionsT (:84R\rdefaultUint64:`\ndefault_sint324.opaque.goproto.proto.testeditions.TestAllExtensionsU (:-85R\rdefaultSint32:_\ndefault_sint644.opaque.goproto.proto.testeditions.TestAllExtensionsV (:86R\rdefaultSint64:a\ndefault_fixed324.opaque.goproto.proto.testeditions.TestAllExtensionsW (:87RdefaultFixed32:a\ndefault_fixed644.opaque.goproto.proto.testeditions.TestAllExtensionsX (:88RdefaultFixed64:c\ndefault_sfixed324.opaque.goproto.proto.testeditions.TestAllExtensionsY (:89RdefaultSfixed32:d\ndefault_sfixed644.opaque.goproto.proto.testeditions.TestAllExtensionsP (:-90RdefaultSfixed64:_\n\rdefault_float4.opaque.goproto.proto.testeditions.TestAllExtensions[ (:91.5RdefaultFloat:b\ndefault_double4.opaque.goproto.proto.testeditions.TestAllExtensions\\ (:92000R\rdefaultDouble:]\ndefault_bool4.opaque.goproto.proto.testeditions.TestAllExtensions] (:trueRdefaultBool:b\ndefault_string4.opaque.goproto.proto.testeditions.TestAllExtensions^ (	:helloR\rdefaultString:`\n\rdefault_bytes4.opaque.goproto.proto.testeditions.TestAllExtensions_ (:worldRdefaultBytes:~\nsingle4.opaque.goproto.proto.testeditions.TestAllExtensions\xe8 (2/.opaque.goproto.proto.testeditions.TestRequiredRsingle:|\nmulti4.opaque.goproto.proto.testeditions.TestAllExtensions\xe9 (2/.opaque.goproto.proto.testeditions.TestRequiredRmulti:t\nglobal_expanded_extension8.opaque.goproto.proto.testeditions.TestFeatureResolution (RglobalExpandedExtension:\x8a\n!global_packed_extension_overriden8.opaque.goproto.proto.testeditions.TestFeatureResolution (B\xaaRglobalPackedExtensionOverridenB]ZOgoogle.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque\x92	\xd2> beditionsp\xe8"

var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes = []any{
	(*TestAllExtensions)(nil),               // 0: opaque.goproto.proto.testeditions.TestAllExtensions
	(*OptionalGroup)(nil),                   // 1: opaque.goproto.proto.testeditions.OptionalGroup
	(*RepeatedGroup)(nil),                   // 2: opaque.goproto.proto.testeditions.RepeatedGroup
	(*TestFeatureResolution)(nil),           // 3: opaque.goproto.proto.testeditions.TestFeatureResolution
	(*RepeatedFieldEncoding)(nil),           // 4: opaque.goproto.proto.testeditions.RepeatedFieldEncoding
	(*TestAllExtensions_NestedMessage)(nil), // 5: opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	(TestAllTypes_NestedEnum)(0),            // 6: opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
	(*TestRequired)(nil),                    // 7: opaque.goproto.proto.testeditions.TestRequired
}
var file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs = []int32{
	5,  // 0: opaque.goproto.proto.testeditions.OptionalGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	5,  // 1: opaque.goproto.proto.testeditions.RepeatedGroup.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	0,  // 2: opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage.corecursive:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 3: opaque.goproto.proto.testeditions.optional_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 4: opaque.goproto.proto.testeditions.optional_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 5: opaque.goproto.proto.testeditions.optional_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 6: opaque.goproto.proto.testeditions.optional_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 7: opaque.goproto.proto.testeditions.optional_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 8: opaque.goproto.proto.testeditions.optional_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 9: opaque.goproto.proto.testeditions.optional_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 10: opaque.goproto.proto.testeditions.optional_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 11: opaque.goproto.proto.testeditions.optional_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 12: opaque.goproto.proto.testeditions.optional_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 13: opaque.goproto.proto.testeditions.optional_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 14: opaque.goproto.proto.testeditions.optional_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 15: opaque.goproto.proto.testeditions.optional_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 16: opaque.goproto.proto.testeditions.optional_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 17: opaque.goproto.proto.testeditions.optional_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 18: opaque.goproto.proto.testeditions.optionalgroup:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 19: opaque.goproto.proto.testeditions.optional_nested_message:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 20: opaque.goproto.proto.testeditions.optional_nested_enum:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 21: opaque.goproto.proto.testeditions.repeated_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 22: opaque.goproto.proto.testeditions.repeated_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 23: opaque.goproto.proto.testeditions.repeated_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 24: opaque.goproto.proto.testeditions.repeated_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 25: opaque.goproto.proto.testeditions.repeated_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 26: opaque.goproto.proto.testeditions.repeated_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 27: opaque.goproto.proto.testeditions.repeated_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 28: opaque.goproto.proto.testeditions.repeated_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 29: opaque.goproto.proto.testeditions.repeated_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 30: opaque.goproto.proto.testeditions.repeated_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 31: opaque.goproto.proto.testeditions.repeated_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 32: opaque.goproto.proto.testeditions.repeated_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 33: opaque.goproto.proto.testeditions.repeated_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 34: opaque.goproto.proto.testeditions.repeated_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 35: opaque.goproto.proto.testeditions.repeated_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 36: opaque.goproto.proto.testeditions.repeatedgroup:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 37: opaque.goproto.proto.testeditions.repeated_nested_message:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 38: opaque.goproto.proto.testeditions.repeated_nested_enum:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 39: opaque.goproto.proto.testeditions.default_int32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 40: opaque.goproto.proto.testeditions.default_int64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 41: opaque.goproto.proto.testeditions.default_uint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 42: opaque.goproto.proto.testeditions.default_uint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 43: opaque.goproto.proto.testeditions.default_sint32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 44: opaque.goproto.proto.testeditions.default_sint64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 45: opaque.goproto.proto.testeditions.default_fixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 46: opaque.goproto.proto.testeditions.default_fixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 47: opaque.goproto.proto.testeditions.default_sfixed32:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 48: opaque.goproto.proto.testeditions.default_sfixed64:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 49: opaque.goproto.proto.testeditions.default_float:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 50: opaque.goproto.proto.testeditions.default_double:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 51: opaque.goproto.proto.testeditions.default_bool:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 52: opaque.goproto.proto.testeditions.default_string:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 53: opaque.goproto.proto.testeditions.default_bytes:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 54: opaque.goproto.proto.testeditions.single:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	0,  // 55: opaque.goproto.proto.testeditions.multi:extendee -> opaque.goproto.proto.testeditions.TestAllExtensions
	3,  // 56: opaque.goproto.proto.testeditions.global_expanded_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
	3,  // 57: opaque.goproto.proto.testeditions.global_packed_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
	3,  // 58: opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
	3,  // 59: opaque.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden:extendee -> opaque.goproto.proto.testeditions.TestFeatureResolution
	1,  // 60: opaque.goproto.proto.testeditions.optionalgroup:type_name -> opaque.goproto.proto.testeditions.OptionalGroup
	5,  // 61: opaque.goproto.proto.testeditions.optional_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	6,  // 62: opaque.goproto.proto.testeditions.optional_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
	2,  // 63: opaque.goproto.proto.testeditions.repeatedgroup:type_name -> opaque.goproto.proto.testeditions.RepeatedGroup
	5,  // 64: opaque.goproto.proto.testeditions.repeated_nested_message:type_name -> opaque.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	6,  // 65: opaque.goproto.proto.testeditions.repeated_nested_enum:type_name -> opaque.goproto.proto.testeditions.TestAllTypes.NestedEnum
	7,  // 66: opaque.goproto.proto.testeditions.single:type_name -> opaque.goproto.proto.testeditions.TestRequired
	7,  // 67: opaque.goproto.proto.testeditions.multi:type_name -> opaque.goproto.proto.testeditions.TestRequired
	68, // [68:68] is the sub-list for method output_type
	68, // [68:68] is the sub-list for method input_type
	60, // [60:68] is the sub-list for extension type_name
	3,  // [3:60] is the sub-list for extension extendee
	0,  // [0:3] is the sub-list for field type_name
}

func init() {
	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_init()
}
func file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_init() {
	if File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto != nil {
		return
	}
	file_internal_testprotos_testeditions_testeditions_opaque_test_opaque_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: []byte(file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_rawDesc),
			NumEnums:      0,
			NumMessages:   6,
			NumExtensions: 57,
			NumServices:   0,
		},
		GoTypes:           file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes,
		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs,
		MessageInfos:      file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_msgTypes,
		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_extTypes,
	}.Build()
	File_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto = out.File
	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_goTypes = nil
	file_internal_testprotos_testeditions_testeditions_opaque_test_extension_opaque_proto_depIdxs = nil
}
