private HashSet <ILogicalConstruct> BuildLoop(DFSTree tree, out HashSet <ILogicalConstruct> loopBody) { loopBody = new HashSet <ILogicalConstruct>(); V_0 = new HashSet <ILogicalConstruct>(); V_1 = tree.get_BackEdges().GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = V_1.get_Current(); V_3 = V_2.get_End().get_Construct() as ILogicalConstruct; V_4 = V_2.get_Start().get_Construct() as ILogicalConstruct; if (this.removedEdges.ContainsKey(V_4) && this.removedEdges.get_Item(V_4).Contains(V_3)) { continue; } V_5 = tree.GetPath(V_2.get_End(), V_2.get_Start()); V_6 = this.ExpandLoopBodyWithCrossEdges(V_5); V_7 = this.GetConstructsCollection(V_6); if (!this.CanBeLoop(V_3, V_4, V_6)) { continue; } dummyVar0 = V_0.Add(V_4); V_8 = V_7.GetEnumerator(); try { while (V_8.MoveNext()) { V_9 = V_8.get_Current(); dummyVar1 = loopBody.Add(V_9); } } finally { if (V_8 != null) { V_8.Dispose(); } } } } finally { ((IDisposable)V_1).Dispose(); } return(V_0); }