class LiquibaseUpdate extends AbstractLiquibaseUpdateMojo {

    /**
     * Whether or not to perform a drop on the database before executing the change.
     *
     * @parameter property="liquibase.dropFirst" default-value="false"
     */
    @PropertyElement
    protected boolean dropFirst;

    @Override
    protected void doUpdate(Liquibase liquibase) throws LiquibaseException {<FILL_FUNCTION_BODY>}

    @Override
    protected void printSettings(String indent) {
        super.printSettings(indent);
        getLog().info(indent + "drop first? " + dropFirst);
    }
}

        if (dropFirst) {
            liquibase.dropAll();
        }
        try {
            Scope.child("rollbackOnError", rollbackOnError, () -> {
                if (changesToApply > 0) {
                    liquibase.update(changesToApply, new Contexts(contexts), new LabelExpression(getLabelFilter()));
                } else {
                    liquibase.update(toTag, new Contexts(contexts), new LabelExpression(getLabelFilter()));
                }
            });
        } catch (Exception exception) {
            if (exception instanceof LiquibaseException) {
                handleUpdateException((LiquibaseException) exception); //need this until update-to-tag and update-count are refactored
                throw (LiquibaseException) exception;
            } else {
                throw new LiquibaseException(exception);
            }
        }
    
<methods>public non-sealed void <init>() <variables>protected int changesToApply,protected boolean rollbackOnError,protected liquibase.UpdateSummaryEnum showSummary,protected liquibase.UpdateSummaryOutputEnum showSummaryOutput,protected java.lang.String toTag