// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.
package testpb

import (
	_ "cosmossdk.io/api/amino"
	binary "encoding/binary"
	fmt "fmt"
	runtime "github.com/cosmos/cosmos-proto/runtime"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoiface "google.golang.org/protobuf/runtime/protoiface"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	_ "google.golang.org/protobuf/types/known/anypb"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	_ "google.golang.org/protobuf/types/known/emptypb"
	_ "google.golang.org/protobuf/types/known/fieldmaskpb"
	_ "google.golang.org/protobuf/types/known/structpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	_ "google.golang.org/protobuf/types/known/wrapperspb"
	io "io"
	reflect "reflect"
	sort "sort"
	sync "sync"
)

var _ protoreflect.Map = (*_WithAMap_1_map)(nil)

type _WithAMap_1_map struct {
	m *map[string]string
}

func (x *_WithAMap_1_map) Len() int {
	if x.m == nil {
		return 0
	}
	return len(*x.m)
}

func (x *_WithAMap_1_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {
	if x.m == nil {
		return
	}
	for k, v := range *x.m {
		mapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))
		mapValue := protoreflect.ValueOfString(v)
		if !f(mapKey, mapValue) {
			break
		}
	}
}

func (x *_WithAMap_1_map) Has(key protoreflect.MapKey) bool {
	if x.m == nil {
		return false
	}
	keyUnwrapped := key.String()
	concreteValue := keyUnwrapped
	_, ok := (*x.m)[concreteValue]
	return ok
}

func (x *_WithAMap_1_map) Clear(key protoreflect.MapKey) {
	if x.m == nil {
		return
	}
	keyUnwrapped := key.String()
	concreteKey := keyUnwrapped
	delete(*x.m, concreteKey)
}

func (x *_WithAMap_1_map) Get(key protoreflect.MapKey) protoreflect.Value {
	if x.m == nil {
		return protoreflect.Value{}
	}
	keyUnwrapped := key.String()
	concreteKey := keyUnwrapped
	v, ok := (*x.m)[concreteKey]
	if !ok {
		return protoreflect.Value{}
	}
	return protoreflect.ValueOfString(v)
}

func (x *_WithAMap_1_map) Set(key protoreflect.MapKey, value protoreflect.Value) {
	if !key.IsValid() || !value.IsValid() {
		panic("invalid key or value provided")
	}
	keyUnwrapped := key.String()
	concreteKey := keyUnwrapped
	valueUnwrapped := value.String()
	concreteValue := valueUnwrapped
	(*x.m)[concreteKey] = concreteValue
}

func (x *_WithAMap_1_map) Mutable(key protoreflect.MapKey) protoreflect.Value {
	panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message")
}

func (x *_WithAMap_1_map) NewValue() protoreflect.Value {
	v := ""
	return protoreflect.ValueOfString(v)
}

func (x *_WithAMap_1_map) IsValid() bool {
	return x.m != nil
}

var (
	md_WithAMap         protoreflect.MessageDescriptor
	fd_WithAMap_str_map protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_WithAMap = File_testpb_test_proto.Messages().ByName("WithAMap")
	fd_WithAMap_str_map = md_WithAMap.Fields().ByName("str_map")
}

var _ protoreflect.Message = (*fastReflection_WithAMap)(nil)

type fastReflection_WithAMap WithAMap

func (x *WithAMap) ProtoReflect() protoreflect.Message {
	return (*fastReflection_WithAMap)(x)
}

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

var _fastReflection_WithAMap_messageType fastReflection_WithAMap_messageType
var _ protoreflect.MessageType = fastReflection_WithAMap_messageType{}

type fastReflection_WithAMap_messageType struct{}

func (x fastReflection_WithAMap_messageType) Zero() protoreflect.Message {
	return (*fastReflection_WithAMap)(nil)
}
func (x fastReflection_WithAMap_messageType) New() protoreflect.Message {
	return new(fastReflection_WithAMap)
}
func (x fastReflection_WithAMap_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAMap
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_WithAMap) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAMap
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_WithAMap) Type() protoreflect.MessageType {
	return _fastReflection_WithAMap_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_WithAMap) New() protoreflect.Message {
	return new(fastReflection_WithAMap)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_WithAMap) Interface() protoreflect.ProtoMessage {
	return (*WithAMap)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_WithAMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.StrMap) != 0 {
		value := protoreflect.ValueOfMap(&_WithAMap_1_map{m: &x.StrMap})
		if !f(fd_WithAMap_str_map, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_WithAMap) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.WithAMap.str_map":
		return len(x.StrMap) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAMap) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.WithAMap.str_map":
		x.StrMap = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_WithAMap) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.WithAMap.str_map":
		if len(x.StrMap) == 0 {
			return protoreflect.ValueOfMap(&_WithAMap_1_map{})
		}
		mapValue := &_WithAMap_1_map{m: &x.StrMap}
		return protoreflect.ValueOfMap(mapValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAMap) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.WithAMap.str_map":
		mv := value.Map()
		cmv := mv.(*_WithAMap_1_map)
		x.StrMap = *cmv.m
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAMap) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAMap.str_map":
		if x.StrMap == nil {
			x.StrMap = make(map[string]string)
		}
		value := &_WithAMap_1_map{m: &x.StrMap}
		return protoreflect.ValueOfMap(value)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_WithAMap) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAMap.str_map":
		m := make(map[string]string)
		return protoreflect.ValueOfMap(&_WithAMap_1_map{m: &m})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAMap"))
		}
		panic(fmt.Errorf("message testpb.WithAMap does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_WithAMap) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.WithAMap", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_WithAMap) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAMap) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_WithAMap) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_WithAMap) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*WithAMap)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if len(x.StrMap) > 0 {
			SiZeMaP := func(k string, v string) {
				mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))
				n += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))
			}
			if options.Deterministic {
				sortme := make([]string, 0, len(x.StrMap))
				for k := range x.StrMap {
					sortme = append(sortme, k)
				}
				sort.Strings(sortme)
				for _, k := range sortme {
					v := x.StrMap[k]
					SiZeMaP(k, v)
				}
			} else {
				for k, v := range x.StrMap {
					SiZeMaP(k, v)
				}
			}
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*WithAMap)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.StrMap) > 0 {
			MaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {
				baseI := i
				i -= len(v)
				copy(dAtA[i:], v)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(v)))
				i--
				dAtA[i] = 0x12
				i -= len(k)
				copy(dAtA[i:], k)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(k)))
				i--
				dAtA[i] = 0xa
				i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))
				i--
				dAtA[i] = 0xa
				return protoiface.MarshalOutput{}, nil
			}
			if options.Deterministic {
				keysForStrMap := make([]string, 0, len(x.StrMap))
				for k := range x.StrMap {
					keysForStrMap = append(keysForStrMap, string(k))
				}
				sort.Slice(keysForStrMap, func(i, j int) bool {
					return keysForStrMap[i] < keysForStrMap[j]
				})
				for iNdEx := len(keysForStrMap) - 1; iNdEx >= 0; iNdEx-- {
					v := x.StrMap[string(keysForStrMap[iNdEx])]
					out, err := MaRsHaLmAp(keysForStrMap[iNdEx], v)
					if err != nil {
						return out, err
					}
				}
			} else {
				for k := range x.StrMap {
					v := x.StrMap[k]
					out, err := MaRsHaLmAp(k, v)
					if err != nil {
						return out, err
					}
				}
			}
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*WithAMap)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAMap: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAMap: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StrMap", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.StrMap == nil {
					x.StrMap = make(map[string]string)
				}
				var mapkey string
				var mapvalue string
				for iNdEx < postIndex {
					entryPreIndex := iNdEx
					var wire uint64
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
						}
						if iNdEx >= l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						wire |= uint64(b&0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					fieldNum := int32(wire >> 3)
					if fieldNum == 1 {
						var stringLenmapkey uint64
						for shift := uint(0); ; shift += 7 {
							if shift >= 64 {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
							}
							if iNdEx >= l {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
							}
							b := dAtA[iNdEx]
							iNdEx++
							stringLenmapkey |= uint64(b&0x7F) << shift
							if b < 0x80 {
								break
							}
						}
						intStringLenmapkey := int(stringLenmapkey)
						if intStringLenmapkey < 0 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
						}
						postStringIndexmapkey := iNdEx + intStringLenmapkey
						if postStringIndexmapkey < 0 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
						}
						if postStringIndexmapkey > l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
						iNdEx = postStringIndexmapkey
					} else if fieldNum == 2 {
						var stringLenmapvalue uint64
						for shift := uint(0); ; shift += 7 {
							if shift >= 64 {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
							}
							if iNdEx >= l {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
							}
							b := dAtA[iNdEx]
							iNdEx++
							stringLenmapvalue |= uint64(b&0x7F) << shift
							if b < 0x80 {
								break
							}
						}
						intStringLenmapvalue := int(stringLenmapvalue)
						if intStringLenmapvalue < 0 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
						}
						postStringIndexmapvalue := iNdEx + intStringLenmapvalue
						if postStringIndexmapvalue < 0 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
						}
						if postStringIndexmapvalue > l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
						iNdEx = postStringIndexmapvalue
					} else {
						iNdEx = entryPreIndex
						skippy, err := runtime.Skip(dAtA[iNdEx:])
						if err != nil {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
						}
						if (skippy < 0) || (iNdEx+skippy) < 0 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
						}
						if (iNdEx + skippy) > postIndex {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						iNdEx += skippy
					}
				}
				x.StrMap[mapkey] = mapvalue
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_WithAList_1_list)(nil)

