code: def rshift_arithmetic(self, shift_amount):
          
  
          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
docs: Arithmetic shift right.
  
          :param StridedInterval shift_amount: The amount of shifting
          :return: The shifted StridedInterval
          :rtype: StridedInterval