code: func (b *Buffer) Consume(c int64) {
  	if c == 0 {
  		return
  	}
  
  	if c > b.size {
  		panic(errors.New("consuming more data than available"))
  	}
  	b.size -= c
  
  	for c > 0 {
  		// Do we consume the entire chunk?
  		if int64(b.first.length()-b.fidx) > c {
  			// No. Advance our chunk index and terminate.
  			b.fidx += int(c)
  			break
  		}
  
  		n := b.first
  		c -= int64(n.length() - b.fidx)
  		b.first = n.next
  		b.fidx = 0
  		if b.first == nil {
  			b.last = nil
  		}
  
  		// Release our node. We must not reference it after this.
  		n.release()
  	}
  }
docs: // Consume removes the specified number of bytes from the beginning of the
  // Buffer. If Consume skips past all of the data in a Chunk is no longer needed,
  // it is Release()d.