... is typically implemented by converting the internal address of
the object into an integer, but this implementation technique is not
required by the Java™ programming language.
Whenever it is invoked on the same object more than once during an
execution of a Java application, the hashCode method must consistently
return the same integer.