protected internal override Expression VisitMListProjection(MListProjectionExpression mlp)
    {
        var oldInEntity = inMList;

        inMList = mlp.Type;
        var result = VisitProjection(mlp.Projection);

        inMList = oldInEntity;
        return(result);
    }
    protected internal virtual Expression VisitMListProjection(MListProjectionExpression mlp)
    {
        var proj = (ProjectionExpression)Visit(mlp.Projection);

        if (proj != mlp.Projection)
        {
            return(new MListProjectionExpression(mlp.Type, proj));
        }
        return(mlp);
    }