@Override
    public SccResult<V, E> search(Graph<V, E> graph, EdgeWeigher<V, E> weigher) {
        SccResult<V, E> result = new SccResult<>(graph);
        for (V vertex : graph.getVertexes()) {
            VertexData data = result.data(vertex);
            if (data == null) {
                connect(graph, vertex, weigher, result);
            }
        }
        return result.build();
    }
@Test
    public void twoUnconnectedCluster() {
        graph = new AdjacencyListsGraph<>(vertexes(),
                                          of(new TestEdge(A, B),
                                             new TestEdge(B, C),
                                             new TestEdge(C, D),
                                             new TestEdge(D, A),
                                             new TestEdge(E, F),
                                             new TestEdge(F, G),
                                             new TestEdge(G, H),
                                             new TestEdge(H, E)));
        TarjanGraphSearch<TestVertex, TestEdge> gs = new TarjanGraphSearch<>();
        SccResult<TestVertex, TestEdge> result = gs.search(graph, null);
        validate(result, 2);
        validate(result, 0, 4, 4);
        validate(result, 1, 4, 4);
    }