private static <K, V> Map<K, V> deepCopyMap(Map<K, V> original) {
        final Map<K, V> copy = new ConcurrentSkipListMap<>();

        original.entrySet().stream()
            .map(e -> new AbstractMap.SimpleImmutableEntry<>(e.getKey(), deepCopyObject(e.getValue())))
            .forEach(e -> copy.put(e.getKey(), e.getValue()));

        return copy;
    }
Casts the specified object to a {@code List<Map<String, Object>>}.
<p>
Careful! This method does not cause any unchecked warnings, so it might
be unsafe to use.

@param obj  the object to cast
@return     the typed list
runtime-parent/runtime-config/src/main/java/com/speedment/runtime/config/util/DocumentUtil.java