public function random(int $amount = 1)
    {
        $count = $this->count();
        if ($amount > $count) {
            $message = sprintf('Requested %d items with %d items present', $amount, $count);
            throw new DomainException($message);
        }

        $keys = array_rand($this->items, $amount);

        if ($amount === 1) {
            return $this->items[$keys];
        }

        return new static(array_intersect_key($this->items, array_flip($keys)));
    }