public function takeRandom($amount, $in_place = false)
    {
        if (!is_int($amount)) {
            throw new \InvalidArgumentException('ItemList::takeRandom() expects an integer argument.');
        }

        $taken = array();
        while ($amount > 0) {
            $taken[] = $this->list[array_rand($this->list)];
            $amount--;
        }

        if ($in_place) {
            $this->list = $taken;

            return $this;
        }

        return new ItemList($taken);
    }