public static byte[] Compress(Stream stream, Method method) { var methodAndSize = (uint)stream.Length << 3; using (var ms = new MemoryStream()) { switch (method) { case Method.LZ10: methodAndSize |= 0x1; using (var bw = new ImprovedBinaryWriter(ms)) { bw.Write(methodAndSize); var data = LZ10.Compress(stream); bw.Write(data); return(ms.ToArray()); } default: throw new InvalidDataException("Invalid method specified."); } } }