question: @ Override public SelectResults filterEvaluate ( ExecutionContext context , SelectResults intermediateResults , boolean completeExpansionNeeded , @ Retained CompiledValue iterOperands , RuntimeIterator [ ] indpndntItrs , boolean isIntersection , boolean conditioningNeeded , boolean evaluateProjection ) throws FunctionDomainException , TypeMismatchException , NameResolutionException , QueryInvocationTargetException { 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" ) ; if ( idxInfo . length == 1 ) { return singleBaseCollectionFilterEvaluate ( context , intermediateResults , completeExpansionNeeded , iterOperands , idxInfo [ 0 ] , indpndntItrs , isIntersection , conditioningNeeded , evaluateProjection ) ; } else { Support . Assert ( idxInfo . length == 2 , "A Composite CompiledComparison which is filter evaluatable needs to have two indexes" ) ; return doubleBaseCollectionFilterEvaluate ( context , intermediateResults , completeExpansionNeeded , iterOperands , idxInfo , indpndntItrs ) ; } }
target:  Asif : 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