docs: public List<PlanNode> findAllAtOrBelow( Traversal order ) {
          assert order != null;
          LinkedList<PlanNode> results = new LinkedList<PlanNode>();
          LinkedList<PlanNode> queue = new LinkedList<PlanNode>();
          queue.add(this);
          while (!queue.isEmpty()) {
              PlanNode aNode = queue.poll();
              switch (order) {
                  case LEVEL_ORDER:
                      results.add(aNode);
                      queue.addAll(aNode.getChildren());
                      break;
                  case PRE_ORDER:
                      results.add(aNode);
                      queue.addAll(0, aNode.getChildren());
                      break;
                  case POST_ORDER:
                      queue.addAll(0, aNode.getChildren());
                      results.addFirst(aNode);
                      break;
              }
          }
          return results;
      }