public void copyWrite0(S3ObjectMetadata sourceObjectMateData, long start, long end) {
        long targetSize = end - start;
        if (objectPart == null) {
            if (targetSize < minPartSize) {
                this.objectPart = new ObjectPart(writeOptions.throttleStrategy());
                objectPart.readAndWrite(sourceObjectMateData, start, end);
            } else {
                new CopyObjectPart(sourceObjectMateData.key(), start, end);
            }
        } else {
            if (objectPart.size() + targetSize > maxMergeWriteSize) {
                long readAndWriteCopyEnd = start + minPartSize - objectPart.size();
                objectPart.readAndWrite(sourceObjectMateData, start, readAndWriteCopyEnd);
                objectPart.upload();
                this.objectPart = null;
                new CopyObjectPart(sourceObjectMateData.key(), readAndWriteCopyEnd, end);
            } else {
                objectPart.readAndWrite(sourceObjectMateData, start, end);
                if (objectPart.size() > minPartSize) {
                    objectPart.upload();
                    this.objectPart = null;
                }
            }
        }
    }
The minPartSize represents the minimum size of a part for a multipart object.
s3stream/src/main/java/com/automq/stream/s3/operator/MultiPartWriter.java