code: func SplitFirst(m Multiaddr) (*Component, Multiaddr) {
  	// Shortcut if we already have a component
  	if c, ok := m.(*Component); ok {
  		return c, nil
  	}
  
  	b := m.Bytes()
  	if len(b) == 0 {
  		return nil, nil
  	}
  	n, c, err := readComponent(b)
  	if err != nil {
  		panic(err)
  	}
  	if len(b) == n {
  		return &c, nil
  	}
  	return &c, &multiaddr{b[n:]}
  }
docs: // SplitFirst returns the first component and the rest of the multiaddr.