Apparently Java can give negative hash code values