code: func NewServiceAccountsController(saInformer coreinformers.ServiceAccountInformer, nsInformer coreinformers.NamespaceInformer, cl clientset.Interface, options ServiceAccountsControllerOptions) (*ServiceAccountsController, error) {
  	e := &ServiceAccountsController{
  		client:                  cl,
  		serviceAccountsToEnsure: options.ServiceAccounts,
  		queue:                   workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "serviceaccount"),
  	}
  	if cl != nil && cl.CoreV1().RESTClient().GetRateLimiter() != nil {
  		if err := metrics.RegisterMetricAndTrackRateLimiterUsage("serviceaccount_controller", cl.CoreV1().RESTClient().GetRateLimiter()); err != nil {
  			return nil, err
  		}
  	}
  
  	saInformer.Informer().AddEventHandlerWithResyncPeriod(cache.ResourceEventHandlerFuncs{
  		DeleteFunc: e.serviceAccountDeleted,
  	}, options.ServiceAccountResync)
  	e.saLister = saInformer.Lister()
  	e.saListerSynced = saInformer.Informer().HasSynced
  
  	nsInformer.Informer().AddEventHandlerWithResyncPeriod(cache.ResourceEventHandlerFuncs{
  		AddFunc:    e.namespaceAdded,
  		UpdateFunc: e.namespaceUpdated,
  	}, options.NamespaceResync)
  	e.nsLister = nsInformer.Lister()
  	e.nsListerSynced = nsInformer.Informer().HasSynced
  
  	e.syncHandler = e.syncNamespace
  
  	return e, nil
  }
docs: // NewServiceAccountsController returns a new *ServiceAccountsController.