@Override
 public void compute(OpenBitSetDISI accumulator, DocIdSet bitset) throws IOException {
   if (bitset instanceof OpenBitSet) {
     accumulator.and((OpenBitSet) bitset);
   } else if (bitset instanceof SortedVIntList) {
     accumulator.inPlaceAnd(bitset.iterator());
   } else {
     throw new IllegalArgumentException("Not supported:" + bitset);
   }
 }
  @SuppressWarnings({"unchecked"})
  @Override
  public T[] call() throws Exception {
    OpenBitSetDISI accumulator = new OpenBitSetDISI(finalBitsetSize);

    OpenBitSetDISI toCompareDisi = new OpenBitSetDISI(finalBitsetSize);
    toCompareDisi.inPlaceOr(toCompare.iterator());

    Object[] result = new Object[toIndex - fromIndex];
    for (int i = fromIndex; i < toIndex; i++) {
      result[i - fromIndex] = operation.compute(accumulator, bs[i], toCompareDisi);
    }

    return ArrayUtils.typedArray(result);
  }