@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 twoClustersConnectedWithIgnoredEdges() {
        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),
                                             new TestEdge(B, E,
                                                     weigher.getNonViableWeight()),
                                             new TestEdge(E, B,
                                                     weigher.getNonViableWeight())));

        TarjanGraphSearch<TestVertex, TestEdge> gs = new TarjanGraphSearch<>();
        SccResult<TestVertex, TestEdge> result = gs.search(graph, weigher);
        validate(result, 2);
        validate(result, 0, 4, 4);
        validate(result, 1, 4, 4);
    }