code: func (b *buffer) write(buf []byte) {
  	b.Cond.L.Lock()
  	e := &element{buf: buf}
  	b.tail.next = e
  	b.tail = e
  	b.Cond.Signal()
  	b.Cond.L.Unlock()
  }
docs: // write makes buf available for Read to receive.
  // buf must not be modified after the call to write.