public override ICodeNode VisitCatchClause(CatchClause node) { node.set_Body((BlockStatement)this.Visit(node.get_Body())); if (node.get_Filter() == null || node.get_Filter() as BlockStatement == null) { return(node); } this.currentCatchClause = node; node.set_Filter((Statement)this.Visit(node.get_Filter())); this.currentCatchClause = null; stackVariable27 = CatchClausesFilterPattern.TryMatch(node.get_Filter() as BlockStatement, out V_0, out V_1); if (!stackVariable27) { if (V_0 == null || String.op_Equality(V_0.get_ExpressionType().get_FullName(), "System.Object") || !CatchClausesFilterPattern.TryMatchMethodStructure(node.get_Filter() as BlockStatement)) { throw new NotSupportedException("Unsupported structure of filter clause."); } this.CreateMethod(node, V_0, out V_1); } dummyVar0 = this.context.get_MethodContext().get_VariablesToNotDeclare().Add(V_0.get_Variable()); if (!stackVariable27) { node.set_Variable(V_0.CloneExpressionOnly() as VariableDeclarationExpression); } else { node.set_Variable(V_0); } node.set_Type(V_0.get_ExpressionType()); node.set_Filter(new ExpressionStatement(V_1)); return(node); }