public function sortBy(callable $callback, $options = SORT_REGULAR, $descending = false): ArrayCollection
    {
        $items = [];

        foreach ($this->items as $key => $value) {
            $items[$key] = $callback($value, $key);
        }

        if ($descending) {
            arsort($items, $options);
        } else {
            asort($items, $options);
        }

        foreach (array_keys($items) as $key) {
            $items[$key] = $this->items[$key];
        }

        return new static($items);
    }