code: func (auth *Authorization) Merge(a *Authorization) {
  	// Merge all but the grantedTo and username fields, those are already the same
  	// Do some sanity checking anyway
  	if auth.Username != a.Username || auth.GrantedTo != a.GrantedTo {
  		return
  	}
  
  	// Bool fields are merged on a once given is alwasy given basis
  	auth.Facebook = auth.Facebook || a.Facebook
  	auth.Github = auth.Github || a.Github
  	auth.Name = auth.Name || a.Name
  	auth.KeyStore = auth.KeyStore || a.KeyStore
  	auth.See = auth.See || a.See
  
  	// Authorized organizations can simply be expanded
  	auth.Organizations = append(auth.Organizations, a.Organizations...)
  
  	// Ownerof is an abstraction over a []string, can also be expanded
  	auth.OwnerOf.EmailAddresses = append(auth.OwnerOf.EmailAddresses, a.OwnerOf.EmailAddresses...)
  
  	// DigitalWallet is a separate type
  	auth.DigitalWallet = mergeDigitalWalletAuthorizationMap(auth.DigitalWallet, a.DigitalWallet)
  
  	// Merge the authorization maps
  	auth.Addresses = mergeAuthorizationMaps(auth.Addresses, a.Addresses)
  	auth.Avatars = mergeAuthorizationMaps(auth.Avatars, a.Avatars)
  	auth.BankAccounts = mergeAuthorizationMaps(auth.BankAccounts, a.BankAccounts)
  	auth.EmailAddresses = mergeAuthorizationMaps(auth.EmailAddresses, a.EmailAddresses)
  	auth.Phonenumbers = mergeAuthorizationMaps(auth.Phonenumbers, a.Phonenumbers)
  	auth.PublicKeys = mergeAuthorizationMaps(auth.PublicKeys, a.PublicKeys)
  	auth.ValidatedEmailAddresses = mergeAuthorizationMaps(auth.ValidatedEmailAddresses, a.ValidatedEmailAddresses)
  	auth.ValidatedPhonenumbers = mergeAuthorizationMaps(auth.ValidatedPhonenumbers, a.ValidatedPhonenumbers)
  }
docs: // Merge merges 2 authorizations.