Effective JAVA, Item8, Obey the general contract when overriding the
equals