sclass HuffmanByteArray is BitIO { byte[] data; int[] histogram; HuffmanTree tree; settable bool magicCode; public void readWrite(BitHead head) { if (head.writeMode()) { histogram = byteHistogramArray(rawData); new HuffmanTreeMaker tm; var tree = tm.importByteHistogram(histogram); tree = tm!; } // Part 1 (magic code) if (magicCode) head.exchangeASCII("HUFF"); // Part 2 (Huffman character tree) tree.readWrite(head); // Part 3 (text) if (head.writeMode()) { fOr (b : data) tree.writeCharacter(b, head); head.trailingBitCount(); } if (head.readMode()) { } } }