code: func (key *Key) PublicKey() *Key {
  	keyBytes := key.Key
  
  	if key.IsPrivate {
  		keyBytes = publicKeyForPrivateKey(keyBytes)
  	}
  
  	return &Key{
  		Version:     PublicWalletVersion,
  		Key:         keyBytes,
  		Depth:       key.Depth,
  		ChildNumber: key.ChildNumber,
  		FingerPrint: key.FingerPrint,
  		ChainCode:   key.ChainCode,
  		IsPrivate:   false,
  	}
  }
docs: // PublicKey returns the public version of key or return a copy
  // The 'Neuter' function from the bip32 spec