public final void decompress(byte dataType, DataPackNode dpn) {
        assert version == dpn.version();
        if (data != null) {
            return;
        }
        long time = System.currentTimeMillis();

        if (dpn.compress()) {
            if (dpn.isDictEncoded()) {
                // Special case for dictionary encoded data.
                data = dpn.mode.versionAdapter.getDataFromDictStruct(version, dpn.mode, dataType, dpn, dictStruct(dataType, dpn));
            } else {
                data = dpn.mode.versionAdapter.decompressPack(version, dpn.mode(), dataType, dpn, cmpData);
            }
        } else {
            data = cmpData;
        }
        dataAddr = data.address();

        PackDurationStat.INSTANCE.add_decompressPack(System.currentTimeMillis() - time);
    }
Note that this method could update the content of dpn.
Make sure to call this method before you actually save the dpn instance to storage.
indexr-segment/src/main/java/io/indexr/segment/pack/DataPack.java