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;
}