ype.html#equals-java.lang.Object-"><code>equals(Object)</code></a> and <code>hashCode()</code> methods must
 always override both methods to ensure the contract between
 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang"><code>Object.equals(java.lang.Object)</code></a> and <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java