code: def _arithmetic_helper(
      a: "BitVecFunc", b: Union[BitVec, int], operation: Callable
  ) -> "BitVecFunc":
      
      if isinstance(b, int):
          b = BitVec(z3.BitVecVal(b, a.size()))
  
      raw = operation(a.raw, b.raw)
      union = a.annotations + b.annotations
  
      if isinstance(b, BitVecFunc):
          # TODO: Find better value to set input and name to in this case?
          return BitVecFunc(raw=raw, func_name=None, input_=None, annotations=union)
  
      return BitVecFunc(
          raw=raw, func_name=a.func_name, input_=a.input_, annotations=union
      )
docs: Helper function for arithmetic operations on BitVecFuncs.
  
      :param a: The BitVecFunc to perform the operation on.
      :param b: A BitVec or int to perform the operation on.
      :param operation: The arithmetic operation to perform.
      :return: The resulting BitVecFunc