protected function getRanges(string $selector): Collection
    {
        return Factory::create(explode(';', $selector))->map(
            function ($range) {
                $separator = $this->dotDotSeparator($range);
                if (false != $separator) {
                    return Factory::create([(int) substr($range, 0, $separator), (int) substr($range, $separator + 2)]);
                }
                $separator = $this->columnSeparator($range);
                if (false != $separator) {
                    return Factory::create([(int) substr($range, 0, $separator), (int) substr($range, $separator + 1)]);
                }
                $separator = $this->dashSeparator($range);
                if (false != $separator) {
                    return Factory::create([(int) substr($range, 0, $separator), (int) substr($range, $separator + 1)]);
                }
                $separator = $this->commaSeparator($range);
                if (false != $separator) {
                    return Factory::create(
                        [
                            (int) substr($range, 0, $separator),
                            (int) substr($range, 0, $separator) + (int) (substr($range, $separator + 1) - 1),
                        ]
                    );
                }

                // just a number here
                return Factory::create([(int) $range, (int) $range]);
            }
        );
    }