private void traverse(object paramObject, GraphTraversalListener paramGraphTraversalListener, ISet <object> paramSet1, ISet <object> paramSet2) { ISet <object> set = (ISet <object>) this.outbounds[paramObject]; if (set != null) { foreach (Edge edge in set) { ISet <object> set1 = (ISet <object>) this.inbounds[edge.target]; System.Collections.IEnumerator iterator = set1.GetEnumerator(); bool @bool = true; while (iterator.MoveNext()) { Edge edge1 = (Edge)iterator.Current; if (paramSet2.Contains(edge1.source) && !paramSet1.Contains(edge1.source) && !paramObject.Equals(edge1.source)) { @bool = false; break; } } if (@bool) { paramGraphTraversalListener.traverse(edge.target); paramSet1.Add(edge.target); traverse(edge.target, paramGraphTraversalListener, paramSet1, paramSet2); } } } }
public virtual void traverse(object paramObject, GraphTraversalListener paramGraphTraversalListener) { HashSet <object> hashSet1 = new HashSet <object>(); walk(paramObject, hashSet1); HashSet <object> hashSet2 = new HashSet <object>(); hashSet2.Add(paramObject); traverse(paramObject, paramGraphTraversalListener, hashSet2, hashSet1); }