code: func (b *Buffer) Read() []*rfc5424.Message {
  	b.mu.RLock()
  	defer b.mu.RUnlock()
  	return b.read()
  }
docs: // Read returns a copied slice with the contents of the Buffer. It does not
  // modify the underlying buffer in any way. You are free to modify the
  // returned slice without affecting Buffer, though modifying the individual
  // elements in the result will also modify those elements in the Buffer.