private void PropagateExpressions()
 {
     V_0 = this.context.get_MethodContext().get_Expressions().get_BlockExpressions().get_Values().GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = V_0.get_Current();
             V_2 = this.GetAssignmentExpressions(V_1).GetEnumerator();
             try
             {
                 while (V_2.MoveNext())
                 {
                     V_3 = V_2.get_Current();
                     V_4 = this.GetDominatedExpressions(V_3, V_1);
                     V_5 = 0;
                     while (V_5 < V_4.get_Count())
                     {
                         this.TryPropagate(V_4.get_Item(V_5), V_3.get_Left(), V_3.get_Right());
                         V_5 = V_5 + 1;
                     }
                 }
             }
             finally
             {
                 if (V_2 != null)
                 {
                     V_2.Dispose();
                 }
             }
             V_6 = 0;
             while (V_6 < V_1.get_Count())
             {
                 V_1.set_Item(V_6, this.TrySimplifyExpression(V_1.get_Item(V_6)));
                 V_6 = V_6 + 1;
             }
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     return;
 }