interface CompressionRegime { default byte[] decompressorToBytes(A decompressor) { ret toByteArray(decompressorToByteIterator(decompressor)); } default IntegerIterator decompressorToByteIterator(A decompressor) { ret iterator(decompressorToByteList(decompressor)); } L decompressorToByteList(A decompressor); A decompressorFromBytes(byte[] compressed); byte[] runDecompressor(A a); default byte[] decompress(byte[] compressed) { ret runDecompressor(decompressorFromBytes(compressed)); } }