class MergeAppend extends MergingSnapshotProducer<AppendFiles> implements AppendFiles {

  @Override
  public AppendFiles appendManifest(ManifestFile manifest) {
    Preconditions.checkArgument(!manifest.hasExistingFiles(), "Cannot append manifest with existing files");
    Preconditions.checkArgument(!manifest.hasDeletedFiles(), "Cannot append manifest with deleted files");
    Preconditions.checkArgument(
        manifest.snapshotId() == null || manifest.snapshotId() == -1,
        "Snapshot id must be assigned during commit");
    Preconditions.checkArgument(manifest.sequenceNumber() == -1,
        "Sequence must be assigned during commit");
    add(manifest);
    return this;
  }

    MergeAppend(String tableName, TableOperations ops);

}