private void doNestedIterations(int level, boolean add, ExecutionContext context)
        throws TypeMismatchException, FunctionDomainException,
        NameResolutionException, QueryInvocationTargetException, IMQException {
      List iterList = context.getCurrentIterators();
      if (level == iteratorSize) {
        applyProjection(add, context);
      } else {
        RuntimeIterator rIter = (RuntimeIterator) iterList.get(level);
        // System.out.println("Level = "+level+" Iter = "+rIter.getDef());
        Collection c = rIter.evaluateCollection(context);
        if (c == null) {
          return;
        }
        for (final Object o : c) {
          rIter.setCurrent(o);
          doNestedIterations(level + 1, add, context);
        }
      }
    }
@param add true if adding to index, false if removing
geode-core/src/main/java/org/apache/geode/cache/query/internal/index/CompactRangeIndex.java