'This function should only be used internally
See Set._intersect for docstring'

def _intersect(self, other):

    if isinstance(other, self.__class__):
        return self.__class__(*(self._elements & other._elements))
    return self.__class__(*[el for el in self if (el in other)])
