# File lib/brakeman/processors/lib/call_conversion_helper.rb, line 45
    def math_op op, lhs, rhs, original_exp = nil
      if number? lhs and number? rhs
        if op == :/ and rhs.value == 0 and not lhs.value.is_a? Float
          # Avoid division by zero
          return original_exp
        else
          value = lhs.value.send(op, rhs.value)
          Sexp.new(:lit, value).line(lhs.line)
        end
      elsif call? lhs and lhs.method == :+ and number? lhs.first_arg and number? rhs
        # (x + 1) + 2 -> (x + 3)
        lhs.first_arg = Sexp.new(:lit, lhs.first_arg.value + rhs.value).line(lhs.first_arg.line)
        lhs
      elsif safe_literal? lhs or safe_literal? rhs
        safe_literal(lhs.line)
      else
        original_exp
      end
    end