What you didn't think you needed to know about hashCode and equals