code: func (c *CountingReader) ReadByte() (byte, error) {
  	// If our underlying reader is a ByteReader, use its ReadByte directly.
  	if br, ok := c.Reader.(io.ByteReader); ok {
  		b, err := br.ReadByte()
  		if err == nil {
  			c.Count++
  		}
  		return b, err
  	}
  
  	data := []byte{0}
  	amount, err := c.Reader.Read(data)
  	if amount != 0 {
  		c.Count += int64(amount)
  		return data[0], err
  	}
  	return 0, err
  }
docs: // ReadByte implements io.ByteReader.