code: func newClient(ifi *net.Interface, p net.PacketConn, addrs []net.Addr) (*Client, error) {
  	ip, err := firstIPv4Addr(addrs)
  	if err != nil {
  		return nil, err
  	}
  
  	return &Client{
  		ifi: ifi,
  		ip:  ip,
  		p:   p,
  	}, nil
  }
docs: // newClient is the internal, generic implementation of newClient.  It is used
  // to allow an arbitrary net.PacketConn to be used in a Client, so testing
  // is easier to accomplish.