code: func NewREST(optsGetter generic.RESTOptionsGetter, issuer token.TokenGenerator, auds authenticator.Audiences, max time.Duration, podStorage, secretStorage *genericregistry.Store) *REST {
  	store := &genericregistry.Store{
  		NewFunc:                  func() runtime.Object { return &api.ServiceAccount{} },
  		NewListFunc:              func() runtime.Object { return &api.ServiceAccountList{} },
  		DefaultQualifiedResource: api.Resource("serviceaccounts"),
  
  		CreateStrategy:      serviceaccount.Strategy,
  		UpdateStrategy:      serviceaccount.Strategy,
  		DeleteStrategy:      serviceaccount.Strategy,
  		ReturnDeletedObject: true,
  
  		TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
  	}
  	options := &generic.StoreOptions{RESTOptions: optsGetter}
  	if err := store.CompleteWithOptions(options); err != nil {
  		panic(err) // TODO: Propagate error up
  	}
  
  	var trest *TokenREST
  	if issuer != nil && podStorage != nil && secretStorage != nil {
  		trest = &TokenREST{
  			svcaccts:             store,
  			pods:                 podStorage,
  			secrets:              secretStorage,
  			issuer:               issuer,
  			auds:                 auds,
  			maxExpirationSeconds: int64(max.Seconds()),
  		}
  	}
  
  	return &REST{
  		Store: store,
  		Token: trest,
  	}
  }
docs: // NewREST returns a RESTStorage object that will work against service accounts.