boolean (int v, Int2ObjectMap<BitSet> graph, BitSet visited, BitSet stack) { if (!visited.get(v)) { visited.set(v); stack.set(v); BitSet set = graph.get(v); if (set != null && set.stream().anyMatch(i -> !visited.get(i) && isCycle(i, graph, visited, stack) || stack.get(i))) { return true; } } stack.clear(v); return false; }