clone method

  1. @override
FlatMap<S, T> clone()
override

An iterator which is a "clone" of the original iterator. Iterating through the original or the clone will not affect the other. Do not modify the original collection the original Iterable is based on while iterating. See Clone for more information.

Implementation

@override
FlatMap<S, T> clone() {
  final temp = Clone._trackable(_iterator);
  _iterator = temp;
  if (_currentExpansion != null) {
    final newCurrentExpansion = Clone._trackable(_currentExpansion!);
    _currentExpansion = newCurrentExpansion;
    return FlatMap(Clone._clone(temp).iterator, _f)
      .._currentExpansion = Clone._clone(newCurrentExpansion);
  }
  return FlatMap(Clone._clone(temp), _f);
}