final var headIt = ranges.headSet(range, true).descendingIterator();
if (headIt.hasNext()) {
final var head = headIt.next();
- if (head.contains(longBits)) {
+ if (Long.compareUnsigned(head.upperBits, longBits) >= 0) {
+ // Already contained, this is a no-op
return;
}
return UnsignedLong.fromLongBits(upperBits);
}
- boolean contains(final long longBits) {
- return Long.compareUnsigned(lowerBits, longBits) <= 0 && Long.compareUnsigned(upperBits, longBits) >= 0;
- }
-
Entry copy() {
return new Entry(lowerBits, upperBits);
}
public final boolean contains(final long longBits) {
final var head = ranges.floor(Entry.of(longBits));
- return head != null && head.contains(longBits);
+ return head != null
+ && Long.compareUnsigned(head.lowerBits, longBits) <= 0
+ && Long.compareUnsigned(head.upperBits, longBits) >= 0;
}
public final boolean isEmpty() {