type _WithAList_1_list struct {
	list *[]string
}

func (x *_WithAList_1_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_WithAList_1_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfString((*x.list)[i])
}

func (x *_WithAList_1_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.String()
	concreteValue := valueUnwrapped
	(*x.list)[i] = concreteValue
}

func (x *_WithAList_1_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.String()
	concreteValue := valueUnwrapped
	*x.list = append(*x.list, concreteValue)
}

func (x *_WithAList_1_list) AppendMutable() protoreflect.Value {
	panic(fmt.Errorf("AppendMutable can not be called on message WithAList at list field DontOmitemptyList as it is not of Message kind"))
}

func (x *_WithAList_1_list) Truncate(n int) {
	*x.list = (*x.list)[:n]
}

func (x *_WithAList_1_list) NewElement() protoreflect.Value {
	v := ""
	return protoreflect.ValueOfString(v)
}

func (x *_WithAList_1_list) IsValid() bool {
	return x.list != nil
}

var _ protoreflect.List = (*_WithAList_2_list)(nil)

type _WithAList_2_list struct {
	list *[]string
}

func (x *_WithAList_2_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_WithAList_2_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfString((*x.list)[i])
}

func (x *_WithAList_2_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.String()
	concreteValue := valueUnwrapped
	(*x.list)[i] = concreteValue
}

func (x *_WithAList_2_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.String()
	concreteValue := valueUnwrapped
	*x.list = append(*x.list, concreteValue)
}

func (x *_WithAList_2_list) AppendMutable() protoreflect.Value {
	panic(fmt.Errorf("AppendMutable can not be called on message WithAList at list field List as it is not of Message kind"))
}

func (x *_WithAList_2_list) Truncate(n int) {
	*x.list = (*x.list)[:n]
}

func (x *_WithAList_2_list) NewElement() protoreflect.Value {
	v := ""
	return protoreflect.ValueOfString(v)
}

func (x *_WithAList_2_list) IsValid() bool {
	return x.list != nil
}

var (
	md_WithAList                     protoreflect.MessageDescriptor
	fd_WithAList_dont_omitempty_list protoreflect.FieldDescriptor
	fd_WithAList_list                protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_WithAList = File_testpb_test_proto.Messages().ByName("WithAList")
	fd_WithAList_dont_omitempty_list = md_WithAList.Fields().ByName("dont_omitempty_list")
	fd_WithAList_list = md_WithAList.Fields().ByName("list")
}

var _ protoreflect.Message = (*fastReflection_WithAList)(nil)

type fastReflection_WithAList WithAList

func (x *WithAList) ProtoReflect() protoreflect.Message {
	return (*fastReflection_WithAList)(x)
}

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

var _fastReflection_WithAList_messageType fastReflection_WithAList_messageType
var _ protoreflect.MessageType = fastReflection_WithAList_messageType{}

type fastReflection_WithAList_messageType struct{}

func (x fastReflection_WithAList_messageType) Zero() protoreflect.Message {
	return (*fastReflection_WithAList)(nil)
}
func (x fastReflection_WithAList_messageType) New() protoreflect.Message {
	return new(fastReflection_WithAList)
}
func (x fastReflection_WithAList_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAList
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_WithAList) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAList
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_WithAList) Type() protoreflect.MessageType {
	return _fastReflection_WithAList_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_WithAList) New() protoreflect.Message {
	return new(fastReflection_WithAList)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_WithAList) Interface() protoreflect.ProtoMessage {
	return (*WithAList)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_WithAList) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.DontOmitemptyList) != 0 {
		value := protoreflect.ValueOfList(&_WithAList_1_list{list: &x.DontOmitemptyList})
		if !f(fd_WithAList_dont_omitempty_list, value) {
			return
		}
	}
	if len(x.List) != 0 {
		value := protoreflect.ValueOfList(&_WithAList_2_list{list: &x.List})
		if !f(fd_WithAList_list, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_WithAList) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		return len(x.DontOmitemptyList) != 0
	case "testpb.WithAList.list":
		return len(x.List) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAList) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		x.DontOmitemptyList = nil
	case "testpb.WithAList.list":
		x.List = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_WithAList) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		if len(x.DontOmitemptyList) == 0 {
			return protoreflect.ValueOfList(&_WithAList_1_list{})
		}
		listValue := &_WithAList_1_list{list: &x.DontOmitemptyList}
		return protoreflect.ValueOfList(listValue)
	case "testpb.WithAList.list":
		if len(x.List) == 0 {
			return protoreflect.ValueOfList(&_WithAList_2_list{})
		}
		listValue := &_WithAList_2_list{list: &x.List}
		return protoreflect.ValueOfList(listValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAList) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		lv := value.List()
		clv := lv.(*_WithAList_1_list)
		x.DontOmitemptyList = *clv.list
	case "testpb.WithAList.list":
		lv := value.List()
		clv := lv.(*_WithAList_2_list)
		x.List = *clv.list
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAList) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		if x.DontOmitemptyList == nil {
			x.DontOmitemptyList = []string{}
		}
		value := &_WithAList_1_list{list: &x.DontOmitemptyList}
		return protoreflect.ValueOfList(value)
	case "testpb.WithAList.list":
		if x.List == nil {
			x.List = []string{}
		}
		value := &_WithAList_2_list{list: &x.List}
		return protoreflect.ValueOfList(value)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_WithAList) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAList.dont_omitempty_list":
		list := []string{}
		return protoreflect.ValueOfList(&_WithAList_1_list{list: &list})
	case "testpb.WithAList.list":
		list := []string{}
		return protoreflect.ValueOfList(&_WithAList_2_list{list: &list})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAList"))
		}
		panic(fmt.Errorf("message testpb.WithAList does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_WithAList) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.WithAList", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_WithAList) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAList) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_WithAList) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_WithAList) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*WithAList)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if len(x.DontOmitemptyList) > 0 {
			for _, s := range x.DontOmitemptyList {
				l = len(s)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if len(x.List) > 0 {
			for _, s := range x.List {
				l = len(s)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*WithAList)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.List) > 0 {
			for iNdEx := len(x.List) - 1; iNdEx >= 0; iNdEx-- {
				i -= len(x.List[iNdEx])
				copy(dAtA[i:], x.List[iNdEx])
				i = runtime.EncodeVarint(dAtA, i, uint64(len(x.List[iNdEx])))
				i--
				dAtA[i] = 0x12
			}
		}
		if len(x.DontOmitemptyList) > 0 {
			for iNdEx := len(x.DontOmitemptyList) - 1; iNdEx >= 0; iNdEx-- {
				i -= len(x.DontOmitemptyList[iNdEx])
				copy(dAtA[i:], x.DontOmitemptyList[iNdEx])
				i = runtime.EncodeVarint(dAtA, i, uint64(len(x.DontOmitemptyList[iNdEx])))
				i--
				dAtA[i] = 0xa
			}
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*WithAList)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAList: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAList: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DontOmitemptyList", wireType)
				}
				var stringLen uint64
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					stringLen |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				intStringLen := int(stringLen)
				if intStringLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + intStringLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.DontOmitemptyList = append(x.DontOmitemptyList, string(dAtA[iNdEx:postIndex]))
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field List", wireType)
				}
				var stringLen uint64
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					stringLen |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				intStringLen := int(stringLen)
				if intStringLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + intStringLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.List = append(x.List, string(dAtA[iNdEx:postIndex]))
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_WithAJson        protoreflect.MessageDescriptor
	fd_WithAJson_field1 protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_WithAJson = File_testpb_test_proto.Messages().ByName("WithAJson")
	fd_WithAJson_field1 = md_WithAJson.Fields().ByName("field1")
}

