Equality and Hash Codes for Keys
Equal keys must produce equal hash codes.
Unequal keys may still produce the same hash code because collisions are allowed.
The fields used for equality and hashing should remain stable while the key is stored.
Breaking the equality/hash contract can cause failed lookups or duplicate logical keys.
When overriding equality, the corresponding hash implementation must also be updated.