code: func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk schema.GroupVersionKind, obj Object) (Object, error) {
  	if obj != nil {
  		kinds, _, err := t.ObjectKinds(obj)
  		if err != nil {
  			return nil, err
  		}
  		for _, kind := range kinds {
  			if gvk == kind {
  				return obj, nil
  			}
  		}
  	}
  	return c.New(gvk)
  }
docs: // UseOrCreateObject returns obj if the canonical ObjectKind returned by the provided typer matches gvk, or
  // invokes the ObjectCreator to instantiate a new gvk. Returns an error if the typer cannot find the object.