/** * Apply a deep merge on two {@code Map}s. Thanks to * {@code http://stackoverflow.com/a/36123154/548685}. * * @param original * @param newMap */ private static void deepMerge( @NonNull Map original, @NonNull Map newMap) { for (Entry e : (Set<Entry>) newMap.entrySet()) { Object currentKey = e.getKey(), currentValue = e.getValue(); if (shouldMergeAnyWay( original, currentKey, currentValue )) original.put(currentKey, currentValue); } }