Cloning cache by IdentifyHashMap

Ensures that separate objects that happen to .equals() are
cloned independentyly.