docs: def symmetric_difference_update(self, other):
          r"""Update the multiset to contain only elements in either this multiset or the other but not both.
  
          >>> ms = Multiset('aab')
          >>> ms.symmetric_difference_update('abc')
          >>> sorted(ms)
          ['a', 'c']
  
          You can also use the ``^=`` operator for the same effect. However, the operator version
          will only accept a set as other operator, not any iterable, to avoid errors.
  
          >>> ms = Multiset('aabbbc')
          >>> ms ^= Multiset('abd')
          >>> sorted(ms)
          ['a', 'b', 'b', 'c', 'd']
  
          For a variant of the operation which does not modify the multiset, but returns a new
          multiset instead see :meth:`symmetric_difference`.
  
          Args:
              other: The other set to take the symmetric difference with. Can also be any :class:`~typing.Iterable`\[~T]
                  or :class:`~typing.Mapping`\[~T, :class:`int`] which are then converted to :class:`Multiset`\[~T].
          """
          other = self._as_multiset(other)
          elements = set(self.distinct_elements()) | set(other.distinct_elements())
          for element in elements:
              multiplicity = self[element]
              other_count = other[element]
              self[element] = (multiplicity - other_count if multiplicity > other_count else other_count - multiplicity)