@SuppressWarnings("resource")
  public MaxSSTableSizeWriter(
      ColumnFamilyStore cfs,
      Directories directories,
      LifecycleTransaction txn,
      Set<SSTableReader> nonExpiredSSTables,
      long maxSSTableSize,
      int level,
      boolean offline,
      boolean keepOriginals) {
    super(cfs, directories, txn, nonExpiredSSTables, offline, keepOriginals);
    this.allSSTables = txn.originals();
    this.level = level;
    this.maxSSTableSize = maxSSTableSize;

    long totalSize = getTotalWriteSize(nonExpiredSSTables, estimatedTotalKeys, cfs, txn.opType());
    expectedWriteSize = Math.min(maxSSTableSize, totalSize);
    estimatedSSTables = Math.max(1, totalSize / maxSSTableSize);
  }