fixed negative hashCode bug