docs: protected PlanNode findOriginatingNode( PlanNode criteriaNode,
                                              List<PlanNode> originatingNodes ) {
          Set<SelectorName> requiredSelectors = criteriaNode.getSelectors();
          if (requiredSelectors.isEmpty()) return criteriaNode;
  
          // first look for originating nodes that exactly match the required selectors ...
          for (PlanNode originatingNode : originatingNodes) {
              if (!criteriaNode.isAbove(originatingNode)) continue;
              if (originatingNode.getSelectors().equals(requiredSelectors)) return originatingNode;
          }
  
          // Nothing matched exactly, so can we push down to a node that contain all of the required selectors ...
          for (PlanNode originatingNode : originatingNodes) {
              if (originatingNode.getSelectors().containsAll(requiredSelectors)) return originatingNode;
          }
          return null;
      }