code: func NewMultiaddr(s string) (a Multiaddr, err error) {
  	defer func() {
  		if e := recover(); e != nil {
  			log.Printf("Panic in NewMultiaddr on input %q: %s", s, e)
  			err = fmt.Errorf("%v", e)
  		}
  	}()
  	b, err := stringToBytes(s)
  	if err != nil {
  		return nil, err
  	}
  	return &multiaddr{bytes: b}, nil
  }
docs: // NewMultiaddr parses and validates an input string, returning a *Multiaddr