var _ protoreflect.Message = (*fastReflection_WithAJson)(nil)

type fastReflection_WithAJson WithAJson

func (x *WithAJson) ProtoReflect() protoreflect.Message {
	return (*fastReflection_WithAJson)(x)
}

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

var _fastReflection_WithAJson_messageType fastReflection_WithAJson_messageType
var _ protoreflect.MessageType = fastReflection_WithAJson_messageType{}

type fastReflection_WithAJson_messageType struct{}

func (x fastReflection_WithAJson_messageType) Zero() protoreflect.Message {
	return (*fastReflection_WithAJson)(nil)
}
func (x fastReflection_WithAJson_messageType) New() protoreflect.Message {
	return new(fastReflection_WithAJson)
}
func (x fastReflection_WithAJson_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAJson
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_WithAJson) Descriptor() protoreflect.MessageDescriptor {
	return md_WithAJson
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_WithAJson) Type() protoreflect.MessageType {
	return _fastReflection_WithAJson_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_WithAJson) New() protoreflect.Message {
	return new(fastReflection_WithAJson)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_WithAJson) Interface() protoreflect.ProtoMessage {
	return (*WithAJson)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_WithAJson) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.Field1) != 0 {
		value := protoreflect.ValueOfBytes(x.Field1)
		if !f(fd_WithAJson_field1, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_WithAJson) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.WithAJson.field1":
		return len(x.Field1) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAJson) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.WithAJson.field1":
		x.Field1 = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_WithAJson) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.WithAJson.field1":
		value := x.Field1
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAJson) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.WithAJson.field1":
		x.Field1 = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAJson) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAJson.field1":
		panic(fmt.Errorf("field field1 of message testpb.WithAJson is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_WithAJson) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.WithAJson.field1":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.WithAJson"))
		}
		panic(fmt.Errorf("message testpb.WithAJson does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_WithAJson) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.WithAJson", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_WithAJson) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_WithAJson) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_WithAJson) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_WithAJson) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*WithAJson)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.Field1)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*WithAJson)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.Field1) > 0 {
			i -= len(x.Field1)
			copy(dAtA[i:], x.Field1)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Field1)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*WithAJson)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAJson: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: WithAJson: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Field1", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Field1 = append(x.Field1[:0], dAtA[iNdEx:postIndex]...)
				if x.Field1 == nil {
					x.Field1 = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_ABitOfEverything_6_list)(nil)

type _ABitOfEverything_6_list struct {
	list *[]int32
}

func (x *_ABitOfEverything_6_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_ABitOfEverything_6_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfInt32((*x.list)[i])
}

func (x *_ABitOfEverything_6_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Int()
	concreteValue := (int32)(valueUnwrapped)
	(*x.list)[i] = concreteValue
}

func (x *_ABitOfEverything_6_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Int()
	concreteValue := (int32)(valueUnwrapped)
	*x.list = append(*x.list, concreteValue)
}

func (x *_ABitOfEverything_6_list) AppendMutable() protoreflect.Value {
	panic(fmt.Errorf("AppendMutable can not be called on message ABitOfEverything at list field Repeated as it is not of Message kind"))
}

func (x *_ABitOfEverything_6_list) Truncate(n int) {
	*x.list = (*x.list)[:n]
}

func (x *_ABitOfEverything_6_list) NewElement() protoreflect.Value {
	v := int32(0)
	return protoreflect.ValueOfInt32(v)
}

func (x *_ABitOfEverything_6_list) IsValid() bool {
	return x.list != nil
}

var (
	md_ABitOfEverything          protoreflect.MessageDescriptor
	fd_ABitOfEverything_message  protoreflect.FieldDescriptor
	fd_ABitOfEverything_enum     protoreflect.FieldDescriptor
	fd_ABitOfEverything_repeated protoreflect.FieldDescriptor
	fd_ABitOfEverything_str      protoreflect.FieldDescriptor
	fd_ABitOfEverything_bool     protoreflect.FieldDescriptor
	fd_ABitOfEverything_bytes    protoreflect.FieldDescriptor
	fd_ABitOfEverything_i32      protoreflect.FieldDescriptor
	fd_ABitOfEverything_f32      protoreflect.FieldDescriptor
	fd_ABitOfEverything_u32      protoreflect.FieldDescriptor
	fd_ABitOfEverything_si32     protoreflect.FieldDescriptor
	fd_ABitOfEverything_sf32     protoreflect.FieldDescriptor
	fd_ABitOfEverything_i64      protoreflect.FieldDescriptor
	fd_ABitOfEverything_f64      protoreflect.FieldDescriptor
	fd_ABitOfEverything_u64      protoreflect.FieldDescriptor
	fd_ABitOfEverything_si64     protoreflect.FieldDescriptor
	fd_ABitOfEverything_sf64     protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_ABitOfEverything = File_testpb_test_proto.Messages().ByName("ABitOfEverything")
	fd_ABitOfEverything_message = md_ABitOfEverything.Fields().ByName("message")
	fd_ABitOfEverything_enum = md_ABitOfEverything.Fields().ByName("enum")
	fd_ABitOfEverything_repeated = md_ABitOfEverything.Fields().ByName("repeated")
	fd_ABitOfEverything_str = md_ABitOfEverything.Fields().ByName("str")
	fd_ABitOfEverything_bool = md_ABitOfEverything.Fields().ByName("bool")
	fd_ABitOfEverything_bytes = md_ABitOfEverything.Fields().ByName("bytes")
	fd_ABitOfEverything_i32 = md_ABitOfEverything.Fields().ByName("i32")
	fd_ABitOfEverything_f32 = md_ABitOfEverything.Fields().ByName("f32")
	fd_ABitOfEverything_u32 = md_ABitOfEverything.Fields().ByName("u32")
	fd_ABitOfEverything_si32 = md_ABitOfEverything.Fields().ByName("si32")
	fd_ABitOfEverything_sf32 = md_ABitOfEverything.Fields().ByName("sf32")
	fd_ABitOfEverything_i64 = md_ABitOfEverything.Fields().ByName("i64")
	fd_ABitOfEverything_f64 = md_ABitOfEverything.Fields().ByName("f64")
	fd_ABitOfEverything_u64 = md_ABitOfEverything.Fields().ByName("u64")
	fd_ABitOfEverything_si64 = md_ABitOfEverything.Fields().ByName("si64")
	fd_ABitOfEverything_sf64 = md_ABitOfEverything.Fields().ByName("sf64")
}

var _ protoreflect.Message = (*fastReflection_ABitOfEverything)(nil)

type fastReflection_ABitOfEverything ABitOfEverything

func (x *ABitOfEverything) ProtoReflect() protoreflect.Message {
	return (*fastReflection_ABitOfEverything)(x)
}

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

var _fastReflection_ABitOfEverything_messageType fastReflection_ABitOfEverything_messageType
var _ protoreflect.MessageType = fastReflection_ABitOfEverything_messageType{}

type fastReflection_ABitOfEverything_messageType struct{}

