public function peek(callable $valueConsumer, callable $keyConsumer = null): self
    {
        return new self(
                new Peek($this->getIterator(), $valueConsumer, $keyConsumer),
                $this->type
        );
    }