public ClassHierarchyNode(IEnumerable <ClassHierarchyNode> nodesToMerge) { this(); V_0 = null; V_1 = nodesToMerge.GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = V_1.get_Current(); if (!V_2.get_IsHardNode()) { continue; } if (V_0 != null) { throw new InvalidCastException("Cannot infer types."); } V_0 = V_2.inferedType; } } finally { if (V_1 != null) { V_1.Dispose(); } } this.inferedType = V_0; V_1 = nodesToMerge.GetEnumerator(); try { while (V_1.MoveNext()) { V_3 = V_1.get_Current(); V_3.inferedType = this.inferedType; this.get_ContainedNodes().Add(V_3); V_3.UpdateVariablesType(); } } finally { if (V_1 != null) { V_1.Dispose(); } } this.RedirectConstraints(); return; }