code: func NewController(crdInformer informers.CustomResourceDefinitionInformer) *Controller {
  	c := &Controller{
  		crdLister:  crdInformer.Lister(),
  		crdsSynced: crdInformer.Informer().HasSynced,
  		queue:      workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "crd_openapi_controller"),
  		crdSpecs:   map[string]map[string]*spec.Swagger{},
  	}
  
  	crdInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
  		AddFunc:    c.addCustomResourceDefinition,
  		UpdateFunc: c.updateCustomResourceDefinition,
  		DeleteFunc: c.deleteCustomResourceDefinition,
  	})
  
  	c.syncFn = c.sync
  	return c
  }
docs: // NewController creates a new Controller with input CustomResourceDefinition informer