code: func NewMultiAt(buffers ...BufferAt) BufferAt {
  	if len(buffers) == 0 {
  		return nil
  	} else if len(buffers) == 1 {
  		return buffers[0]
  	}
  
  	buf := &chain{
  		Buf:  buffers[0],
  		Next: NewMultiAt(buffers[1:]...),
  	}
  
  	buf.Defrag()
  
  	return buf
  }
docs: // NewMultiAt returns a BufferAt which is the logical concatenation of the passed BufferAts.
  // The data in the buffers is shifted such that there is no non-empty buffer following
  // a non-full buffer, this process is also run after every Read.
  // If no buffers are passed, the returned Buffer is nil.