<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rshift_arithmetic(self, shift_amount):
 """ Arithmetic shift right. :param StridedInterval shift_amount: The amount of shifting :return: The shifted StridedInterval :rtype: StridedInterval """


        lower, upper = self._pre_shift(shift_amount)

        # Shift the lower_bound and upper_bound by all possible amounts, and union all possible results

        ret = None

        for amount in xrange(lower, upper + 1):
            si_ = self._rshift_arithmetic(amount)

            ret = si_ if ret is None else ret.union(si_)

        ret.normalize()
        ret.uninitialized = self.uninitialized
        return ret