public function partition(callable $predicate): ArrayCollection
    {
        $items1 = [];
        $items2 = [];

        foreach ($this->items as $key => $value) {
            if ($predicate($value, $key)) {
                $items1[$key] = $value;
            } else {
                $items2[$key] = $value;
            }
        }

        return new static([new static($items1), new static($items2)]);
    }