def _intersection_with_si(self, si):
new_si_set = set()<EOL>for si_ in self._si_set:<EOL><INDENT>r = si_.intersection(si)<EOL>new_si_set.add(r)<EOL><DEDENT>if len(new_si_set):<EOL><INDENT>ret = DiscreteStridedIntervalSet(bits=self.bits, si_set=new_si_set)<EOL>if ret.should_collapse(): return ret.collapse()<EOL>else: return ret<EOL><DEDENT>else:<EOL><INDENT>return StridedInterval.empty(self.bits)<EOL><DEDENT>
Intersection with another :class:`StridedInterval`.

:param si: The other operand
:return: