code: func mergeSliceWithoutSpecialElements(original, patch []interface{}, mergeKey string, schema LookupPatchMeta, mergeOptions MergeOptions) ([]interface{}, error) {
  	for _, v := range patch {
  		typedV := v.(map[string]interface{})
  		mergeValue, ok := typedV[mergeKey]
  		if !ok {
  			return nil, mergepatch.ErrNoMergeKey(typedV, mergeKey)
  		}
  
  		// If we find a value with this merge key value in original, merge the
  		// maps. Otherwise append onto original.
  		originalMap, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue)
  		if err != nil {
  			return nil, err
  		}
  
  		if found {
  			var mergedMaps interface{}
  			var err error
  			// Merge into original.
  			mergedMaps, err = mergeMap(originalMap, typedV, schema, mergeOptions)
  			if err != nil {
  				return nil, err
  			}
  
  			original[originalKey] = mergedMaps
  		} else {
  			original = append(original, v)
  		}
  	}
  	return original, nil
  }
docs: // mergeSliceWithoutSpecialElements merges slices with non-special elements.
  // original and patch must be slices of maps, they should be checked before calling this function.