enter(x); stack.push(x); setIndexOf(x, d); int depth = traversedCount(); Collection<X> c = x.edges(); for (X s : c) edge(x, s); if (indexOf(s) == 0) traverse(s); setIndexOf(x, Math.min(indexOf(x), indexOf(s))); if (indexOf(x) == d) branch(x); X s = stack.peek(); while (!s.equals(x)) pop(s); stack.pop(); setIndexOf(s, INFINITY); s = stack.peek(); setIndexOf(x, INFINITY); stack.pop();