code: func Join(ms ...Multiaddr) Multiaddr {
  	switch len(ms) {
  	case 0:
  		// empty multiaddr, unfortunately, we have callers that rely on
  		// this contract.
  		return &multiaddr{}
  	case 1:
  		return ms[0]
  	}
  
  	length := 0
  	bs := make([][]byte, len(ms))
  	for i, m := range ms {
  		bs[i] = m.Bytes()
  		length += len(bs[i])
  	}
  
  	bidx := 0
  	b := make([]byte, length)
  	for _, mb := range bs {
  		bidx += copy(b[bidx:], mb)
  	}
  	return &multiaddr{bytes: b}
  }
docs: // Join returns a combination of addresses.