public function takeFirst(int $count)
    {
        return $this->wrap(function (Iterator $data) use ($count) {
            $first = true;

            while ($count-- && $data->valid()) {
                if (!$first) {
                    $data->next();
                }

                yield $data->key() => $data->current();
                $first = false;
            }
        });
    }