func (x fastReflection_ABitOfEverything_messageType) Zero() protoreflect.Message {
	return (*fastReflection_ABitOfEverything)(nil)
}
func (x fastReflection_ABitOfEverything_messageType) New() protoreflect.Message {
	return new(fastReflection_ABitOfEverything)
}
func (x fastReflection_ABitOfEverything_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_ABitOfEverything
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_ABitOfEverything) Descriptor() protoreflect.MessageDescriptor {
	return md_ABitOfEverything
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_ABitOfEverything) Type() protoreflect.MessageType {
	return _fastReflection_ABitOfEverything_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_ABitOfEverything) New() protoreflect.Message {
	return new(fastReflection_ABitOfEverything)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_ABitOfEverything) Interface() protoreflect.ProtoMessage {
	return (*ABitOfEverything)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_ABitOfEverything) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Message != nil {
		value := protoreflect.ValueOfMessage(x.Message.ProtoReflect())
		if !f(fd_ABitOfEverything_message, value) {
			return
		}
	}
	if x.Enum != 0 {
		value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Enum))
		if !f(fd_ABitOfEverything_enum, value) {
			return
		}
	}
	if len(x.Repeated) != 0 {
		value := protoreflect.ValueOfList(&_ABitOfEverything_6_list{list: &x.Repeated})
		if !f(fd_ABitOfEverything_repeated, value) {
			return
		}
	}
	if x.Str != "" {
		value := protoreflect.ValueOfString(x.Str)
		if !f(fd_ABitOfEverything_str, value) {
			return
		}
	}
	if x.Bool != false {
		value := protoreflect.ValueOfBool(x.Bool)
		if !f(fd_ABitOfEverything_bool, value) {
			return
		}
	}
	if len(x.Bytes) != 0 {
		value := protoreflect.ValueOfBytes(x.Bytes)
		if !f(fd_ABitOfEverything_bytes, value) {
			return
		}
	}
	if x.I32 != int32(0) {
		value := protoreflect.ValueOfInt32(x.I32)
		if !f(fd_ABitOfEverything_i32, value) {
			return
		}
	}
	if x.F32 != uint32(0) {
		value := protoreflect.ValueOfUint32(x.F32)
		if !f(fd_ABitOfEverything_f32, value) {
			return
		}
	}
	if x.U32 != uint32(0) {
		value := protoreflect.ValueOfUint32(x.U32)
		if !f(fd_ABitOfEverything_u32, value) {
			return
		}
	}
	if x.Si32 != int32(0) {
		value := protoreflect.ValueOfInt32(x.Si32)
		if !f(fd_ABitOfEverything_si32, value) {
			return
		}
	}
	if x.Sf32 != int32(0) {
		value := protoreflect.ValueOfInt32(x.Sf32)
		if !f(fd_ABitOfEverything_sf32, value) {
			return
		}
	}
	if x.I64 != int64(0) {
		value := protoreflect.ValueOfInt64(x.I64)
		if !f(fd_ABitOfEverything_i64, value) {
			return
		}
	}
	if x.F64 != uint64(0) {
		value := protoreflect.ValueOfUint64(x.F64)
		if !f(fd_ABitOfEverything_f64, value) {
			return
		}
	}
	if x.U64 != uint64(0) {
		value := protoreflect.ValueOfUint64(x.U64)
		if !f(fd_ABitOfEverything_u64, value) {
			return
		}
	}
	if x.Si64 != int64(0) {
		value := protoreflect.ValueOfInt64(x.Si64)
		if !f(fd_ABitOfEverything_si64, value) {
			return
		}
	}
	if x.Sf64 != int64(0) {
		value := protoreflect.ValueOfInt64(x.Sf64)
		if !f(fd_ABitOfEverything_sf64, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_ABitOfEverything) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.ABitOfEverything.message":
		return x.Message != nil
	case "testpb.ABitOfEverything.enum":
		return x.Enum != 0
	case "testpb.ABitOfEverything.repeated":
		return len(x.Repeated) != 0
	case "testpb.ABitOfEverything.str":
		return x.Str != ""
	case "testpb.ABitOfEverything.bool":
		return x.Bool != false
	case "testpb.ABitOfEverything.bytes":
		return len(x.Bytes) != 0
	case "testpb.ABitOfEverything.i32":
		return x.I32 != int32(0)
	case "testpb.ABitOfEverything.f32":
		return x.F32 != uint32(0)
	case "testpb.ABitOfEverything.u32":
		return x.U32 != uint32(0)
	case "testpb.ABitOfEverything.si32":
		return x.Si32 != int32(0)
	case "testpb.ABitOfEverything.sf32":
		return x.Sf32 != int32(0)
	case "testpb.ABitOfEverything.i64":
		return x.I64 != int64(0)
	case "testpb.ABitOfEverything.f64":
		return x.F64 != uint64(0)
	case "testpb.ABitOfEverything.u64":
		return x.U64 != uint64(0)
	case "testpb.ABitOfEverything.si64":
		return x.Si64 != int64(0)
	case "testpb.ABitOfEverything.sf64":
		return x.Sf64 != int64(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ABitOfEverything) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.ABitOfEverything.message":
		x.Message = nil
	case "testpb.ABitOfEverything.enum":
		x.Enum = 0
	case "testpb.ABitOfEverything.repeated":
		x.Repeated = nil
	case "testpb.ABitOfEverything.str":
		x.Str = ""
	case "testpb.ABitOfEverything.bool":
		x.Bool = false
	case "testpb.ABitOfEverything.bytes":
		x.Bytes = nil
	case "testpb.ABitOfEverything.i32":
		x.I32 = int32(0)
	case "testpb.ABitOfEverything.f32":
		x.F32 = uint32(0)
	case "testpb.ABitOfEverything.u32":
		x.U32 = uint32(0)
	case "testpb.ABitOfEverything.si32":
		x.Si32 = int32(0)
	case "testpb.ABitOfEverything.sf32":
		x.Sf32 = int32(0)
	case "testpb.ABitOfEverything.i64":
		x.I64 = int64(0)
	case "testpb.ABitOfEverything.f64":
		x.F64 = uint64(0)
	case "testpb.ABitOfEverything.u64":
		x.U64 = uint64(0)
	case "testpb.ABitOfEverything.si64":
		x.Si64 = int64(0)
	case "testpb.ABitOfEverything.sf64":
		x.Sf64 = int64(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_ABitOfEverything) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.ABitOfEverything.message":
		value := x.Message
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "testpb.ABitOfEverything.enum":
		value := x.Enum
		return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))
	case "testpb.ABitOfEverything.repeated":
		if len(x.Repeated) == 0 {
			return protoreflect.ValueOfList(&_ABitOfEverything_6_list{})
		}
		listValue := &_ABitOfEverything_6_list{list: &x.Repeated}
		return protoreflect.ValueOfList(listValue)
	case "testpb.ABitOfEverything.str":
		value := x.Str
		return protoreflect.ValueOfString(value)
	case "testpb.ABitOfEverything.bool":
		value := x.Bool
		return protoreflect.ValueOfBool(value)
	case "testpb.ABitOfEverything.bytes":
		value := x.Bytes
		return protoreflect.ValueOfBytes(value)
	case "testpb.ABitOfEverything.i32":
		value := x.I32
		return protoreflect.ValueOfInt32(value)
	case "testpb.ABitOfEverything.f32":
		value := x.F32
		return protoreflect.ValueOfUint32(value)
	case "testpb.ABitOfEverything.u32":
		value := x.U32
		return protoreflect.ValueOfUint32(value)
	case "testpb.ABitOfEverything.si32":
		value := x.Si32
		return protoreflect.ValueOfInt32(value)
	case "testpb.ABitOfEverything.sf32":
		value := x.Sf32
		return protoreflect.ValueOfInt32(value)
	case "testpb.ABitOfEverything.i64":
		value := x.I64
		return protoreflect.ValueOfInt64(value)
	case "testpb.ABitOfEverything.f64":
		value := x.F64
		return protoreflect.ValueOfUint64(value)
	case "testpb.ABitOfEverything.u64":
		value := x.U64
		return protoreflect.ValueOfUint64(value)
	case "testpb.ABitOfEverything.si64":
		value := x.Si64
		return protoreflect.ValueOfInt64(value)
	case "testpb.ABitOfEverything.sf64":
		value := x.Sf64
		return protoreflect.ValueOfInt64(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ABitOfEverything) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.ABitOfEverything.message":
		x.Message = value.Message().Interface().(*NestedMessage)
	case "testpb.ABitOfEverything.enum":
		x.Enum = (AnEnum)(value.Enum())
	case "testpb.ABitOfEverything.repeated":
		lv := value.List()
		clv := lv.(*_ABitOfEverything_6_list)
		x.Repeated = *clv.list
	case "testpb.ABitOfEverything.str":
		x.Str = value.Interface().(string)
	case "testpb.ABitOfEverything.bool":
		x.Bool = value.Bool()
	case "testpb.ABitOfEverything.bytes":
		x.Bytes = value.Bytes()
	case "testpb.ABitOfEverything.i32":
		x.I32 = int32(value.Int())
	case "testpb.ABitOfEverything.f32":
		x.F32 = uint32(value.Uint())
	case "testpb.ABitOfEverything.u32":
		x.U32 = uint32(value.Uint())
	case "testpb.ABitOfEverything.si32":
		x.Si32 = int32(value.Int())
	case "testpb.ABitOfEverything.sf32":
		x.Sf32 = int32(value.Int())
	case "testpb.ABitOfEverything.i64":
		x.I64 = value.Int()
	case "testpb.ABitOfEverything.f64":
		x.F64 = value.Uint()
	case "testpb.ABitOfEverything.u64":
		x.U64 = value.Uint()
	case "testpb.ABitOfEverything.si64":
		x.Si64 = value.Int()
	case "testpb.ABitOfEverything.sf64":
		x.Sf64 = value.Int()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ABitOfEverything) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.ABitOfEverything.message":
		if x.Message == nil {
			x.Message = new(NestedMessage)
		}
		return protoreflect.ValueOfMessage(x.Message.ProtoReflect())
	case "testpb.ABitOfEverything.repeated":
		if x.Repeated == nil {
			x.Repeated = []int32{}
		}
		value := &_ABitOfEverything_6_list{list: &x.Repeated}
		return protoreflect.ValueOfList(value)
	case "testpb.ABitOfEverything.enum":
		panic(fmt.Errorf("field enum of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.str":
		panic(fmt.Errorf("field str of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.bool":
		panic(fmt.Errorf("field bool of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.bytes":
		panic(fmt.Errorf("field bytes of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.i32":
		panic(fmt.Errorf("field i32 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.f32":
		panic(fmt.Errorf("field f32 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.u32":
		panic(fmt.Errorf("field u32 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.si32":
		panic(fmt.Errorf("field si32 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.sf32":
		panic(fmt.Errorf("field sf32 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.i64":
		panic(fmt.Errorf("field i64 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.f64":
		panic(fmt.Errorf("field f64 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.u64":
		panic(fmt.Errorf("field u64 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.si64":
		panic(fmt.Errorf("field si64 of message testpb.ABitOfEverything is not mutable"))
	case "testpb.ABitOfEverything.sf64":
		panic(fmt.Errorf("field sf64 of message testpb.ABitOfEverything is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_ABitOfEverything) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.ABitOfEverything.message":
		m := new(NestedMessage)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "testpb.ABitOfEverything.enum":
		return protoreflect.ValueOfEnum(0)
	case "testpb.ABitOfEverything.repeated":
		list := []int32{}
		return protoreflect.ValueOfList(&_ABitOfEverything_6_list{list: &list})
	case "testpb.ABitOfEverything.str":
		return protoreflect.ValueOfString("")
	case "testpb.ABitOfEverything.bool":
		return protoreflect.ValueOfBool(false)
	case "testpb.ABitOfEverything.bytes":
		return protoreflect.ValueOfBytes(nil)
	case "testpb.ABitOfEverything.i32":
		return protoreflect.ValueOfInt32(int32(0))
	case "testpb.ABitOfEverything.f32":
		return protoreflect.ValueOfUint32(uint32(0))
	case "testpb.ABitOfEverything.u32":
		return protoreflect.ValueOfUint32(uint32(0))
	case "testpb.ABitOfEverything.si32":
		return protoreflect.ValueOfInt32(int32(0))
	case "testpb.ABitOfEverything.sf32":
		return protoreflect.ValueOfInt32(int32(0))
	case "testpb.ABitOfEverything.i64":
		return protoreflect.ValueOfInt64(int64(0))
	case "testpb.ABitOfEverything.f64":
		return protoreflect.ValueOfUint64(uint64(0))
	case "testpb.ABitOfEverything.u64":
		return protoreflect.ValueOfUint64(uint64(0))
	case "testpb.ABitOfEverything.si64":
		return protoreflect.ValueOfInt64(int64(0))
	case "testpb.ABitOfEverything.sf64":
		return protoreflect.ValueOfInt64(int64(0))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.ABitOfEverything"))
		}
		panic(fmt.Errorf("message testpb.ABitOfEverything does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_ABitOfEverything) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.ABitOfEverything", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_ABitOfEverything) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ABitOfEverything) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_ABitOfEverything) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_ABitOfEverything) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*ABitOfEverything)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Message != nil {
			l = options.Size(x.Message)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Enum != 0 {
			n += 1 + runtime.Sov(uint64(x.Enum))
		}
		if len(x.Repeated) > 0 {
			l = 0
			for _, e := range x.Repeated {
				l += runtime.Sov(uint64(e))
			}
			n += 1 + runtime.Sov(uint64(l)) + l
		}
		l = len(x.Str)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Bool {
			n += 2
		}
		l = len(x.Bytes)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.I32 != 0 {
			n += 1 + runtime.Sov(uint64(x.I32))
		}
		if x.F32 != 0 {
			n += 5
		}
		if x.U32 != 0 {
			n += 1 + runtime.Sov(uint64(x.U32))
		}
		if x.Si32 != 0 {
			n += 1 + runtime.Soz(uint64(x.Si32))
		}
		if x.Sf32 != 0 {
			n += 5
		}
		if x.I64 != 0 {
			n += 1 + runtime.Sov(uint64(x.I64))
		}
		if x.F64 != 0 {
			n += 10
		}
		if x.U64 != 0 {
			n += 2 + runtime.Sov(uint64(x.U64))
		}
		if x.Si64 != 0 {
			n += 2 + runtime.Soz(uint64(x.Si64))
		}
		if x.Sf64 != 0 {
			n += 10
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*ABitOfEverything)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Sf64 != 0 {
			i -= 8
			binary.LittleEndian.PutUint64(dAtA[i:], uint64(x.Sf64))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0x99
		}
		if x.Si64 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64((uint64(x.Si64)<<1)^uint64((x.Si64>>63))))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0x90
		}
		if x.U64 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.U64))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0x88
		}
		if x.F64 != 0 {
			i -= 8
			binary.LittleEndian.PutUint64(dAtA[i:], uint64(x.F64))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0x81
		}
		if x.I64 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.I64))
			i--
			dAtA[i] = 0x78
		}
		if x.Sf32 != 0 {
			i -= 4
			binary.LittleEndian.PutUint32(dAtA[i:], uint32(x.Sf32))
			i--
			dAtA[i] = 0x75
		}
		if x.Si32 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64((uint32(x.Si32)<<1)^uint32((x.Si32>>31))))
			i--
			dAtA[i] = 0x68
		}
		if x.U32 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.U32))
			i--
			dAtA[i] = 0x60
		}
		if x.F32 != 0 {
			i -= 4
			binary.LittleEndian.PutUint32(dAtA[i:], uint32(x.F32))
			i--
			dAtA[i] = 0x5d
		}
		if x.I32 != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.I32))
			i--
			dAtA[i] = 0x50
		}
		if len(x.Bytes) > 0 {
			i -= len(x.Bytes)
			copy(dAtA[i:], x.Bytes)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bytes)))
			i--
			dAtA[i] = 0x4a
		}
		if x.Bool {
			i--
			if x.Bool {
				dAtA[i] = 1
			} else {
				dAtA[i] = 0
			}
			i--
			dAtA[i] = 0x40
		}
		if len(x.Str) > 0 {
			i -= len(x.Str)
			copy(dAtA[i:], x.Str)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Str)))
			i--
			dAtA[i] = 0x3a
		}
		if len(x.Repeated) > 0 {
			var pksize2 int
			for _, num := range x.Repeated {
				pksize2 += runtime.Sov(uint64(num))
			}
			i -= pksize2
			j1 := i
			for _, num1 := range x.Repeated {
				num := uint64(num1)
				for num >= 1<<7 {
					dAtA[j1] = uint8(uint64(num)&0x7f | 0x80)
					num >>= 7
					j1++
				}
				dAtA[j1] = uint8(num)
				j1++
			}
			i = runtime.EncodeVarint(dAtA, i, uint64(pksize2))
			i--
			dAtA[i] = 0x32
		}
		if x.Enum != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Enum))
			i--
			dAtA[i] = 0x10
		}
		if x.Message != nil {
			encoded, err := options.Marshal(x.Message)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*ABitOfEverything)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ABitOfEverything: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ABitOfEverything: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Message == nil {
					x.Message = &NestedMessage{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Message); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Enum", wireType)
				}
				x.Enum = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Enum |= AnEnum(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 6:
				if wireType == 0 {
					var v int32
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
						}
						if iNdEx >= l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						v |= int32(b&0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					x.Repeated = append(x.Repeated, v)
				} else if wireType == 2 {
					var packedLen int
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
						}
						if iNdEx >= l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						packedLen |= int(b&0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					if packedLen < 0 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
					}
					postIndex := iNdEx + packedLen
					if postIndex < 0 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
					}
					if postIndex > l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					var elementCount int
					var count int
					for _, integer := range dAtA[iNdEx:postIndex] {
						if integer < 128 {
							count++
						}
					}
					elementCount = count
					if elementCount != 0 && len(x.Repeated) == 0 {
						x.Repeated = make([]int32, 0, elementCount)
					}
					for iNdEx < postIndex {
						var v int32
						for shift := uint(0); ; shift += 7 {
							if shift >= 64 {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
							}
							if iNdEx >= l {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
							}
							b := dAtA[iNdEx]
							iNdEx++
							v |= int32(b&0x7F) << shift
							if b < 0x80 {
								break
							}
						}
						x.Repeated = append(x.Repeated, v)
					}
				} else {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Repeated", wireType)
				}
			case 7:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Str", wireType)
				}
				var stringLen uint64
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					stringLen |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				intStringLen := int(stringLen)
				if intStringLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + intStringLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Str = string(dAtA[iNdEx:postIndex])
				iNdEx = postIndex
			case 8:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bool", wireType)
				}
				var v int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					v |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				x.Bool = bool(v != 0)
			case 9:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bytes", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Bytes = append(x.Bytes[:0], dAtA[iNdEx:postIndex]...)
				if x.Bytes == nil {
					x.Bytes = []byte{}
				}
				iNdEx = postIndex
			case 10:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field I32", wireType)
				}
				x.I32 = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.I32 |= int32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 11:
				if wireType != 5 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field F32", wireType)
				}
				x.F32 = 0
				if (iNdEx + 4) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.F32 = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:]))
				iNdEx += 4
			case 12:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field U32", wireType)
				}
				x.U32 = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.U32 |= uint32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 13:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Si32", wireType)
				}
				var v int32
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					v |= int32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				v = int32((uint32(v) >> 1) ^ uint32(((v&1)<<31)>>31))
				x.Si32 = v
			case 14:
				if wireType != 5 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sf32", wireType)
				}
				x.Sf32 = 0
				if (iNdEx + 4) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Sf32 = int32(binary.LittleEndian.Uint32(dAtA[iNdEx:]))
				iNdEx += 4
			case 15:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field I64", wireType)
				}
				x.I64 = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.I64 |= int64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 16:
				if wireType != 1 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field F64", wireType)
				}
				x.F64 = 0
				if (iNdEx + 8) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.F64 = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))
				iNdEx += 8
			case 17:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field U64", wireType)
				}
				x.U64 = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.U64 |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 18:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Si64", wireType)
				}
				var v uint64
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					v |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				v = (v >> 1) ^ uint64((int64(v&1)<<63)>>63)
				x.Si64 = int64(v)
			case 19:
				if wireType != 1 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sf64", wireType)
				}
				x.Sf64 = 0
				if (iNdEx + 8) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Sf64 = int64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))
				iNdEx += 8
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_Duration           protoreflect.MessageDescriptor
	fd_Duration_duration  protoreflect.FieldDescriptor
	fd_Duration_timestamp protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_Duration = File_testpb_test_proto.Messages().ByName("Duration")
	fd_Duration_duration = md_Duration.Fields().ByName("duration")
	fd_Duration_timestamp = md_Duration.Fields().ByName("timestamp")
}

