/guava/android/guava/src/com/google/common/graph/Graphs.java
if ( state == NodeVisitState.COMPLETE) { visitedNodes.put( node, NodeVisitState.COMPLETE) ; }
visitedNodes.put ( node, NodeVisitState.COMPLETE ) ;
for (N nextNode : graph.successors(node)) { if (canTraverseWithoutReusingEdge(graph, nextNode, previousNode) && subgraphHasCycle(graph, visitedNodes, nextNode, node)) { return true; } } <extra_id_0> return false; } private static boolean canTraverseWithoutReusingEdge( Graph<?> graph, Object nextNode, @CheckForNull Object previousNode) { if (graph.isDirected() || !Objects.equal(previousNode, nextNode)) { return true;