func (fd *FileDescriptor) GetName() string {
	return fd.proto.GetName()
}
GetName returns the name of the file, as it was given to the protoc invocation
to compile it, possibly including path (relative to a directory in the proto
import path).
package desc
import (
	"bytes"
	"fmt"
	"sort"
	"strconv"
	"strings"
	"unicode/utf8"
	"github.com/golang/protobuf/proto"
	dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
	"github.com/jhump/protoreflect/desc/internal"
)
type Descriptor interface {
	GetName() string
	GetFullyQualifiedName() string
	GetParent() Descriptor
	GetFile() *FileDescriptor
	GetOptions() proto.Message
	GetSourceInfo() *dpb.SourceCodeInfo_Location
	AsProto() proto.Message
}
type sourceInfoRecomputeFunc = internal.SourceInfoComputeFunc
type FileDescriptor struct {
	proto      *dpb.FileDescriptorProto
	symbols    map[string]Descriptor
	deps       []*FileDescriptor
	publicDeps []*FileDescriptor
	weakDeps   []*FileDescriptor
	messages   []*MessageDescriptor
	enums      []*EnumDescriptor
	extensions []*FieldDescriptor
	services   []*ServiceDescriptor
	fieldIndex map[string]map[int32]*FieldDescriptor
	isProto3   bool
	sourceInfo internal.SourceInfoMap
	sourceInfoRecomputeFunc
}
func (fd *FileDescriptor) recomputeSourceInfo() {
	internal.PopulateSourceInfoMap(fd.proto, fd.sourceInfo)
}
func (fd *FileDescriptor) registerField(field *FieldDescriptor) {
	fields := fd.fieldIndex[field.owner.GetFullyQualifiedName()]
	if fields == nil {
		fields = map[int32]*FieldDescriptor{}
		fd.fieldIndex[field.owner.GetFullyQualifiedName()] = fields
	}
	fields[field.GetNumber()] = field
}