Source:
<code>public ImmutableBitmap getBitmapIndex(final BitmapIndexSelector selector) { if (boundDimFilter.isAlphaNumeric() || extractionFn != null) { return Filters.matchPredicate( boundDimFilter.getDimension(), selector, <START> new Predicate<Object>() <END> { @Override public boolean apply(Object inputObj) { String input = inputObj == null ? null : inputObj.toString(); return doesMatch(input); } } ); } else { final BitmapIndex bitmapIndex = selector.getBitmapIndex(boundDimFilter.getDimension()); if (bitmapIndex == null || bitmapIndex.getCardinality() == 0) { if (doesMatch(null)) { return selector.getBitmapFactory() .complement(selector.getBitmapFactory().makeEmptyImmutableBitmap(), selector.getNumRows()); } else { return selector.getBitmapFactory().makeEmptyImmutableBitmap(); } } final int startIndex; final int endIndex; if (!boundDimFilter.hasLowerBound()) { startIndex = 0; } else { final int found = bitmapIndex.getIndex(boundDimFilter.getLower()); if (found >= 0) { startIndex = boundDimFilter.isLowerStrict() ? found + 1 : found; } else { startIndex = -(found + 1); } } if (!boundDimFilter.hasUpperBound()) { endIndex = bitmapIndex.getCardinality(); } else { final int found = bitmapIndex.getIndex(boundDimFilter.getUpper()); if (found >= 0) { endIndex = boundDimFilter.isUpperStrict() ? found : found + 1; } else { endIndex = -(found + 1); } } return selector.getBitmapFactory().union( new Iterable<ImmutableBitmap>() { @Override public Iterator<ImmutableBitmap> iterator() { return new Iterator<ImmutableBitmap>() { int currIndex = startIndex; @Override public boolean hasNext() { return currIndex < endIndex; } @Override public ImmutableBitmap next() { return bitmapIndex.getBitmap(currIndex++); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } } ); } }</code><technical_language>getPredicate here</technical_language>

Target:
public ImmutableBitmap getBitmapIndex(final BitmapIndexSelector selector) { if (boundDimFilter.isAlphaNumeric() || extractionFn != null) { return Filters.matchPredicate( boundDimFilter.getDimension(), selector, getPredicateFactory().makeStringPredicate() ); } else { final BitmapIndex bitmapIndex = selector.getBitmapIndex(boundDimFilter.getDimension()); if (bitmapIndex == null || bitmapIndex.getCardinality() == 0) { if (doesMatch(null)) { return selector.getBitmapFactory() .complement(selector.getBitmapFactory().makeEmptyImmutableBitmap(), selector.getNumRows()); } else { return selector.getBitmapFactory().makeEmptyImmutableBitmap(); } } final int startIndex; final int endIndex; if (!boundDimFilter.hasLowerBound()) { startIndex = 0; } else { final int found = bitmapIndex.getIndex(boundDimFilter.getLower()); if (found >= 0) { startIndex = boundDimFilter.isLowerStrict() ? found + 1 : found; } else { startIndex = -(found + 1); } } if (!boundDimFilter.hasUpperBound()) { endIndex = bitmapIndex.getCardinality(); } else { final int found = bitmapIndex.getIndex(boundDimFilter.getUpper()); if (found >= 0) { endIndex = boundDimFilter.isUpperStrict() ? found : found + 1; } else { endIndex = -(found + 1); } } return selector.getBitmapFactory().union( new Iterable<ImmutableBitmap>() { @Override public Iterator<ImmutableBitmap> iterator() { return new Iterator<ImmutableBitmap>() { int currIndex = startIndex; @Override public boolean hasNext() { return currIndex < endIndex; } @Override public ImmutableBitmap next() { return bitmapIndex.getBitmap(currIndex++); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } } ); } }