@Test public void shouldHaveNoCycles() { Graph<String> graph = new Graph<>(); packageDependencies.forEach( (key, set) -> { Node<String> node = graph.findOrCreateNode(key); set.stream() .filter(packageDependencies::containsKey) .forEach(target -> node.linkedTo(graph.findOrCreateNode(target))); }); graph.topologicalSort(); System.out.println("----------------------- dependencies:"); System.out.println(graph.toString()); System.out.println("-----------------------"); }