protected function doAgain(Migrator $migrator, $group)
    {
        // retreive installed versions
        $installed_migrations = $migrator->installedLatestMigrations();

        $installed_version = data_get($installed_migrations, $group.'.version', Migrator::VERSION_NULL);

        $definition_versions = $migrator->migrationVersionsByDesc($group);

        if (!$this->checkInstalledVersion($installed_version, $definition_versions)) {
            return;
        }

        // remove migration log
        $definition_latest_version = array_get(array_keys($definition_versions), 0, Migrator::VERSION_NULL);
        if ($migrator->compareMigrationVersion($installed_version, $definition_latest_version) >= 0) {
            $this->line("<info>Remove log [$group/$installed_version]</info>");
            $migrator->removeMigrationLog($group, $installed_version);
        }

        // downgrade & upgrade
        foreach ($definition_versions as $version => $class) {
            $this->infoDowngrade($group, $version, $class);

            $migrator->doDowngrade($group, $version, $class);

            $this->infoUpgrade($group, $version, $class);

            $migrator->doUpgrade($group, $version, $class);

            break;
        }
    }