code: private MappeableContainer convertToLazyBitmapIfNeeded() {
      // when nbrruns exceed MappeableArrayContainer.DEFAULT_MAX_SIZE, then we know it should be
      // stored as a bitmap, always
      if (this.nbrruns > MappeableArrayContainer.DEFAULT_MAX_SIZE) {
        MappeableBitmapContainer answer = new MappeableBitmapContainer();
        for (int rlepos = 0; rlepos < this.nbrruns; ++rlepos) {
          int start = toIntUnsigned(this.getValue(rlepos));
          int end = start + toIntUnsigned(this.getLength(rlepos)) + 1;
          BufferUtil.setBitmapRange(answer.bitmap, start, end);
        }
        answer.cardinality = -1;
        return answer;
      }
      return this;
    }
docs: this function avoids computing the cardinality