def _rshift_logical(self, shift_amount):
if self.is_empty:<EOL><INDENT>return self<EOL><DEDENT>ssplit = self._ssplit()<EOL>if len(ssplit) == <NUM_LIT:1>:<EOL><INDENT>l = self.lower_bound >> shift_amount<EOL>u = self.upper_bound >> shift_amount<EOL>stride = max(self.stride >> shift_amount, <NUM_LIT:1>)<EOL>return StridedInterval(bits=self.bits,<EOL>lower_bound=l,<EOL>upper_bound=u,<EOL>stride=stride,<EOL>uninitialized=self.uninitialized<EOL>)<EOL><DEDENT>else:<EOL><INDENT>a = ssplit[<NUM_LIT:0>]._rshift_logical(shift_amount)<EOL>b = ssplit[<NUM_LIT:1>]._rshift_logical(shift_amount)<EOL>return a.union(b)<EOL><DEDENT>
Logical shift right with a concrete shift amount

:param int shift_amount: Number of bits to shift right.
:return: The new StridedInterval after right shifting
:rtype: StridedInterval