homogeneous hashCode and operator==(other)