protected abstract T Visit(LambdaExpressionDto expression);
protected override Expression Visit(LambdaExpressionDto expression) { return(Expression.Lambda(Visit(expression.Body), expression.TailCall, ListSelect(expression.Parameters, a => Visit((ExpressionDto)a) as ParameterExpression))); }