code: func StrategicMergeMapPatch(original, patch JSONMap, dataStruct interface{}) (JSONMap, error) {
  	schema, err := NewPatchMetaFromStruct(dataStruct)
  	if err != nil {
  		return nil, err
  	}
  
  	// We need the go struct tags `patchMergeKey` and `patchStrategy` for fields that support a strategic merge patch.
  	// For native resources, we can easily figure out these tags since we know the fields.
  
  	// Because custom resources are decoded as Unstructured and because we're missing the metadata about how to handle
  	// each field in a strategic merge patch, we can't find the go struct tags. Hence, we can't easily  do a strategic merge
  	// for custom resources. So we should fail fast and return an error.
  	if _, ok := dataStruct.(*unstructured.Unstructured); ok {
  		return nil, mergepatch.ErrUnsupportedStrategicMergePatchFormat
  	}
  
  	return StrategicMergeMapPatchUsingLookupPatchMeta(original, patch, schema)
  }
docs: // StrategicMergeMapPatch applies a strategic merge patch. The original and patch documents
  // must be JSONMap. A patch can be created from an original and modified document by
  // calling CreateTwoWayMergeMapPatch.
  // Warning: the original and patch JSONMap objects are mutated by this function and should not be reused.