private static HyscaleException getException(String key) {
        HyscaleException ex = new HyscaleException(CommonErrorCode.STRATEGIC_MERGE_KEY_NOT_FOUND,
                key);
        logger.error("Error while performing strategic patch", ex);
        return ex;
    }
Creates new source map and recursively updates it with patch values
Returns the map as JsonObject

<p>
Implementation:
Updates patch values into source, for each value in patch
1. If null or empty, ignore (doesn't delete value in source)
2. If it is replacement value type, replace value in source
3. If arrays type
 3.a. If replacement value type elements, merge the values without duplication
 3.b. If merge strategy is replace, replace all items in the list
 3.c. Else merge based on key provided, throws exception if key is not available
4. For Others(JSONObject):
 4.a. If value in source is absent or replacement type, replace with patch value(Model change)
 4.b. Else Recursively call with JsonObject of source and patch
</p>

@param source
@param patch
@param fieldDataProvider - provides keys while merging array entities
@return merged JsonObject
@throws HyscaleException
commons/src/main/java/io/hyscale/commons/framework/patch/StrategicPatch.java