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 §3.9 for more information and a discussion of how to
Suppress false positives by adding the suppression annotation
@SuppressWarnings("EqualsHashCode") to the enclosing element.