code: @Override
    public void add(int value) {
      int key = toIntUnsigned(highbits(value));
      if (key != currentKey) {
        if (key < currentKey) {
          underlying.add(value);
          return;
        } else {
          appendToUnderlying();
          currentKey = key;
        }
      }
      int low = toIntUnsigned(lowbits(value));
      bitmap[(low >>> 6)] |= (1L << low);
      dirty = true;
    }
docs: Adds the value to the underlying bitmap. The data might
  be added to a temporary buffer. You should call "flush"
  when you are done.
  
  @param value the value to add.