The hash code is currently implemented as
{code}
public int hashCode() {
long hash = minSmallest + minLargest << 16 + minLargest >> 48 + maxSmallest << 32 +
maxSmallest >> 32 + maxLargest << 48 + maxLargest >> 16;
return (int) (hash ^ (hash >>> 32));
}
{code}
Since addition has higher precedence, the hash value is almost always is zero.
(E.g. >> (32 + maxLargest) swaps away at least half of all the bits).
The fix is to add some parentheses.