code: func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *ApprovalREST) {
  	store := &genericregistry.Store{
  		NewFunc:                  func() runtime.Object { return &certificates.CertificateSigningRequest{} },
  		NewListFunc:              func() runtime.Object { return &certificates.CertificateSigningRequestList{} },
  		DefaultQualifiedResource: certificates.Resource("certificatesigningrequests"),
  
  		CreateStrategy: csrregistry.Strategy,
  		UpdateStrategy: csrregistry.Strategy,
  		DeleteStrategy: csrregistry.Strategy,
  		ExportStrategy: csrregistry.Strategy,
  
  		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
  	}
  
  	// Subresources use the same store and creation strategy, which only
  	// allows empty subs. Updates to an existing subresource are handled by
  	// dedicated strategies.
  	statusStore := *store
  	statusStore.UpdateStrategy = csrregistry.StatusStrategy
  
  	approvalStore := *store
  	approvalStore.UpdateStrategy = csrregistry.ApprovalStrategy
  
  	return &REST{store}, &StatusREST{store: &statusStore}, &ApprovalREST{store: &approvalStore}
  }
docs: // NewREST returns a registry which will store CertificateSigningRequest in the given helper