static Map cloneMap(Map map) { if (map == null) ret new HashMap; // assume mutex is equal to map synchronized(map) { ret map instanceof TreeMap ? new TreeMap((TreeMap) map) // copies comparator : map instanceof LinkedHashMap ? new LinkedHashMap(map) : new HashMap(map); } } static L cloneMap(Iterable l, IF1 f) { L x = emptyList(l); if (l != null) for (A o : cloneList(l)) x.add(f.get(o)); ret x; }