public function getMigrationScripts(int $from, int $to, array $skipScripts = []): array
    {
        $migrationScripts = [];
        $provider = MigrationsStateProvider::getProvider();
        foreach ($this->migrationScripts as $scriptClass) {
            $migrationScript = new $scriptClass();
            if (!is_a($migrationScript, MigrationScriptInterface::class)) {
                throw new \Error('Non-MigrationScriptInterface object provided to MigrationManager: `' . $migrationScript.'`');
            }
            if (
                $migrationScript->version() < $from
                || $migrationScript->version() > $to
                || array_search($scriptClass, $skipScripts) !== false
            ) {
                continue;
            }
            if ($provider->isScriptComplete($scriptClass)) {
                continue;
            }
            $migrationScripts[] = $migrationScript;
        }
        usort($migrationScripts, function (MigrationScriptInterface $a, MigrationScriptInterface $b) {
            return $a->version() <=> $b->version();
        });

        return $migrationScripts;
    }