code: func (m *multiaddr) Encapsulate(o Multiaddr) Multiaddr {
  	mb := m.bytes
  	ob := o.Bytes()
  
  	b := make([]byte, len(mb)+len(ob))
  	copy(b, mb)
  	copy(b[len(mb):], ob)
  	return &multiaddr{bytes: b}
  }
docs: // Encapsulate wraps a given Multiaddr, returning the resulting joined Multiaddr