The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.
This can be overridden to visit or rewrite specific extension nodes.
If it is not overridden, this method will call Expression.VisitChildren(ExpressionVisitor), which gives the node a chance to walk its children. By default, Expression.VisitChildren(ExpressionVisitor) will try to reduce the node.