anchor.diff:  %% must begin with "dummy."
   %%
   
  -api_list(Version, UlongSize, HasDirtySchedulers)
  -  when Version =:= {2,7};
  -       Version =:= {2,8};
  -       Version =:= {2,9};
  -       Version =:= {2,10} -> [
  -
  +-type api_opt() ::
  +    exception              |  % enif_xxx_exception() functions
  +    getenv                 |  % enif_getenv() functions
  +    time                   |  % new timer API
  +    {ulongsize, integer()} |  % number of bytes in a C ulong
  +    dirty_schedulers       .  % enif_is_on_dirty_scheduler()
  +
  +
  +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(_) ->
  +    io:format("Unsupported Erlang version.\nPlease report to get this version supported.\n"),
  +    halt(1).
  +
  +ulong_opts("4") -> [{ulongsize, 4}];
  +ulong_opts("8") -> [{ulongsize, 8}].
  +
  +dirty_scheduler_opts() ->
  +    case catch erlang:system_info(dirty_cpu_schedulers) of
  +                                 _X when is_integer(_X) -> [dirty_schedulers];
  +                                 _ -> []
  +                             end.
  +
  +
  +-spec api_list([api_opt()]) -> [term()].
  +api_list(Opts) -> [
       {"*mut c_void", "enif_priv_data", "arg1: *mut ErlNifEnv"},
       {"*mut c_void", "enif_alloc", "size: size_t"},
       {"", "enif_free", "ptr: *mut c_void"},
  
positive.code:     {"ERL_NIF_TERM", "enif_make_resource_binary", "arg1: *mut ErlNifEnv, obj: *mut c_void, data: *const c_void, size: size_t"}
      ] ++
  
      case UlongSize of
          8 -> [];
          4 ->
              [
  
negative.code: join(List, Joiner) -> join([], List, Joiner).
  join(Acc, [H], _Joiner) -> lists:reverse([H|Acc]);
  join(Acc, [H|T], Joiner) -> join([Joiner, H|Acc], T, Joiner).
  
  %% These functions are defined in the API above when sizeof(ulong)==8, or they map to
  %% long/ulong functions when sizeof(ulong)==4.
  