code: protected void readd (int value)
      {
          int mask = _buckets.length - 1;
          int start = hash(value) & mask, idx = start;
          do {
              if (_buckets[idx] == _sentinel) {
                  _buckets[idx] = value;
                  return;
              }
          } while ((idx = idx + 1 & mask) != start);
  
          // we shouldn't get here
          throw new RuntimeException("Ran out of buckets readding value " + value);
      }
docs: Adds a value that we know is neither equal to the sentinel nor already in the set.