code: func WriteGunzip(w io.Writer, p []byte) (int, error) {
  	r := &byteSliceReader{p}
  	zr, err := acquireGzipReader(r)
  	if err != nil {
  		return 0, err
  	}
  	n, err := copyZeroAlloc(w, zr)
  	releaseGzipReader(zr)
  	nn := int(n)
  	if int64(nn) != n {
  		return 0, fmt.Errorf("too much data gunzipped: %d", n)
  	}
  	return nn, err
  }
docs: // WriteGunzip writes ungzipped p to w and returns the number of uncompressed
  // bytes written to w.