var _ protoreflect.Message = (*fastReflection_Duration)(nil)

type fastReflection_Duration Duration

func (x *Duration) ProtoReflect() protoreflect.Message {
	return (*fastReflection_Duration)(x)
}

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

var _fastReflection_Duration_messageType fastReflection_Duration_messageType
var _ protoreflect.MessageType = fastReflection_Duration_messageType{}

type fastReflection_Duration_messageType struct{}

func (x fastReflection_Duration_messageType) Zero() protoreflect.Message {
	return (*fastReflection_Duration)(nil)
}
func (x fastReflection_Duration_messageType) New() protoreflect.Message {
	return new(fastReflection_Duration)
}
func (x fastReflection_Duration_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_Duration
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_Duration) Descriptor() protoreflect.MessageDescriptor {
	return md_Duration
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_Duration) Type() protoreflect.MessageType {
	return _fastReflection_Duration_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_Duration) New() protoreflect.Message {
	return new(fastReflection_Duration)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_Duration) Interface() protoreflect.ProtoMessage {
	return (*Duration)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_Duration) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Duration != nil {
		value := protoreflect.ValueOfMessage(x.Duration.ProtoReflect())
		if !f(fd_Duration_duration, value) {
			return
		}
	}
	if x.Timestamp != nil {
		value := protoreflect.ValueOfMessage(x.Timestamp.ProtoReflect())
		if !f(fd_Duration_timestamp, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_Duration) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.Duration.duration":
		return x.Duration != nil
	case "testpb.Duration.timestamp":
		return x.Timestamp != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Duration) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.Duration.duration":
		x.Duration = nil
	case "testpb.Duration.timestamp":
		x.Timestamp = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_Duration) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.Duration.duration":
		value := x.Duration
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "testpb.Duration.timestamp":
		value := x.Timestamp
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Duration) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.Duration.duration":
		x.Duration = value.Message().Interface().(*durationpb.Duration)
	case "testpb.Duration.timestamp":
		x.Timestamp = value.Message().Interface().(*timestamppb.Timestamp)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Duration) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.Duration.duration":
		if x.Duration == nil {
			x.Duration = new(durationpb.Duration)
		}
		return protoreflect.ValueOfMessage(x.Duration.ProtoReflect())
	case "testpb.Duration.timestamp":
		if x.Timestamp == nil {
			x.Timestamp = new(timestamppb.Timestamp)
		}
		return protoreflect.ValueOfMessage(x.Timestamp.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_Duration) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.Duration.duration":
		m := new(durationpb.Duration)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "testpb.Duration.timestamp":
		m := new(timestamppb.Timestamp)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.Duration"))
		}
		panic(fmt.Errorf("message testpb.Duration does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_Duration) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.Duration", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_Duration) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Duration) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_Duration) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_Duration) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*Duration)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Duration != nil {
			l = options.Size(x.Duration)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Timestamp != nil {
			l = options.Size(x.Timestamp)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*Duration)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Timestamp != nil {
			encoded, err := options.Marshal(x.Timestamp)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.Duration != nil {
			encoded, err := options.Marshal(x.Duration)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*Duration)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Duration: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Duration: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Duration == nil {
					x.Duration = &durationpb.Duration{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Duration); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Timestamp == nil {
					x.Timestamp = &timestamppb.Timestamp{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Timestamp); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_NestedMessage     protoreflect.MessageDescriptor
	fd_NestedMessage_foo protoreflect.FieldDescriptor
	fd_NestedMessage_bar protoreflect.FieldDescriptor
)

func init() {
	file_testpb_test_proto_init()
	md_NestedMessage = File_testpb_test_proto.Messages().ByName("NestedMessage")
	fd_NestedMessage_foo = md_NestedMessage.Fields().ByName("foo")
	fd_NestedMessage_bar = md_NestedMessage.Fields().ByName("bar")
}

var _ protoreflect.Message = (*fastReflection_NestedMessage)(nil)

type fastReflection_NestedMessage NestedMessage

func (x *NestedMessage) ProtoReflect() protoreflect.Message {
	return (*fastReflection_NestedMessage)(x)
}

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

var _fastReflection_NestedMessage_messageType fastReflection_NestedMessage_messageType
var _ protoreflect.MessageType = fastReflection_NestedMessage_messageType{}

type fastReflection_NestedMessage_messageType struct{}

func (x fastReflection_NestedMessage_messageType) Zero() protoreflect.Message {
	return (*fastReflection_NestedMessage)(nil)
}
func (x fastReflection_NestedMessage_messageType) New() protoreflect.Message {
	return new(fastReflection_NestedMessage)
}
func (x fastReflection_NestedMessage_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_NestedMessage
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_NestedMessage) Descriptor() protoreflect.MessageDescriptor {
	return md_NestedMessage
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_NestedMessage) Type() protoreflect.MessageType {
	return _fastReflection_NestedMessage_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_NestedMessage) New() protoreflect.Message {
	return new(fastReflection_NestedMessage)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_NestedMessage) Interface() protoreflect.ProtoMessage {
	return (*NestedMessage)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_NestedMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Foo != "" {
		value := protoreflect.ValueOfString(x.Foo)
		if !f(fd_NestedMessage_foo, value) {
			return
		}
	}
	if x.Bar != int32(0) {
		value := protoreflect.ValueOfInt32(x.Bar)
		if !f(fd_NestedMessage_bar, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_NestedMessage) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "testpb.NestedMessage.foo":
		return x.Foo != ""
	case "testpb.NestedMessage.bar":
		return x.Bar != int32(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_NestedMessage) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "testpb.NestedMessage.foo":
		x.Foo = ""
	case "testpb.NestedMessage.bar":
		x.Bar = int32(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_NestedMessage) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "testpb.NestedMessage.foo":
		value := x.Foo
		return protoreflect.ValueOfString(value)
	case "testpb.NestedMessage.bar":
		value := x.Bar
		return protoreflect.ValueOfInt32(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_NestedMessage) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "testpb.NestedMessage.foo":
		x.Foo = value.Interface().(string)
	case "testpb.NestedMessage.bar":
		x.Bar = int32(value.Int())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_NestedMessage) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.NestedMessage.foo":
		panic(fmt.Errorf("field foo of message testpb.NestedMessage is not mutable"))
	case "testpb.NestedMessage.bar":
		panic(fmt.Errorf("field bar of message testpb.NestedMessage is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_NestedMessage) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "testpb.NestedMessage.foo":
		return protoreflect.ValueOfString("")
	case "testpb.NestedMessage.bar":
		return protoreflect.ValueOfInt32(int32(0))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: testpb.NestedMessage"))
		}
		panic(fmt.Errorf("message testpb.NestedMessage does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_NestedMessage) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in testpb.NestedMessage", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_NestedMessage) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_NestedMessage) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_NestedMessage) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_NestedMessage) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*NestedMessage)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.Foo)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Bar != 0 {
			n += 1 + runtime.Sov(uint64(x.Bar))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*NestedMessage)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Bar != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Bar))
			i--
			dAtA[i] = 0x10
		}
		if len(x.Foo) > 0 {
			i -= len(x.Foo)
			copy(dAtA[i:], x.Foo)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Foo)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*NestedMessage)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: NestedMessage: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: NestedMessage: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Foo", wireType)
				}
				var stringLen uint64
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					stringLen |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				intStringLen := int(stringLen)
				if intStringLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + intStringLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Foo = string(dAtA[iNdEx:postIndex])
				iNdEx = postIndex
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bar", wireType)
				}
				x.Bar = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Bar |= int32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.0
