- public void add(final long longBits) {
- final var range = Entry.of(longBits);
-
- final var headIt = headIter(range);
- if (headIt.hasNext()) {
- final var head = headIt.next();
- if (head.contains(longBits)) {
- return;
- }
- if (head.upperBits + 1 == longBits) {
- head.upperBits = longBits;
- final var tailSet = ranges.tailSet(range);
- if (!tailSet.isEmpty()) {
- final var tail = tailSet.first();
- if (tail.lowerBits - 1 == longBits) {
- tail.lowerBits = head.lowerBits;
- headIt.remove();
- }
- }
- return;
- }
- }
-
- final var tailSet = ranges.tailSet(range);
- if (!tailSet.isEmpty()) {
- final var tail = tailSet.first();
- if (tail.lowerBits - 1 == longBits) {
- tail.lowerBits = longBits;
- return;
- }
- }
-
- ranges.add(range);
- }