A class that acts as a NSDictionary able to accept objects as keys using (hash generation). It also can use weak references to avoid cyclic references.