class DiffToChangeLogCommand extends DiffCommand {

    private String changeLogFile;
    private PrintStream outputStream;
    private DiffOutputControl diffOutputControl;

    @Override
    public String getName() {
        return "diffChangeLog";
    }

    public String getChangeLogFile() {
        return changeLogFile;
    }

    public DiffToChangeLogCommand setChangeLogFile(String changeLogFile) {
        this.changeLogFile = changeLogFile;
        return this;
    }

    @Override
    public PrintStream getOutputStream() {
        return outputStream;
    }

    @Override
    public DiffToChangeLogCommand setOutputStream(PrintStream outputStream) {
        this.outputStream = outputStream;
        return this;
    }

    public DiffOutputControl getDiffOutputControl() {
        return diffOutputControl;
    }

    public DiffToChangeLogCommand setDiffOutputControl(DiffOutputControl diffOutputControl) {
        this.diffOutputControl = diffOutputControl;
        return this;
    }

    @Override
    public CommandResult run() throws Exception {<FILL_FUNCTION_BODY>}
}

        InternalSnapshotCommandStep.logUnsupportedDatabase(this.getReferenceDatabase(), this.getClass());

        final CommandScope commandScope = new CommandScope("diffChangelog");
        commandScope.addArgumentValue(ReferenceDbUrlConnectionCommandStep.REFERENCE_DATABASE_ARG, getReferenceDatabase());
        commandScope.addArgumentValue(DbUrlConnectionArgumentsCommandStep.DATABASE_ARG, getTargetDatabase());
        commandScope.addArgumentValue(PreCompareCommandStep.SNAPSHOT_TYPES_ARG, getSnapshotTypes());
        commandScope.addArgumentValue(DiffCommandStep.SNAPSHOT_LISTENER_ARG, getSnapshotListener());
        commandScope.addArgumentValue(DiffCommandStep.REFERENCE_SNAPSHOT_CONTROL_ARG, getReferenceSnapshotControl());
        commandScope.addArgumentValue(DiffCommandStep.TARGET_SNAPSHOT_CONTROL_ARG, getTargetSnapshotControl());
        commandScope.addArgumentValue(PreCompareCommandStep.OBJECT_CHANGE_FILTER_ARG, getObjectChangeFilter());
        commandScope.addArgumentValue(PreCompareCommandStep.COMPARE_CONTROL_ARG, getCompareControl());

        commandScope.addArgumentValue(DiffChangelogCommandStep.CHANGELOG_FILE_ARG, getChangeLogFile());
        commandScope.addArgumentValue(DiffOutputControlCommandStep.INCLUDE_SCHEMA_ARG, getDiffOutputControl().getIncludeSchema());
        commandScope.addArgumentValue(DiffOutputControlCommandStep.INCLUDE_CATALOG_ARG, getDiffOutputControl().getIncludeCatalog());
        commandScope.addArgumentValue(DiffOutputControlCommandStep.INCLUDE_TABLESPACE_ARG, getDiffOutputControl().getIncludeTablespace());

        commandScope.setOutput(getOutputStream());
        commandScope.execute();

        return new CommandResult("OK");

    
<methods>public non-sealed void <init>() ,public liquibase.diff.compare.CompareControl getCompareControl() ,public java.lang.String getName() ,public liquibase.diff.output.ObjectChangeFilter getObjectChangeFilter() ,public java.io.PrintStream getOutputStream() ,public liquibase.database.Database getReferenceDatabase() ,public liquibase.snapshot.SnapshotControl getReferenceSnapshotControl() ,public liquibase.snapshot.SnapshotListener getSnapshotListener() ,public Class<? extends liquibase.structure.DatabaseObject>[] getSnapshotTypes() ,public liquibase.database.Database getTargetDatabase() ,public liquibase.snapshot.SnapshotControl getTargetSnapshotControl() ,public liquibase.command.CommandResult run() throws java.lang.Exception,public liquibase.command.core.DiffCommand setCompareControl(liquibase.diff.compare.CompareControl) ,public liquibase.command.core.DiffCommand setObjectChangeFilter(liquibase.diff.output.ObjectChangeFilter) ,public liquibase.command.core.DiffCommand setOutputStream(java.io.PrintStream) ,public liquibase.command.core.DiffCommand setReferenceDatabase(liquibase.database.Database) ,public liquibase.command.core.DiffCommand setReferenceSnapshotControl(liquibase.snapshot.SnapshotControl) ,public liquibase.command.core.DiffCommand setSnapshotListener(liquibase.snapshot.SnapshotListener) ,public transient liquibase.command.core.DiffCommand setSnapshotTypes(java.lang.String[]) ,public transient liquibase.command.core.DiffCommand setSnapshotTypes(Class<? extends liquibase.structure.DatabaseObject>[]) ,public liquibase.command.core.DiffCommand setTargetDatabase(liquibase.database.Database) ,public liquibase.command.core.DiffCommand setTargetSnapshotControl(liquibase.snapshot.SnapshotControl) ,public liquibase.command.CommandValidationErrors validate() <variables>private liquibase.diff.compare.CompareControl compareControl,private liquibase.diff.output.ObjectChangeFilter objectChangeFilter,private java.io.PrintStream outputStream,private liquibase.database.Database referenceDatabase,private liquibase.snapshot.SnapshotControl referenceSnapshotControl,private liquibase.snapshot.SnapshotListener snapshotListener,private Class<? extends liquibase.structure.DatabaseObject>[] snapshotTypes,private liquibase.database.Database targetDatabase,private liquibase.snapshot.SnapshotControl targetSnapshotControl