| The contract for `Object.hashCode` states that if two objects are equal, then | |
| calling the `hashCode()` method on each of the two objects must produce the same | |
| result. Implementing `equals()` but not `hashCode()` causes broken behaviour | |
| when trying to store the object in a collection. | |
| See Effective Java 3rd Edition ยง11 for more information and a discussion of how | |
| to correctly implement `hashCode()`. |