static Map cloneMap(Map map) { if (map == null) ret litmap(); // assume mutex is equal to collection, which will be true unless you explicitly pass a mutex to synchronizedList() which no one ever does. synchronized(map) { ret map instanceof TreeMap ? new TreeMap(map) : map instanceof LinkedHashMap ? new LinkedHashMap(map) : new HashMap(map); } }