public final function updateSourceIterator(\Traversable $sourceIterator) { $sourceIterator = IteratorScheme::adapter($sourceIterator); $clone = clone $this; $clone->iterator = $sourceIterator; $clone->rewind(); return $clone; }