protected abstract T Visit(BlockExpressionDto expression);
protected override Expression Visit(BlockExpressionDto expression) { return(Expression.Block(expression.Type, ListSelect(expression.Variables, a => Visit((ExpressionDto)a) as ParameterExpression), ListSelect(expression.Expressions, Visit))); }