anchor.diff:       nif_port_command,
        nif_snprintf].
   
  +groups() ->
  +    [{G, [], api_repeaters()} || G <- api_groups()].
  +
  +api_groups() -> [api_latest, api_2_4].
  +
  +api_repeaters() -> [upgrade, resource_takeover, t_on_load].
  +
  +init_per_group(api_latest, Config) -> Config;
  +init_per_group(api_2_4, Config) ->
  +    [{nif_api_version, ".2_4"} | Config].
  +
  +end_per_group(_,_) -> ok.
  +
   init_per_testcase(t_on_load, Config) ->
       ets:new(nif_SUITE, [named_table]),
       Config;
  
positive.code: 
  %% Test loading/upgrade in on_load
  t_on_load(Config) when is_list(Config) ->
      [begin io:format("Do test for API version \"~p\"", [API]),
             t_on_load_do([{nif_api_version,API}|Config])
       end
       || API <- ["", ".2_4"]].
  
  t_on_load_do(Config) ->
      TmpMem = tmpmem(),
      ensure_lib_loaded(Config),
  
  
negative.code: 
  -export([many_args_100/100]).
  
  -define(nif_stub,nif_stub_error(?LINE)).
  
  suite() -> [{ct_hooks,[ts_install_cth]}].
  
  all() ->
      [basic]
          ++
      [{group, G} || G <- api_groups()]
          ++
      [reload_error, heap_frag, types, many_args,
       hipe,
       binaries, get_string, get_atom, maps, api_macros, from_array,
       iolist_as_binary, resource, resource_binary,
       threading, send, send2, send3,
       send_threaded, neg, is_checks, get_length, make_atom,
       make_string,reverse_list_test,
       otp_9828,
  