A wrapper class for usage of immutable objects as Keys in HashMaps/HashSets. The wrapper calls hashCode() of the wrapped object only once and caches its result. This is valid for immutable objects and speeds up HashMaps/HashSets operations considerably.