@Override
  protected void init() throws Exception {
    super.init();

    BackupWriter backupWriter = new BackupWriter();
    for (BackupWriterListener listener : getListeners()) {
      backupWriter.addListener(listener);
    }
    backupWriter.setFormat(getFormat());
    backupWriter.setFormatAttributes(getFormatAttributes());
    backupWriter.setFormatFactory(createFormatFactory());
    backupWriter.setInspectionManager(createInspectionManager());
    backupWriter.setMetaDataSpec(getMetaDataSpec());
    backupWriter.setMigrationModes(getMigrationModes());
    backupWriter.setQueryLimit(getQueryLimit());
    backupWriter.setQuerySpecs(getQuerySpecs());
    backupWriter.setSourceSpec(getSourceSpec());
    backupWriter.setSourceSessionFactory(createSourceSessionFactory());
    backupWriter.setTimeZone(getTimeZone());
    backupWriter.setThreads(getThreads() != null ? getThreads() : THREADS);
    backupWriter.setValueFormatRegistryResolver(createValueFormatRegistryResolver());
    setBackupWriter(backupWriter);
  }