Two key objects of the same type with the same values should hash to the same value, so that they can be used in dictionaries as keys in a useful way. Things that compare equal should also hash equal.

Two keys with different implementation types shouldn't hash to the same value, though.