protected override Expression VisitMethodCallExpression (MethodCallExpression expression)
{
ArgumentUtility.CheckNotNull ("expression", expression);
var transformer = _methodCallTransformerProvider.GetTransformer(expression);
if (transformer != null)
{
var transformedExpression = transformer.Transform (expression);
return VisitExpression (transformedExpression);
}
var namedInstance = expression.Object != null ? NamedExpression.CreateFromMemberName ("Object", VisitExpression (expression.Object)) : null;
var namedArguments = expression.Arguments.Select ((a, i) => (Expression) NamedExpression.CreateFromMemberName ("Arg" + i, VisitExpression (a)));
return Expression.Call (namedInstance, expression.Method, namedArguments);
}