public static TrinoDeleteFile copyOf(DeleteFile deleteFile) {
    return new TrinoDeleteFile(
        deleteFile.pos(),
        deleteFile.specId(),
        deleteFile.content(),
        deleteFile.path().toString(),
        deleteFile.format(),
        deleteFile.recordCount(),
        deleteFile.fileSizeInBytes(),
        deleteFile.columnSizes(),
        deleteFile.valueCounts(),
        deleteFile.nullValueCounts(),
        deleteFile.nanValueCounts(),
        deleteFile.lowerBounds() == null
            ? null
            : deleteFile.lowerBounds().entrySet().stream()
                .collect(
                    toImmutableMap(
                        Map.Entry<Integer, ByteBuffer>::getKey, entry -> entry.getValue().array())),
        deleteFile.upperBounds() == null
            ? null
            : deleteFile.upperBounds().entrySet().stream()
                .collect(
                    toImmutableMap(
                        Map.Entry<Integer, ByteBuffer>::getKey, entry -> entry.getValue().array())),
        deleteFile.keyMetadata() == null ? null : deleteFile.keyMetadata().array(),
        deleteFile.equalityFieldIds(),
        deleteFile.sortOrderId(),
        deleteFile.splitOffsets());
  }
Copy from trino-iceberg TrinoDeleteFile and do some change to adapt mixed-format table
amoro-format-mixed/amoro-mixed-trino/src/main/java/org/apache/amoro/trino/delete/TrinoDeleteFile.java