use System.identityHashCode to get distinct integers for distinct objects even if hashCode() is overridden