anchor.diff:  %%% * Restart and/or code reload policy (not needed in kernel)
   %%% * Fitting into the epmd/Erlang distro protocol version framework
   %%%   (something needs to be created for multiple protocols, epmd,
  -%%%    multiple address families, etc)
  +%%%    multiple address families, fallback to previous version, etc)
   
   
   %% Debug client and server
  
positive.code: %% blocks we have a deadlock.
  %%
  %% The init + start sequence tries to implement Password Encrypted
  %% Key Exchange using an ephemeral public/private keypair and the
  %% shared secret (the Cookie) to create session encryption keys
  %% that can not be re-created if the shared secret is compromized,
  %% which should create forward secrecy.
  %%
  %% All exchanged messages uses {packet, 2} i.e 16 bit size header.
  %%
  %% The init message contains a random number and encrypted: a public key
  %% and two random numbers.  The encryption is done with Key and IV hashed
  %% from the unencrypted random number and the shared secret.
  %%
  %% The exchanged epemeral public/private keypairs are used
  %% to create a shared key that is hashed with one of the encrypted
  %% random numbers from each side to create Key and IV for the session.
  %%
  %% The start message contains the two encrypted random numbers
  
negative.code:     {Ciphertext, Tag} =
          crypto:block_encrypt(AeadCipher, Key1A, IV1A, {AAD, Plaintext, TagLen}),
      Msg = [R1A, Tag, Ciphertext],
      {R2A, R3A, Msg}.
  %%
  init_msg(
    #params{
       hmac_algorithm = HmacAlgo,
       aead_cipher = AeadCipher,
       key = KeyLen,
       iv = IVLen,
       tag_len = TagLen,
       rekey_interval = RekeyInterval} = Params,
    Secret,
    #public_key_pair{
       type = PublicKeyType,
       params = PublicKeyParams,
       private = PrivKey},
    R2A, R3A, Msg) ->
      %%
      RLen = KeyLen + IVLen,
      case Msg of
  