code: private void bubbleUpNodeTable(DAGraph<DataT, NodeT> from, LinkedList<String> path) {
          if (path.contains(from.rootNode.key())) {
              path.push(from.rootNode.key()); // For better error message
              throw new IllegalStateException("Detected circular dependency: " + StringUtils.join(path, " -> "));
          }
          path.push(from.rootNode.key());
          for (DAGraph<DataT, NodeT> to : from.parentDAGs) {
              this.merge(from.nodeTable, to.nodeTable);
              this.bubbleUpNodeTable(to, path);
          }
          path.pop();
      }
docs: Propagates node table of given DAG to all of it ancestors.