anchor.diff:      nif_2_11               .  % general 2.11 API additions
   
   
  -version_opts("2.7")  -> [{major,2}, {minor,7} ];                           % erlang 17.3
  -version_opts("2.8")  -> [{major,2}, {minor,8},  exception];                % erlang 18.0
  -version_opts("2.9")  -> [{major,2}, {minor,9},  exception, getenv];        % erlang 18.2
  -version_opts("2.10") -> [{major,2}, {minor,10}, exception, getenv, time];  % erlang 18.3
  -version_opts("2.11") -> [{major,2}, {minor,11}, exception, getenv, time,   % erlang 19.0
  -                        dirty_scheduler_opt, nif_2_11];
  -version_opts("2.12") -> [{major,2}, {minor,12}, exception, getenv, time,   % erlang 20.0
  -                        dirty_scheduler_opt, nif_2_11, nif_2_12];
  -version_opts("2.13") -> [{major,2}, {minor,13}, exception, getenv, time,   % erlang 20.1
  -                        dirty_scheduler_opt, nif_2_11, nif_2_12, nif_2_13];
  +-define(OLDEST_SUPPORTED_VERSION, "2.14").
  +
   version_opts("2.14") -> [{major,2}, {minor,14}, exception, getenv, time,   % erlang 21.0
                           dirty_scheduler_opt, nif_2_11, nif_2_12, nif_2_13,
                           nif_2_14];
  
positive.code:                         nif_2_14, nif_2_15, nif_2_16];
  version_opts(Ver) ->
      io:format(
          "This OTP release uses the unsupported Erlang NIF version ~p.\n\n"
          "Please report at https://github.com/rusterlium/rustler.\n",
          [Ver]
      ),
      halt(1).
  
  ulong_opts("4") -> [{ulongsize, 4}];
  ulong_opts("8") -> [{ulongsize, 8}].
  
  
  dirty_scheduler_opts("2.7") -> dirty_scheduler_opts();
  dirty_scheduler_opts("2.8") -> dirty_scheduler_opts();
  dirty_scheduler_opts("2.9") -> dirty_scheduler_opts();
  dirty_scheduler_opts("2.10") -> dirty_scheduler_opts();
  dirty_scheduler_opts(_) -> []. % dirty schedulers non-optional in 2.11
  
  dirty_scheduler_opts() ->
      case catch erlang:system_info(dirty_cpu_schedulers) of
                                   _X when is_integer(_X) -> [dirty_schedulers, dirty_scheduler_opt];
                                   _ -> []
                               end.
  
  
  -spec api_list([api_opt()]) -> [term()].
  api_list(Opts) -> [
  
negative.code: main([UlongSizeT, Filename]) ->
      %% Round up all configuration options
      Version = (catch erlang:system_info(nif_version)),
      Opts = version_opts(Version) ++ ulong_opts(UlongSizeT),
      %% Generate API list
      Entries = api_list(Opts),
      %% Generate Rust code
  