code: def _clone(self, **kwargs):
          
          params = copy.deepcopy(self._params)
          if self._iexact:
              params.update(iexact=self._iexact)
          params.update(**kwargs)
          clone = self.__class__(**params)
          return clone
docs: Create a clone of this collection. The only param in the
          initial collection is the filter context. Each chainable
          filter is added to the clone and returned to preserve
          previous iterators and their returned elements.
          
          :return: :class:`.ElementCollection`