/// <summary>
/// Visits the children of the <see cref="InvocationExpression" />.
/// </summary>
/// <param name="node">The expression to visit.</param>
/// <returns>The modified expression, if it or any subexpression was modified;
/// otherwise, returns the original expression.</returns>
protected internal virtual Expression VisitInvocation(InvocationExpression node)
{
Expression e = Visit(node.Expression);
Expression[] a = VisitArguments(node);
if (e == node.Expression && a == null)
{
return node;
}
return node.Rewrite(e, a);
}