def _intersection_with_dsis(self, dsis):
new_si_set = set()<EOL>for si in dsis._si_set:<EOL><INDENT>r = self._intersection_with_si(si)<EOL>if isinstance(r, StridedInterval):<EOL><INDENT>if not r.is_empty:<EOL><INDENT>new_si_set.add(r)<EOL><DEDENT><DEDENT>else: <EOL><INDENT>new_si_set |= r._si_set<EOL><DEDENT><DEDENT>if len(new_si_set):<EOL><INDENT>ret = DiscreteStridedIntervalSet(bits=self.bits, si_set=new_si_set)<EOL>return ret.normalize()<EOL><DEDENT>else:<EOL><INDENT>return StridedInterval.empty(self.bits)<EOL><DEDENT>
Intersection with another :class:`DiscreteStridedIntervalSet`.

:param dsis:    The other operand.
:return: