Cycles<EDGE> findCycles() {
        JohnsonCycleFinder johnsonCycleFinder = new JohnsonCycleFinder(createPrimitiveGraph());
        JohnsonCycleFinder.Result rawCycles = johnsonCycleFinder.findCycles();
        return new CyclesInternal<>(mapToCycles(rawCycles), rawCycles.maxNumberOfCyclesReached());
    }
@Test
    public void finds_cycles_in_real_life_graph() {
        Graph<Integer, Edge<Integer>> graph = RealLifeGraph.get();
        int expectedNumberOfCycles = 10000;
        ArchConfiguration.get().setProperty(MAX_NUMBER_OF_CYCLES_TO_DETECT_PROPERTY_NAME, String.valueOf(expectedNumberOfCycles));

        Cycles<Edge<Integer>> cycles = graph.findCycles();

        assertThatCycles(cycles).hasSize(expectedNumberOfCycles);
        assertThat(cycles.maxNumberOfCyclesReached()).as("maximum number of cycles reached").isTrue();
    }