void dfs_FinishVertex(object sender, VertexEventArgs e) { TypeVertex v = (TypeVertex)e.Vertex; List <TypeVertex> pes = PendingEdges.Pop(); foreach (TypeVertex target in pes) { IVertex srcv = VertexReassignmentMap[v]; IVertex targetv = VertexReassignmentMap[target]; if (srcv != targetv && !destcg.ContainsEdge(srcv, targetv)) { destcg.AddEdge(srcv, targetv); } } Trace.Unindent(); Trace.WriteLine("F: " + v.Name); }