// 	protoc        (unknown)
// source: testpb/test.proto

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type AnEnum int32

const (
	AnEnum_UNDEFINED AnEnum = 0
	AnEnum_ONE       AnEnum = 1
	AnEnum_TWO       AnEnum = 2
)

// Enum value maps for AnEnum.
var (
	AnEnum_name = map[int32]string{
		0: "UNDEFINED",
		1: "ONE",
		2: "TWO",
	}
	AnEnum_value = map[string]int32{
		"UNDEFINED": 0,
		"ONE":       1,
		"TWO":       2,
	}
)

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

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

func (AnEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_testpb_test_proto_enumTypes[0].Descriptor()
}

func (AnEnum) Type() protoreflect.EnumType {
	return &file_testpb_test_proto_enumTypes[0]
}

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

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

type WithAMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StrMap map[string]string `protobuf:"bytes,1,rep,name=str_map,json=strMap,proto3" json:"str_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *WithAMap) Reset() {
	*x = WithAMap{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithAMap) ProtoMessage() {}

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

func (x *WithAMap) GetStrMap() map[string]string {
	if x != nil {
		return x.StrMap
	}
	return nil
}

type WithAList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DontOmitemptyList []string `protobuf:"bytes,1,rep,name=dont_omitempty_list,json=dontOmitemptyList,proto3" json:"dont_omitempty_list,omitempty"`
	List              []string `protobuf:"bytes,2,rep,name=list,proto3" json:"list,omitempty"`
}

func (x *WithAList) Reset() {
	*x = WithAList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithAList) ProtoMessage() {}

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

func (x *WithAList) GetDontOmitemptyList() []string {
	if x != nil {
		return x.DontOmitemptyList
	}
	return nil
}

func (x *WithAList) GetList() []string {
	if x != nil {
		return x.List
	}
	return nil
}

type WithAJson struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Field1 []byte `protobuf:"bytes,1,opt,name=field1,proto3" json:"field1,omitempty"`
}

func (x *WithAJson) Reset() {
	*x = WithAJson{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithAJson) ProtoMessage() {}

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

func (x *WithAJson) GetField1() []byte {
	if x != nil {
		return x.Field1
	}
	return nil
}

type ABitOfEverything struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Message  *NestedMessage `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	Enum     AnEnum         `protobuf:"varint,2,opt,name=enum,proto3,enum=testpb.AnEnum" json:"enum,omitempty"`
	Repeated []int32        `protobuf:"varint,6,rep,packed,name=repeated,proto3" json:"repeated,omitempty"`
	Str      string         `protobuf:"bytes,7,opt,name=str,proto3" json:"str,omitempty"`
	Bool     bool           `protobuf:"varint,8,opt,name=bool,proto3" json:"bool,omitempty"`
	Bytes    []byte         `protobuf:"bytes,9,opt,name=bytes,proto3" json:"bytes,omitempty"`
	I32      int32          `protobuf:"varint,10,opt,name=i32,proto3" json:"i32,omitempty"`
	F32      uint32         `protobuf:"fixed32,11,opt,name=f32,proto3" json:"f32,omitempty"`
	U32      uint32         `protobuf:"varint,12,opt,name=u32,proto3" json:"u32,omitempty"`
	Si32     int32          `protobuf:"zigzag32,13,opt,name=si32,proto3" json:"si32,omitempty"`
	Sf32     int32          `protobuf:"fixed32,14,opt,name=sf32,proto3" json:"sf32,omitempty"`
	I64      int64          `protobuf:"varint,15,opt,name=i64,proto3" json:"i64,omitempty"`
	F64      uint64         `protobuf:"fixed64,16,opt,name=f64,proto3" json:"f64,omitempty"`
	U64      uint64         `protobuf:"varint,17,opt,name=u64,proto3" json:"u64,omitempty"`
	Si64     int64          `protobuf:"zigzag64,18,opt,name=si64,proto3" json:"si64,omitempty"`
	Sf64     int64          `protobuf:"fixed64,19,opt,name=sf64,proto3" json:"sf64,omitempty"`
}

