protected function showMigrations(Migrator $migrator)
    {
        $this->line('<comment>Migrations</comment>');

        $groups = $migrator->migrationGroups();

        if (count($groups) > 0) {
            // get [$group => $items]
            $installed_migrations = $migrator->installedMigrationsByDesc();

            foreach ($groups as $group) {
                // [$items] to [$installed_versions]
                $installed_versions = $installed_migrations->get($group, collect())->pluck('version');

                // [$versions] to $latest_version
                $latest_installed_version = $installed_versions->get(0, Migrator::VERSION_NULL);

                // enum definition
                foreach ($migrator->migrationVersionsByDesc($group) as $version => $class) {
                    $installed = $installed_versions->contains($version);

                    if ($version === $latest_installed_version) {
                        $mark = '*';
                    } else {
                        $mark = $installed ? '-' : ' ';
                    }

                    if (!class_exists($class)) {
                        $this->line("{$mark} <info>[{$group}/{$version}]</info> <error>{$class}</error>");
                        $this->line('');
                        $this->error('Error: Class not found.');
                        continue;
                    }

                    $migration = new $class();

                    if (!$migration instanceof Migration) {
                        $this->line("{$mark} <info>[{$group}/{$version}]</info> <error>{$class}</error>");
                        $this->line('');
                        $this->error('Error: Must inherit from class "Illuminate\Database\Migrations\Migration".');
                        continue;
                    }

                    $this->line("{$mark} <info>[{$group}/{$version}]</info> {$class}");
                }

                $this->line('');
            }
        } else {
            $this->info('Nothing.');
            $this->line('');
        }
    }