private Object evaluateColln(ExecutionContext context) throws QueryInvocationTargetException,
      NameResolutionException, TypeMismatchException, FunctionDomainException {
    Object evalColln = null;
    if (colln.isDependentOnCurrentScope(context)) {
      evalColln = colln.evaluate(context);
    } else {
      evalColln = context.cacheGet(colln);
      if (evalColln == null) {
        evalColln = colln.evaluate(context);
        context.cachePut(colln, evalColln);
      }
    }
    return evalColln;
  }
We retrieve the collection from the context cache if it exists This allows us to not have to
reevaluate the sub query on every iteration. This improves performance for queries such as
"select * from /receipts r where r.type = 'large' and r.id in (select c.id from /customers c
where c.status = 'preferred') The sub query would create a set that would not change and store
it into the context if it does not yet exist
geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledIn.java