public void write(ByteBufferWriter writer) throws IOException {
        ByteSlice tmp = ByteSlice.allocateDirect(mode.versionAdapter.dpnSize(version, mode));
        int offset = 0;
        tmp.put(offset += 0, packType);
        tmp.putInt(offset += 1, objCount);
        tmp.putLong(offset += 4, packAddr);
        tmp.putInt(offset += 8, packSize);
        tmp.put(offset += 4, numType);
        tmp.putLong(offset += 1, uniformMin);
        tmp.putLong(offset += 8, uniformMax);
        if (version <= Version.VERSION_1_ID) {
            tmp.putInt(offset += 4, maxObjLen);
        } else {
            tmp.putInt(offset += 8, maxObjLen);
        }
        tmp.put(offset += 4, (byte) (compress ? 1 : 0));
        tmp.putLong(offset += 1, indexAddr);
        tmp.putInt(offset += 8, indexSize);
        tmp.putLong(offset += 4, minValue);
        tmp.putLong(offset += 8, maxValue);
        if (version >= Version.VERSION_6_ID) {
            tmp.putLong(offset += 8, extIndexAddr);
            tmp.putInt(offset += 8, extIndexSize);
        }
        offset += 4;

        writer.write(tmp.byteBuffer());
    }
The size greater or equal to V6
indexr-segment/src/main/java/io/indexr/segment/pack/DataPackNode_Basic.java