The contract for
Object.hashCode states that if two objects are equal, then
hashCode() method on each of the two objects must produce the same
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
Suppress false positives by adding the suppression annotation
@SuppressWarnings("EqualsHashCode") to the enclosing element.