public Collection<Set<V>> computeMaxCliques() {
        lazyRun();
        return maximumCliques;
    }
@Test
    public void test6DisconnectedSubgraphsInLargerGraph() {
        List<List<String>> groups = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            int j = i;
            int vertexCount = i + 10;
            List<String> vertices = IntStream.range(0, vertexCount).mapToObj(v -> j + "_" + v).collect(toList());
            groups.add(vertices);
        }

        Graph<String> graph = populateFullyConnectedGraph(groups.stream().flatMap(Collection::stream).collect(toList()));

        for (BiTuple<Integer, Integer> t : Arrays.asList(BiTuple.of(0, 9), BiTuple.of(1, 8), BiTuple.of(2, 7), BiTuple.of(3, 6),
                BiTuple.of(4, 5))) {
            for (String v1 : groups.get(t.element1)) {
                for (String v2 : groups.get(t.element2)) {
                    graph.disconnect(v1, v2);
                }
            }
        }


        Collection<Set<String>> maxCliques = new BronKerboschCliqueFinder<>(graph, 60, TimeUnit.SECONDS).computeMaxCliques();


        assumeFalse(maxCliques.isEmpty());

        Set<String> expectedClique = new HashSet<>();
        for (int i = groups.size() / 2; i < groups.size(); i++) {
            expectedClique.addAll(groups.get(i));
        }

        assertEquals(1, maxCliques.size());
        assertEquals(expectedClique, maxCliques.iterator().next());
    }