protected internal override Expression VisitMethodCall(MethodCallExpression node)
{
int start = 0;
Expression ob = node.Object;
if (node.Method.GetCustomAttribute(typeof(ExtensionAttribute)) != null)
{
start = 1;
ob = node.GetArgument(0);
}
if (ob != null)
{
Visit(ob);
Out('.');
}
Out(node.Method.Name);
Out('(');
for (int i = start, n = node.ArgumentCount; i < n; i++)
{
if (i > start)
{
Out(", ");
}
Visit(node.GetArgument(i));
}
Out(')');
return(node);
}