code: def decode_streaming(self, data):
          
          # Reverse lookup table: map (bitsize, value) to symbols
          lookup = dict(((b, v), s) for (s, (b, v)) in self._table.items())
  
          buffer = 0
          size = 0
          for byte in data:
              for m in [128, 64, 32, 16, 8, 4, 2, 1]:
                  buffer = (buffer << 1) + bool(from_byte(byte) & m)
                  size += 1
                  if (size, buffer) in lookup:
                      symbol = lookup[size, buffer]
                      if symbol == _EOF:
                          return
                      yield symbol
                      buffer = 0
                      size = 0
docs: Decode given data in streaming fashion
  
          :param data: sequence of bytes (string, list or generator of bytes)
          :return: generator of symbols