@Override
  public SelectResults filterEvaluate(ExecutionContext context, SelectResults intermediateResults,
      boolean completeExpansionNeeded, CompiledValue iterOperands, RuntimeIterator[] indpndntItrs,
      boolean isIntersection, boolean conditioningNeeded, boolean evalProj)
      throws FunctionDomainException, TypeMismatchException, NameResolutionException,
      QueryInvocationTargetException {
    // see if we're dependent on the current iterator
    // if not let super handle it
    if (!isDependentOnCurrentScope(context)) {
      return super.filterEvaluate(context, intermediateResults);
    }
    IndexInfo[] idxInfo = getIndexInfo(context);
    Support.Assert(idxInfo != null,
        "a comparison that is dependent, not indexed, and filter evaluated is not possible");
    Support.Assert(idxInfo.length == 1, "In operator should have only one index");

    return singleBaseCollectionFilterEvaluate(context, intermediateResults, completeExpansionNeeded,
        iterOperands, idxInfo[0], indpndntItrs, isIntersection, conditioningNeeded, evalProj);

  }
Evaluates as a filter taking advantage of indexes if appropriate. This function has a
meaningful implementation only in CompiledComparison & CompiledUndefined . It is unsupported in
other classes. The additional parameters which it takes are a boolean which is used to indicate
whether the index result set needs to be expanded to the top level or not. The second is a
CompiledValue representing the operands which are only iter evaluatable. The CompiledValue
passed will be null except if a GroupJunction has only one filter evaluatable condition & rest
are iter operands. In such cases , the iter operands will be evaluated while expanding/cutting
down the index resultset
geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledIn.java