code: func ForEach(m Multiaddr, cb func(c Component) bool) {
  	// Shortcut if we already have a component
  	if c, ok := m.(*Component); ok {
  		cb(*c)
  		return
  	}
  
  	b := m.Bytes()
  	for len(b) > 0 {
  		n, c, err := readComponent(b)
  		if err != nil {
  			panic(err)
  		}
  		if !cb(c) {
  			return
  		}
  		b = b[n:]
  	}
  }
docs: // ForEach walks over the multiaddr, component by component.
  //
  // This function iterates over components *by value* to avoid allocating.