anchor.diff:  
   -include_lib("unittest.hrl").
   
  -%% todo: add have_persistent_term_get, have_counters_get, and have_atomics_new
  -
   all() ->
  -    [test_have_crypto_randuniform_support,
  +    [test_has_maps_get_2,
  +     test_has_cerl_sets_0,
  +     test_has_maps_iterator_1,
  +     test_has_maps_next_1,
  +     test_has_logger_add_handler_3,
  +     test_have_crypto_randuniform_support,
        test_with_crypto_hash,
        test_with_crypto_bytes_to_integer,
        test_with_maps,
  
positive.code:     ?assert_w_note(lists:member(otp_rel(), Releases), otp_rel()),
      ok.
  -endif.
  
negative.code: 
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % maps:get/2
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  % maps:get/2, OTP-17
  has_maps_get_2() ->
      code:ensure_loaded(maps),
      erlang:function_exported(maps, get, 2).
  
  test_has_maps_get_2(_Config) ->
      FalseReleases = ["R14B04", "R15B", "R15B01", "R15B02", "R15B03", "R16B",
                       "R16B01", "R16B02", "R16B03-1"],
      TrueReleases = ["17", "18", "19", "20", "21", "22", "23"],
      case has_maps_get_2() of
          true ->
              ?assert_w_note(lists:member(otp_rel(), TrueReleases), otp_rel());
          false ->
              ?assert_w_note(lists:member(otp_rel(), FalseReleases), otp_rel())
      end,
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % cerl_sets:new/0
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  % cerl_sets:new/0, OTP-18
  has_cerl_sets_new_0() ->
      code:ensure_loaded(cerl_sets),
      erlang:function_exported(cerl_sets, new, 0).
  
  test_has_cerl_sets_0(_Config) ->
      FalseReleases = ["R14B04", "R15B", "R15B01", "R15B02", "R15B03", "R16B",
                       "R16B01", "R16B02", "R16B03-1", "17"],
      TrueReleases = ["18", "19", "20", "21", "22", "23"],
      case has_cerl_sets_new_0() of
          true ->
              ?assert_w_note(lists:member(otp_rel(), TrueReleases), otp_rel());
          false ->
              ?assert_w_note(lists:member(otp_rel(), FalseReleases), otp_rel())
      end,
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % maps:iterator/1
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  % maps:iterator/1, OTP-21
  has_maps_iterator_1() ->
      code:ensure_loaded(maps),
      erlang:function_exported(maps, iterator, 1).
  
  test_has_maps_iterator_1(_Config) ->
      FalseReleases = ["R14B04", "R15B", "R15B01", "R15B02", "R15B03", "R16B",
                       "R16B01", "R16B02", "R16B03-1", "17", "18", "19", "20"],
      TrueReleases = ["21", "22", "23"],
      case has_maps_iterator_1() of
          true ->
              ?assert_w_note(lists:member(otp_rel(), TrueReleases), otp_rel());
          false ->
              ?assert_w_note(lists:member(otp_rel(), FalseReleases), otp_rel())
      end,
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % maps:next/1
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  % maps:next/1, OTP-21
  has_maps_next_1() ->
      code:ensure_loaded(maps),
      erlang:function_exported(maps, next, 1).
  
  test_has_maps_next_1(_Config) ->
      FalseReleases = ["R14B04", "R15B", "R15B01", "R15B02", "R15B03", "R16B",
                       "R16B01", "R16B02", "R16B03-1", "17", "18", "19", "20"],
      TrueReleases = ["21", "22", "23"],
      case has_maps_next_1() of
          true ->
              ?assert_w_note(lists:member(otp_rel(), TrueReleases), otp_rel());
          false ->
              ?assert_w_note(lists:member(otp_rel(), FalseReleases), otp_rel())
      end,
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % logger:add_handler/3
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  % logger:add_handler/3, OTP-21
  has_logger_add_handler_3() ->
      code:ensure_loaded(logger),
      erlang:function_exported(logger, add_handler, 3).
  
  test_has_logger_add_handler_3(_Config) ->
      FalseReleases = ["R14B04", "R15B", "R15B01", "R15B02", "R15B03", "R16B",
                       "R16B01", "R16B02", "R16B03-1", "17", "18", "19", "20"],
      TrueReleases = ["21", "22", "23"],
      case has_logger_add_handler_3() of
          true ->
              ?assert_w_note(lists:member(otp_rel(), TrueReleases), otp_rel());
          false ->
              ?assert_w_note(lists:member(otp_rel(), FalseReleases), otp_rel())
      end,
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % have_crypto_randuniform_support
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  