func (x *ABitOfEverything) Reset() {
	*x = ABitOfEverything{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ABitOfEverything) ProtoMessage() {}

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

func (x *ABitOfEverything) GetMessage() *NestedMessage {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *ABitOfEverything) GetEnum() AnEnum {
	if x != nil {
		return x.Enum
	}
	return AnEnum_UNDEFINED
}

func (x *ABitOfEverything) GetRepeated() []int32 {
	if x != nil {
		return x.Repeated
	}
	return nil
}

func (x *ABitOfEverything) GetStr() string {
	if x != nil {
		return x.Str
	}
	return ""
}

func (x *ABitOfEverything) GetBool() bool {
	if x != nil {
		return x.Bool
	}
	return false
}

func (x *ABitOfEverything) GetBytes() []byte {
	if x != nil {
		return x.Bytes
	}
	return nil
}

func (x *ABitOfEverything) GetI32() int32 {
	if x != nil {
		return x.I32
	}
	return 0
}

func (x *ABitOfEverything) GetF32() uint32 {
	if x != nil {
		return x.F32
	}
	return 0
}

func (x *ABitOfEverything) GetU32() uint32 {
	if x != nil {
		return x.U32
	}
	return 0
}

func (x *ABitOfEverything) GetSi32() int32 {
	if x != nil {
		return x.Si32
	}
	return 0
}

func (x *ABitOfEverything) GetSf32() int32 {
	if x != nil {
		return x.Sf32
	}
	return 0
}

func (x *ABitOfEverything) GetI64() int64 {
	if x != nil {
		return x.I64
	}
	return 0
}

func (x *ABitOfEverything) GetF64() uint64 {
	if x != nil {
		return x.F64
	}
	return 0
}

func (x *ABitOfEverything) GetU64() uint64 {
	if x != nil {
		return x.U64
	}
	return 0
}

func (x *ABitOfEverything) GetSi64() int64 {
	if x != nil {
		return x.Si64
	}
	return 0
}

func (x *ABitOfEverything) GetSf64() int64 {
	if x != nil {
		return x.Sf64
	}
	return 0
}

type Duration struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Duration  *durationpb.Duration   `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

func (x *Duration) Reset() {
	*x = Duration{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Duration) ProtoMessage() {}

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

func (x *Duration) GetDuration() *durationpb.Duration {
	if x != nil {
		return x.Duration
	}
	return nil
}

func (x *Duration) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

type NestedMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Foo string `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
	Bar int32  `protobuf:"varint,2,opt,name=bar,proto3" json:"bar,omitempty"`
}

