class MapFunctions {

    public static <T, R> Map<T, R> combineMaps(Map<T, R> map1, Map<T, R> map2) {

        if (map1 == null && map2 == null) {
            return new HashMap<>(0);
        }

        if (map1 == null) {
            return new HashMap<>(map2);
        }

        if (map2 == null) {
            return new HashMap<>(map1);
        }

        Map<T, R> combined = new HashMap<>(map1);
        map2.forEach((key, value) -> combined.put(key, value));
        return combined;
    }

    private  MapFunctions();

}