class_docstr: A persistent bag/multiset type.
  
  Requires elements to be hashable, and allows duplicates, but has no
  ordering. Bags are hashable.
  
  Do not instantiate directly, instead use the factory functions :py:func:`b`
  or :py:func:`pbag` to create an instance.
  
  Some examples:
  
  >>> s = pbag([1, 2, 3, 1])
  >>> s2 = s.add(4)
  >>> s3 = s2.remove(1)
  >>> s
  pbag([1, 1, 2, 3])
  >>> s2
  pbag([1, 1, 2, 3, 4])
  >>> s3
  pbag([1, 2, 3, 4])
docstr: Intersection: Only keep elements that are present in both PBags.
  
  >>> pbag([1, 2, 2, 2]) & pbag([2, 3, 3])
  pbag([2])
docstr_tok: ["Intersection",":","Only","keep","elements","that","are","present","in","both","PBags",".",">",">",">","pbag","(","[","1",",","2",",","2",",","2","]",")","&","pbag","(","[","2",",","3",",","3","]",")","pbag","(","[","2","]",")"]
code: def __and__(self, other):
      """
      Intersection: Only keep elements that are present in both PBags.
  
      >>> pbag([1, 2, 2, 2]) & pbag([2, 3, 3])
      pbag([2])
      """
      if not isinstance(other, PBag):
          return NotImplemented
      result = pmap().evolver()
      for elem, count in self._counts.iteritems():
          newcount = min(count, other.count(elem))
          if newcount > 0:
              result[elem] = newcount
      return PBag(result.persistent())
  
imports: from collections.abc import Container, Iterable, Sized, Hashable
  from functools import reduce
  from typing import Generic, TypeVar
  from pyrsistent._pmap import pmap
label_desc: Use image node_id 15 for calling the PBag obj's underlying member method code with example usage: obj.__and__(other) and returns: PBag, NotImplemented