class LiquibaseFutureRollbackSQL extends LiquibaseRollback {

    /**
     * The file to output the Rollback SQL script to, if it exists it will be
     * overwritten.
     *
     * @parameter property="liquibase.outputFile"
     *            default-value=
     *            "${project.build.directory}/liquibase/migrate.sql"
     */
    @PropertyElement
    protected File outputFile;

    /** The writer for writing the SQL. */
    private Writer outputWriter;

    @Override
    protected Liquibase createLiquibase(Database db)
            throws MojoExecutionException {<FILL_FUNCTION_BODY>}

    @Override
    protected void printSettings(String indent) {
        super.printSettings(indent);
        getLog().info(
                indent + "outputFile: " + outputFile);
    }

    @Override
    protected void cleanup(Database db) {
        super.cleanup(db);
        if (outputWriter != null) {
            try {
                outputWriter.close();
            } catch (IOException e) {
                getLog().error(e);
            }
        }
    }

    @Override
    protected void performLiquibaseTask(Liquibase liquibase) throws LiquibaseException {
        liquibase.futureRollbackSQL(new Contexts(contexts), new LabelExpression(getLabelFilter()), outputWriter);
    }

    @Override
    protected void checkRequiredRollbackParameters() throws MojoFailureException {
        //nothing to check with futureRollbackSQL
    }
}

        Liquibase liquibase = super.createLiquibase(db);

        // Setup the output file writer
        try {
            if (!outputFile.exists()) {
                // Ensure the parent directories exist
                outputFile.getParentFile().mkdirs();
                // Create the actual file
                if (!outputFile.createNewFile()) {
                    throw new MojoExecutionException(
                            "Cannot create the output file; "
                                    + outputFile.getAbsolutePath());
                }
            }
            outputWriter = getOutputWriter(outputFile);
        } catch (IOException e) {
            getLog().error(e);
            throw new MojoExecutionException(
                    "Failed to create SQL output writer", e);
        }
        getLog().info(
                "Output File: "
                        + outputFile.getAbsolutePath());
        return liquibase;
    
<methods>public non-sealed void <init>() <variables>protected int rollbackCount,protected java.lang.String rollbackDate,protected java.lang.String rollbackScript,protected java.lang.String rollbackTag,protected org.liquibase.maven.plugins.LiquibaseRollback.RollbackType type