code: func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *FinalizeREST) {
  	store := &genericregistry.Store{
  		NewFunc:                  func() runtime.Object { return &api.Namespace{} },
  		NewListFunc:              func() runtime.Object { return &api.NamespaceList{} },
  		PredicateFunc:            namespace.MatchNamespace,
  		DefaultQualifiedResource: api.Resource("namespaces"),
  
  		CreateStrategy:      namespace.Strategy,
  		UpdateStrategy:      namespace.Strategy,
  		DeleteStrategy:      namespace.Strategy,
  		ReturnDeletedObject: true,
  
  		TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
  	}
  	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: namespace.GetAttrs}
  	if err := store.CompleteWithOptions(options); err != nil {
  		panic(err) // TODO: Propagate error up
  	}
  
  	statusStore := *store
  	statusStore.UpdateStrategy = namespace.StatusStrategy
  
  	finalizeStore := *store
  	finalizeStore.UpdateStrategy = namespace.FinalizeStrategy
  
  	return &REST{store: store, status: &statusStore}, &StatusREST{store: &statusStore}, &FinalizeREST{store: &finalizeStore}
  }
docs: // NewREST returns a RESTStorage object that will work against namespaces.