<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _arithmetic_helper( a: "BitVecFunc", b: Union[BitVec, int], operation: Callable ) -> "BitVecFunc": """ 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 """

    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
    )