code: func strategicPatchObject(
  	defaulter runtime.ObjectDefaulter,
  	originalObject runtime.Object,
  	patchBytes []byte,
  	objToUpdate runtime.Object,
  	schemaReferenceObj runtime.Object,
  ) error {
  	originalObjMap, err := runtime.DefaultUnstructuredConverter.ToUnstructured(originalObject)
  	if err != nil {
  		return err
  	}
  
  	patchMap := make(map[string]interface{})
  	if err := json.Unmarshal(patchBytes, &patchMap); err != nil {
  		return errors.NewBadRequest(err.Error())
  	}
  
  	if err := applyPatchToObject(defaulter, originalObjMap, patchMap, objToUpdate, schemaReferenceObj); err != nil {
  		return err
  	}
  	return nil
  }
docs: // strategicPatchObject applies a strategic merge patch of <patchBytes> to
  // <originalObject> and stores the result in <objToUpdate>.
  // It additionally returns the map[string]interface{} representation of the
  // <originalObject> and <patchBytes>.
  // NOTE: Both <originalObject> and <objToUpdate> are supposed to be versioned.