class RollbackSqlCommandStep extends RollbackCommandStep {

    public static final String[] COMMAND_NAME = {"rollbackSql"};

    public static final CommandArgumentDefinition<Boolean> OUTPUT_DEFAULT_SCHEMA_ARG;
    public static final CommandArgumentDefinition<Boolean> OUTPUT_DEFAULT_CATALOG_ARG;

    static {
        CommandBuilder builder = new CommandBuilder(COMMAND_NAME);
        OUTPUT_DEFAULT_SCHEMA_ARG = builder.argument("outputDefaultSchema", Boolean.class)
                .description("Control whether names of objects in the default schema are fully qualified or not. If true they are. If false, only objects outside the default schema are fully qualified")
                .defaultValue(true)
                .build();
        OUTPUT_DEFAULT_CATALOG_ARG = builder.argument("outputDefaultCatalog", Boolean.class)
                .description("Control whether names of objects in the default catalog are fully qualified or not. If true they are. If false, only objects outside the default catalog are fully qualified")
                .defaultValue(true)
                .build();

        builder.addArgument(TAG_ARG).build();
        builder.addArgument(TAG_VERSION_ARG).setValueHandler(TagVersionEnum::handleTagVersionInput).build();
        builder.addArgument(AbstractRollbackCommandStep.ROLLBACK_SCRIPT_ARG).build();
    }

    @Override
    public List<Class<?>> requiredDependencies() {
        List<Class<?>> dependencies = new ArrayList<>();
        dependencies.add(Writer.class);
        dependencies.addAll(super.requiredDependencies());
        return dependencies;
    }

    @Override
    public void run(CommandResultsBuilder resultsBuilder) throws Exception {
        CommandScope commandScope = resultsBuilder.getCommandScope();
        String tagToRollBackTo = commandScope.getArgumentValue(RollbackCommandStep.TAG_ARG);
        String changeLogFile = commandScope.getArgumentValue(DatabaseChangelogCommandStep.CHANGELOG_FILE_ARG);
        Database database = (Database) commandScope.getDependency(Database.class);
        LoggingExecutorTextUtil.outputHeader("Rollback to '" + tagToRollBackTo + "' Script", database, changeLogFile);
        super.run(resultsBuilder);
    }

    @Override
    public String[][] defineCommandNames() {
        return new String[][] { COMMAND_NAME };
    }


    @Override
    public void adjustCommandDefinition(CommandDefinition commandDefinition) {<FILL_FUNCTION_BODY>}
}

        commandDefinition.setShortDescription("Generate the SQL to rollback changes made to the database based on the specific tag");
    
<methods>public non-sealed void <init>() ,public void adjustCommandDefinition(liquibase.command.CommandDefinition) ,public java.lang.String[][] defineCommandNames() ,public void run(liquibase.command.CommandResultsBuilder) throws java.lang.Exception<variables>public static final java.lang.String[] COMMAND_NAME,public static final non-sealed CommandArgumentDefinition<java.lang.String> TAG_ARG,public static final non-sealed CommandArgumentDefinition<java.lang.String> TAG_VERSION_ARG