docs: def visitAdditionOrSubtractionExpression(self, ctx):
          """
          expression: expression (PLUS | MINUS) expression
          """
          is_add = ctx.PLUS() is not None
          arg1 = self.visit(ctx.expression(0))
          arg2 = self.visit(ctx.expression(1))
  
          # first try as decimals
          try:
              _arg1 = conversions.to_decimal(arg1, self._eval_context)
              _arg2 = conversions.to_decimal(arg2, self._eval_context)
              return _arg1 + _arg2 if is_add else _arg1 - _arg2
          except EvaluationError:
              pass
  
          # then as date + something
          try:
              _arg1 = conversions.to_date_or_datetime(arg1, self._eval_context)
  
              if isinstance(arg2, datetime.time):
                  # upgrade our date to datetime
                  _arg1 = conversions.to_datetime(_arg1, self._eval_context)
  
                  # convert time value to a duration
                  _arg2 = datetime.timedelta(hours=arg2.hour, minutes=arg2.minute, seconds=arg2.second, microseconds=arg2.microsecond)
              else:
                  _arg2 = datetime.timedelta(days=conversions.to_integer(arg2, self._eval_context))
  
              return _arg1 + _arg2 if is_add else _arg1 - _arg2
  
          except EvaluationError as ex:
              raise EvaluationError("Expression could not be evaluated as decimal or date arithmetic", ex)