Return a hash code for this object. For any two objects for which equals indicates equality, the returned hash code should be the same.