docs: public void and(final ImmutableRoaringBitmap array) {
      int pos1 = 0, pos2 = 0, intersectionSize = 0;
      final int length1 = highLowContainer.size(), length2 = array.highLowContainer.size();
  
      while (pos1 < length1 && pos2 < length2) {
        final short s1 = highLowContainer.getKeyAtIndex(pos1);
        final short s2 = array.highLowContainer.getKeyAtIndex(pos2);
        if (s1 == s2) {
          final MappeableContainer c1 = highLowContainer.getContainerAtIndex(pos1);
          final MappeableContainer c2 = array.highLowContainer.getContainerAtIndex(pos2);
          final MappeableContainer c = c1.iand(c2);
          if (!c.isEmpty()) {
            getMappeableRoaringArray().replaceKeyAndContainerAtIndex(intersectionSize++, s1, c);
          }
          ++pos1;
          ++pos2;
        } else if (Util.compareUnsigned(s1, s2) < 0) { // s1 < s2
          pos1 = highLowContainer.advanceUntil(s2, pos1);
        } else { // s1 > s2
          pos2 = array.highLowContainer.advanceUntil(s1, pos2);
        }
      }
      getMappeableRoaringArray().resize(intersectionSize);
    }