title: Why would I want to use an ExpressionVisitor?
body: <p>I know from the MSDN's article about <a href="https://msdn.microsoft.com/en-us/library/mt654266.aspx" rel="noreferrer">How to: Modify Expression Trees</a> what an <code>ExpressionVisitor</code> is supposed to do. It should modify expressions. </p>
  
  <p>Their example is however pretty unrealistic so I was wondering why would I need it? Could you name some real-world cases where it would make sense to modify an expression tree? Or, why does it have to be modified at all? From what to what?</p>
  
  <p>It has also many overloads for visiting all kinds of expressions. How do I know when I should use any of them and what should they return? I saw people using <code>VisitParameter</code> and returning <code>base.VisitParameter(node)</code> the other on the other hand were returning <code>Expression.Parameter(..)</code>.</p>