func (x *NestedMessage) Reset() {
	*x = NestedMessage{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testpb_test_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NestedMessage) ProtoMessage() {}

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

func (x *NestedMessage) GetFoo() string {
	if x != nil {
		return x.Foo
	}
	return ""
}

func (x *NestedMessage) GetBar() int32 {
	if x != nil {
		return x.Bar
	}
	return 0
}

var File_testpb_test_proto protoreflect.FileDescriptor

var file_testpb_test_proto_rawDesc = []byte{
	0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x1a, 0x11, 0x61, 0x6d, 0x69,
	0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
	0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75,
	0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,
	0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
	0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7c, 0x0a, 0x08, 0x57, 0x69, 0x74, 0x68, 0x41,
	0x4d, 0x61, 0x70, 0x12, 0x35, 0x0a, 0x07, 0x73, 0x74, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x57, 0x69,
	0x74, 0x68, 0x41, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74,
	0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x09, 0x57, 0x69, 0x74, 0x68, 0x41, 0x4c, 0x69,
	0x73, 0x74, 0x12, 0x35, 0x0a, 0x13, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x6f, 0x6d, 0x69, 0x74, 0x65,
	0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42,
	0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x64, 0x6f, 0x6e, 0x74, 0x4f, 0x6d, 0x69, 0x74,
	0x65, 0x6d, 0x70, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73,
	0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x35, 0x0a,
	0x09, 0x57, 0x69, 0x74, 0x68, 0x41, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x10, 0x9a, 0xe7, 0xb0, 0x2a,
	0x0b, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x31, 0x22, 0x92, 0x03, 0x0a, 0x10, 0x41, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x45,
	0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x65, 0x73,
	0x74, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x6e,
	0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70,
	0x62, 0x2e, 0x41, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1a,
	0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05,
	0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74,
	0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x12, 0x0a, 0x04,
	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c,
	0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x33, 0x32, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x03, 0x69, 0x33, 0x32, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x33, 0x32, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x66, 0x33, 0x32, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x33,
	0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x33, 0x32, 0x12, 0x12, 0x0a, 0x04,
	0x73, 0x69, 0x33, 0x32, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x69, 0x33, 0x32,
	0x12, 0x12, 0x0a, 0x04, 0x73, 0x66, 0x33, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x04,
	0x73, 0x66, 0x33, 0x32, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x36, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x03, 0x69, 0x36, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x36, 0x34, 0x18, 0x10, 0x20,
	0x01, 0x28, 0x06, 0x52, 0x03, 0x66, 0x36, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x36, 0x34, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x75, 0x36, 0x34, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69,
	0x36, 0x34, 0x18, 0x12, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x73, 0x69, 0x36, 0x34, 0x12, 0x12,
	0x0a, 0x04, 0x73, 0x66, 0x36, 0x34, 0x18, 0x13, 0x20, 0x01, 0x28, 0x10, 0x52, 0x04, 0x73, 0x66,
	0x36, 0x34, 0x3a, 0x15, 0x8a, 0xe7, 0xb0, 0x2a, 0x10, 0x41, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x45,
	0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x22, 0x7b, 0x0a, 0x08, 0x44, 0x75, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x47, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x12, 0x8a, 0xe7, 0xb0,
	0x2a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a,
	0x29, 0x0a, 0x06, 0x41, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44,
	0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
	0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x42, 0x83, 0x01, 0x0a, 0x0a, 0x63,
	0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x42, 0x09, 0x54, 0x65, 0x73, 0x74, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64,
	0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x78, 0x2f, 0x74, 0x78, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x6a,
	0x73, 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
	0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x58, 0x58,
	0xaa, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74,
	0x70, 0x62, 0xe2, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62,
	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_testpb_test_proto_rawDescOnce sync.Once
	file_testpb_test_proto_rawDescData = file_testpb_test_proto_rawDesc
)

func file_testpb_test_proto_rawDescGZIP() []byte {
	file_testpb_test_proto_rawDescOnce.Do(func() {
		file_testpb_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_testpb_test_proto_rawDescData)
	})
	return file_testpb_test_proto_rawDescData
}

var file_testpb_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_testpb_test_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_testpb_test_proto_goTypes = []interface{}{
	(AnEnum)(0),                   // 0: testpb.AnEnum
	(*WithAMap)(nil),              // 1: testpb.WithAMap
	(*WithAList)(nil),             // 2: testpb.WithAList
	(*WithAJson)(nil),             // 3: testpb.WithAJson
	(*ABitOfEverything)(nil),      // 4: testpb.ABitOfEverything
	(*Duration)(nil),              // 5: testpb.Duration
	(*NestedMessage)(nil),         // 6: testpb.NestedMessage
	nil,                           // 7: testpb.WithAMap.StrMapEntry
	(*durationpb.Duration)(nil),   // 8: google.protobuf.Duration
	(*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
}
var file_testpb_test_proto_depIdxs = []int32{
	7, // 0: testpb.WithAMap.str_map:type_name -> testpb.WithAMap.StrMapEntry
	6, // 1: testpb.ABitOfEverything.message:type_name -> testpb.NestedMessage
	0, // 2: testpb.ABitOfEverything.enum:type_name -> testpb.AnEnum
	8, // 3: testpb.Duration.duration:type_name -> google.protobuf.Duration
	9, // 4: testpb.Duration.timestamp:type_name -> google.protobuf.Timestamp
	5, // [5:5] is the sub-list for method output_type
	5, // [5:5] is the sub-list for method input_type
	5, // [5:5] is the sub-list for extension type_name
	5, // [5:5] is the sub-list for extension extendee
	0, // [0:5] is the sub-list for field type_name
}

func init() { file_testpb_test_proto_init() }
func file_testpb_test_proto_init() {
	if File_testpb_test_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_testpb_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithAMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testpb_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithAList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testpb_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithAJson); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testpb_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ABitOfEverything); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testpb_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Duration); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testpb_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NestedMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_testpb_test_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   7,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_testpb_test_proto_goTypes,
		DependencyIndexes: file_testpb_test_proto_depIdxs,
		EnumInfos:         file_testpb_test_proto_enumTypes,
		MessageInfos:      file_testpb_test_proto_msgTypes,
	}.Build()
	File_testpb_test_proto = out.File
	file_testpb_test_proto_rawDesc = nil
	file_testpb_test_proto_goTypes = nil
	file_testpb_test_proto_depIdxs = nil
}
