(PNG) ublic class BitWriter(Stream stream)
 (???) 
 (???)    private uint _buffer;
 (???)    private int _count;
 (???)    // write `code` with a number of `bits` (Most Significant Bit)
 (???)    public void WriteBits(uint code, int bits)
 (???)    {
 (???)        for (var i = bits - 1; i >= 0; i--)
 (???)        {
 (???)            var mask = code >> i;
 (???)            var bit = mask & 1;
 (???)            _buffer |= bit << _count;
 (???)            _count++;
 (???)            // flush buffer
 (???)            while (_count >= 8)
 (???)            {
 (???)                stream.WriteByte((byte)(_buffer & 0xFF));
 (???)                _buffer >>= 8;
 (???)                _count -= 8;
 (???)            }
 (???)        }
 (???)    }
 (???)    public void Flush()
 (???)    {
 (???)        if (_count <= 0)
 (???)        {
 (???)            return;
 (???)        }
 (???)        stream.WriteByte((byte)_buffer);
 (???)    }
 (???)