public override SyntaxNode VisitBlock(BlockSyntax node)
        {
            var value = base.VisitBlock(node);
            if (_isExpressionTransformer && _transform && node.Parent is MethodDeclarationSyntax)
            {
                _isExpressionTransformer = false;
                _transform = false;
                var newStatements = new[] { string.Concat("value = new ", _expressionTransformerNamespaceDot, _edmxName, @"ExpressionTransformer().TransformExpression(expression, contextName);"), @"
            if (value != expression)
                return value;" };

                var statements = node.ChildNodes().OfType<StatementSyntax>().ToList();
                return node.DefineStatements(statements.Take(statements.Count - 1).Union(newStatements.Select(s => Syntax.ParseStatement(s))).Union(new[] { statements[statements.Count - 1] }));
            }
            return value;
        }
        public override SyntaxNode VisitBlock(BlockSyntax node)
        {
            var value = base.VisitBlock(node);

            if (_isExpressionTransformer && _transform && node.Parent is MethodDeclarationSyntax)
            {
                _isExpressionTransformer = false;
                _transform = false;
                var newStatements = new[] { string.Concat("value = new ", _expressionTransformerNamespaceDot, _edmxName, @"ExpressionTransformer().TransformExpression(expression, contextName);"), @"
            if (value != expression)
                return value;" };

                var statements = node.ChildNodes().OfType <StatementSyntax>().ToList();
                return(node.DefineStatements(statements.Take(statements.Count - 1).Union(newStatements.Select(s => Syntax.ParseStatement(s))).Union(new[] { statements[statements.Count - 1] })));
            }
            return(value);
        }