code: func (r *buffer) Read(b []byte) (int, error) {
  	if r.off >= r.size {
  		return 0, io.EOF
  	}
  	if n := r.size - r.off; len(b) > n {
  		b = b[:n]
  	}
  	n := copy(b, r.data[r.off:])
  	r.off += n
  	return n, nil
  }
docs: // Read provides the flate.Decompressor Read method.