type CRDGetter … func CRDFromDynamic(client dynamic.Interface) CRDGetter { … } type CRDFinder … func NewCRDFinder(getter CRDGetter) CRDFinder { … } type crdFinder … func (f *crdFinder) cacheCRDs() error { … } func (f *crdFinder) findCRD(gvk schema.GroupKind) bool { … } func (f *crdFinder) HasCRD(gvk schema.GroupKind) (bool, error) { … }