docs: private void dfVisit(ItemDefinition node, List<ItemDefinition> allNodes, Collection<ItemDefinition> visited, List<ItemDefinition> dfv) {
          visited.add(node);
  
          List<ItemDefinition> neighbours = allNodes.stream()
                                                    .filter(n -> !n.getName().equals(node.getName())) // filter out `node`
                                                    .filter(n -> recurseFind(node, new QName(modelNamespace, n.getName()))) // I pick from allNodes, those referenced by this `node`. Only neighbours of `node`, because N is referenced by NODE.
                                                    .collect(Collectors.toList());
          for (ItemDefinition n : neighbours) {
              if (!visited.contains(n)) {
                  dfVisit(n, allNodes, visited, dfv);
              }
          }
  
          dfv.add(node);
      }