docs: private void initializeDependentKeys() {
          visit(new Visitor<NodeT>() {
              @Override
              public void visitNode(NodeT node) {
                  if (node.dependencyKeys().isEmpty()) {
                      return;
                  }
  
                  String dependentKey = node.key();
                  for (String dependencyKey : node.dependencyKeys()) {
                      nodeTable.get(dependencyKey)
                              .addDependent(dependentKey);
                  }
              }
  
              @Override
              public  void visitEdge(String fromKey, String toKey, EdgeType edgeType) {
                  if (edgeType == EdgeType.BACK) {
                      throw new IllegalStateException("Detected circular dependency: " + findPath(fromKey, toKey));
                  }
              }
          });
      }