'Return the intersection of two recordsets.
Note that first occurrence order is preserved.'

def __and__(self, other):

    if ((not isinstance(other, BaseModel)) or (self._name != other._name)):
        raise TypeError(('Mixing    apples    and    oranges:    %s    &    %s' % (self, other)))
    other_ids = set(other._ids)
    return self.browse(OrderedSet((id for id in self._ids if (id in other_ids))))
