MethodCallExpression ReplaceQueryableMethod (MethodCallExpression old)
{
Expression target = null;
if (old.Object != null)
target = Visit (old.Object);
var method = ReplaceQueryableMethod (old.Method);
var parameters = method.GetParameters ();
var arguments = new Expression [old.Arguments.Count];
for (int i = 0; i < arguments.Length; i++) {
arguments [i] = UnquoteIfNeeded (
Visit (old.Arguments [i]),
parameters [i].ParameterType);
}
return new MethodCallExpression (target, method, arguments.ToReadOnlyCollection ());
}