public static byte[] Decompress(Stream stream) { using (var reader = new ImprovedBinaryReader(stream, true)) { var header = reader.ReadInt32(); var method = (Method)(header & 0x07); var size = header >> 3; switch (method) { case Method.NoCompression: return(reader.ReadBytes(size)); case Method.LZ10: return(LZ10.Decompress(reader.BaseStream, size)); case Method.RLE: return(RLE.Decompress(reader.BaseStream, size)); case Method.Huffman4Bit: return(Huffman.Decompress(reader.BaseStream, 4, size)); case Method.Huffman8Bit: return(Huffman.Decompress(reader.BaseStream, 8, size)); default: throw new NotImplementedException($"Unsupported compression method: {method}"); } } }