public byte DecodeWithMatchByte(SevenZip.Compression.RangeCoder.Decoder rangeDecoder, byte matchByte) throws IOException
      {
        int symbol = 1;
        do
        {
          int matchBit = matchByte >> 7 & 0x1;
          matchByte = (byte)(matchByte << 1);
          int bit = rangeDecoder.DecodeBit(m_Decoders, (1 + matchBit << 8) + symbol);
          symbol = symbol << 1 | bit;
          if (matchBit == bit)
            continue;
          while (symbol < 256) {
            symbol = symbol << 1 | rangeDecoder.DecodeBit(m_Decoders, symbol);
          }
        }

        while (symbol < 256);
        return (byte)symbol;
      }