func LoadFileDescriptor(file string) (*FileDescriptor, error) {
	return loadFileDescriptor(file, nil)
}
LoadFileDescriptor creates a file descriptor using the bytes returned by
proto.FileDescriptor. Descriptors are cached so that they do not need to be
re-processed if the same file is fetched again later.
package desc
import (
	"fmt"
	"reflect"
	"sync"
	"github.com/golang/protobuf/proto"
	dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
	"github.com/jhump/protoreflect/internal"
)
var (
	cacheMu       sync.RWMutex
	filesCache    = map[string]*FileDescriptor{}
	messagesCache = map[string]*MessageDescriptor{}
	enumCache     = map[reflect.Type]*EnumDescriptor{}
)