anchor.diff:  %%--------------------------------------------------------------------
   %%% Internal functions
   %%--------------------------------------------------------------------
  +
  +
  +lowest_list_protocol_version(Ver, []) ->
  +    Ver;
  +lowest_list_protocol_version(Ver1,  [Ver2 | Rest]) ->
  +    lowest_list_protocol_version(lowest_protocol_version(Ver1, Ver2), Rest).
  +
  +highest_list_protocol_version(Ver, []) ->
  +    Ver;
  +highest_list_protocol_version(Ver1,  [Ver2 | Rest]) ->
  +    highest_list_protocol_version(highest_protocol_version(Ver1, Ver2), Rest).
  +
   encode_tls_cipher_text(Type, {MajVer, MinVer}, Epoch, Seq, Fragment) ->
       Length = erlang:iolist_size(Fragment),
       [<<?BYTE(Type), ?BYTE(MajVer), ?BYTE(MinVer), ?UINT16(Epoch),
  
positive.code:     mac_hash(Version, MacAlg, MacSecret, NewSeq, Type,
  	     Length, Fragment).
  
  mac_hash(Version, MacAlg, MacSecret, SeqNo, Type, Length, Fragment) ->
      dtls_v1:mac_hash(Version, MacAlg, MacSecret, SeqNo, Type,
  		     Length, Fragment).
  
negative.code: 	{ok, []} ->
  	    lists:map(Fun, supported_protocol_versions([]));
  	{ok, Vsns} when is_list(Vsns) ->
  	    supported_protocol_versions(lists:map(Fun, Vsns));
  	{ok, Vsn} ->
  	    supported_protocol_versions([Fun(Vsn)])
       end.
  
  supported_protocol_versions([]) ->
      Vsns = case sufficient_dtlsv1_2_crypto_support() of
  	       true ->
  		   ?ALL_DATAGRAM_SUPPORTED_VERSIONS;
  	       false ->
  		   ?MIN_DATAGRAM_SUPPORTED_VERSIONS
  	   end,
      application:set_env(ssl, dtls_protocol_version, Vsns),
      Vsns;
  
  supported_protocol_versions([_|_] = Vsns) ->
      case sufficient_dtlsv1_2_crypto_support() of
  	true ->
  	    Vsns;
  	false ->
  	    case Vsns -- ['dtlsv1.2'] of
  		[] ->
  		    ?MIN_SUPPORTED_VERSIONS;
  		NewVsns ->
  		    NewVsns
  	    end
      end.
  
  %%--------------------------------------------------------------------
  -spec is_acceptable_version(dtls_version(), Supported :: [dtls_version()]) -> boolean().
  