func NewMessage(md *desc.MessageDescriptor) *Message {
	return NewMessageWithMessageFactory(md, nil)
}
NewMessage creates a new dynamic message for the type represented by the given
message descriptor. During de-serialization, a default MessageFactory is used to
instantiate any nested message fields and no extension fields will be parsed. To
use a custom MessageFactory or ExtensionRegistry, use MessageFactory.NewMessage.
package dynamic
import (
	"bytes"
	"compress/gzip"
	"errors"
	"fmt"
	"reflect"
	"sort"
	"strings"
	"github.com/golang/protobuf/proto"
	"github.com/golang/protobuf/protoc-gen-go/descriptor"
	"github.com/jhump/protoreflect/desc"
)
var ErrUnknownTagNumber = errors.New("unknown tag number")
var UnknownTagNumberError = ErrUnknownTagNumber
var ErrUnknownFieldName = errors.New("unknown field name")
var UnknownFieldNameError = ErrUnknownFieldName
var ErrFieldIsNotMap = errors.New("field is not a map type")
var FieldIsNotMapError = ErrFieldIsNotMap
var ErrFieldIsNotRepeated = errors.New("field is not repeated")
var FieldIsNotRepeatedError = ErrFieldIsNotRepeated
var ErrIndexOutOfRange = errors.New("index is out of range")
var IndexOutOfRangeError = ErrIndexOutOfRange
var ErrNumericOverflow = errors.New("numeric value is out of range")
var NumericOverflowError = ErrNumericOverflow
var typeOfProtoMessage = reflect.TypeOf((*proto.Message)(nil)).Elem()
var typeOfDynamicMessage = reflect.TypeOf((*Message)(nil))
var typeOfBytes = reflect.TypeOf(([]byte)(nil))
var varintTypes = map[descriptor.FieldDescriptorProto_Type]bool{}
var fixed32Types = map[descriptor.FieldDescriptorProto_Type]bool{}
var fixed64Types = map[descriptor.FieldDescriptorProto_Type]bool{}
func init() {
	varintTypes[descriptor.FieldDescriptorProto_TYPE_BOOL] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_INT32] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_INT64] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_UINT32] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_UINT64] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_SINT32] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_SINT64] = true
	varintTypes[descriptor.FieldDescriptorProto_TYPE_ENUM] = true
	fixed32Types[descriptor.FieldDescriptorProto_TYPE_FIXED32] = true
	fixed32Types[descriptor.FieldDescriptorProto_TYPE_SFIXED32] = true
	fixed32Types[descriptor.FieldDescriptorProto_TYPE_FLOAT] = true
	fixed64Types[descriptor.FieldDescriptorProto_TYPE_FIXED64] = true
	fixed64Types[descriptor.FieldDescriptorProto_TYPE_SFIXED64] = true
	fixed64Types[descriptor.FieldDescriptorProto_TYPE_DOUBLE] = true
}
type Message struct {
	md            *desc.MessageDescriptor
	er            *ExtensionRegistry
	mf            *MessageFactory
	extraFields   map[int32]*desc.FieldDescriptor
	values        map[int32]interface{}
	unknownFields map[int32][]UnknownField
}
type UnknownField struct {
	Encoding int8
	Contents []byte
	Value    uint64
}