code: public List<JoinNode> generateAllNodesJoinOrder() {
          ArrayList<JoinNode> nodes = new ArrayList<>();
          listNodesJoinOrderRecursive(nodes, true);
          return nodes;
      }
docs: Returns nodes in the order they are joined in the tree by iterating the tree depth-first