void computeUltimateDependencies(CompiledValue cv, Set<RuntimeIterator> set) {
    Set<RuntimeIterator> dependencySet = getDependencySet(cv, true);
    for (RuntimeIterator rIter : dependencySet) {
      Set<RuntimeIterator> indRuntimeIterators =
          itrDefToIndpndtRuntimeItrMap.get(rIter.getCmpIteratorDefn());
      if (indRuntimeIterators != null) {
        set.addAll(indRuntimeIterators);
      }
    }
  }
Calculates set of Runtime Iterators on which a given CompiledValue ultimately depends. The
independent iterators may belong to other scopes.
<p>
This function will populate the set to its independent RuntimeIterators. However if the
CompiledValue happens to be a CompiledIteratorDef & if it is independent of any other
RuntimeIterators then no addition will be done in the Set.
<p>
TODO: the behavior of this function will change if we modify the computeDependency function of
the CompiledIteratorDef as in that case the Set will be added with the self RuntimeIterator (
if the CompiledIteratorDef is independent) which is not the case now.
<p>
TODO: If a CompiledIteratorDef has only one dependent RuntimeIterator should it still be stored
in a Set or should it be a single value?
geode-core/src/main/java/org/apache/geode/cache/query/internal/ExecutionContext.java