docs: public List<PlanNode> findAllFirstNodesAtOrBelow( Type typeToFind ) {
          List<PlanNode> results = new LinkedList<PlanNode>();
          LinkedList<PlanNode> queue = new LinkedList<PlanNode>();
          queue.add(this);
          while (!queue.isEmpty()) {
              PlanNode aNode = queue.poll();
              if (aNode.getType() == Type.PROJECT) {
                  results.add(aNode);
              } else {
                  queue.addAll(0, aNode.getChildren());
              }
          }
          return results;
      }