code: def Stream(self, reader, amount=None):
      
      if amount is None:
        amount = float("inf")
  
      data = reader.Read(min(self.chunk_size, amount))
      if not data:
        return
  
      amount -= len(data)
      offset = reader.offset - len(data)
      yield Chunk(offset=offset, data=data)
  
      while amount > 0:
        # We need `len(data)` here because overlap size can be 0.
        overlap = data[len(data) - self.overlap_size:]
  
        new = reader.Read(min(self.chunk_size - self.overlap_size, amount))
        if not new:
          return
  
        data = overlap + new
  
        amount -= len(new)
        offset = reader.offset - len(data)
        yield Chunk(offset=offset, data=data, overlap=len(overlap))
docs: Streams chunks of a given file starting at given offset.
  
      Args:
        reader: A `Reader` instance.
        amount: An upper bound on number of bytes to read.
  
      Yields:
        `Chunk` instances.