I have following method:
internal virtual Expression VisitMethodCall(MethodCallExpression m)
    {
        var obj = Visit(m.Object);
        IEnumerable<Expression> args = VisitExpressionList(m.Arguments);
        if (obj != m.Object
            || args != m.Arguments)
        {
            return Expression.Call(obj, m.Method, args);
        }
        return m;
    }
The question is: in which cases args != m.Arguments will return true? Does it compare references or every object condition as well?
 
    