protected override Expression VisitMemberInit(MemberInitExpression node)
        {
            m_syntax_context.CallResult.ResultType = node.NewExpression.Type;

            if (node.NewExpression.Arguments.Count > 0)
            {
                return(VisitNew(node.NewExpression));
            }

            Visit(node.Bindings.OfType <MemberAssignment>().First().Expression);

            foreach (MemberAssignment x in node.Bindings.Skip(1))
            {
                m_query_builder.AppendExpressionSeparator();
                Visit(x.Expression);
            }

            return(node);
        }