private void ManageIsEventOperations(HashSet <Statement> statementsToRemove) { V_0 = this.isEventIfStatements.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_2 = V_1.get_Key(); V_3 = V_1.get_Value(); if (V_2.get_Condition().get_CodeNodeType() != 23 || (V_2.get_Condition() as UnaryExpression).get_Operator() != 11 || (V_2.get_Condition() as UnaryExpression).get_Operand() != V_3) { if (V_2.get_Condition().get_CodeNodeType() != 23 || (V_2.get_Condition() as UnaryExpression).get_Operator() != UnaryOperator.Negate || (V_2.get_Condition() as UnaryExpression).get_Operand() != V_3) { throw new Exception("Invalid invocation of IsEvent operation."); } this.ReplaceIfWith(V_2, V_2.get_Else()); } else { V_4 = V_2.get_Then().get_Statements().get_Item(V_2.get_Then().get_Statements().get_Count() - 1); if (V_4.get_CodeNodeType() == 5 && ((ExpressionStatement)V_4).get_Expression().get_CodeNodeType() == 57) { V_5 = (BlockStatement)V_2.get_Parent(); V_6 = V_5.get_Statements().IndexOf(V_2) + 1; while (V_6 < V_5.get_Statements().get_Count()) { dummyVar0 = statementsToRemove.Add(V_5.get_Statements().get_Item(V_6)); V_6 = V_6 + 1; } } this.ReplaceIfWith(V_2, V_2.get_Then()); } V_7 = V_2.get_Then().get_Statements().GetEnumerator(); try { while (V_7.MoveNext()) { V_8 = V_7.get_Current(); dummyVar1 = statementsToRemove.Remove(V_8); } } finally { if (V_7 != null) { V_7.Dispose(); } } if (V_2.get_Else() == null) { continue; } V_7 = V_2.get_Else().get_Statements().GetEnumerator(); try { while (V_7.MoveNext()) { V_9 = V_7.get_Current(); dummyVar2 = statementsToRemove.Remove(V_9); } } finally { if (V_7 != null) { V_7.Dispose(); } } } } finally { ((IDisposable)V_0).Dispose(); } return; }
protected override bool TryMatchInternal(StatementCollection statements, int startIndex, out Statement result, out int replacedStatementsCount) { result = null; replacedStatementsCount = 0; if (!this.TryGetObjectCreation(statements, startIndex, out V_0, out V_1)) { return(false); } if (V_0.get_Initializer() != null && V_0.get_Initializer().get_InitializerType() != InitializerType.CollectionInitializer) { return(false); } if (!this.ImplementsInterface(V_0.get_Type(), "System.Collections.IEnumerable")) { return(false); } V_2 = new ExpressionCollection(); V_3 = startIndex + 1; while (V_3 < statements.get_Count() && this.TryGetNextExpression(statements.get_Item(V_3), out V_4) && V_4.get_CodeNodeType() == 19) { V_5 = V_4 as MethodInvocationExpression; V_6 = V_5.get_MethodExpression().get_MethodDefinition(); if (!this.CompareTargets(V_1, V_5.get_MethodExpression().get_Target()) || String.op_Inequality(V_6.get_Name(), "Add") || V_5.get_Arguments().get_Count() == 0) { break; } if (V_5.get_Arguments().get_Count() != 1) { stackVariable88 = V_5.get_Arguments(); stackVariable89 = CollectionInitializationPattern.u003cu003ec.u003cu003e9__1_0; if (stackVariable89 == null) { dummyVar0 = stackVariable89; stackVariable89 = new Func <Expression, Expression>(CollectionInitializationPattern.u003cu003ec.u003cu003e9.u003cTryMatchInternalu003eb__1_0); CollectionInitializationPattern.u003cu003ec.u003cu003e9__1_0 = stackVariable89; } V_7 = new BlockExpression(new ExpressionCollection(stackVariable88.Select <Expression, Expression>(stackVariable89)), null); V_2.Add(V_7); } else { V_2.Add(V_5.get_Arguments().get_Item(0).Clone()); } V_3 = V_3 + 1; } if (V_2.get_Count() == 0) { return(false); } if (V_0.get_Initializer() != null) { V_9 = V_2.GetEnumerator(); try { while (V_9.MoveNext()) { V_10 = V_9.get_Current(); V_0.get_Initializer().get_Expressions().Add(V_10); } } finally { if (V_9 != null) { V_9.Dispose(); } } } else { V_8 = new InitializerExpression(V_2, 0); V_8.set_IsMultiLine(true); V_0.set_Initializer(V_8); } result = statements.get_Item(startIndex); replacedStatementsCount = V_2.get_Count() + 1; return(true); }