anchor.diff:      %%      {"c_int", "enif_rwlock_tryrwlock", "rwlck: *mut ErlNifRWLock"},
       %%      {"", "enif_rwlock_rwlock", "rwlck: *mut ErlNifRWLock"},
       %%      {"", "enif_rwlock_rwunlock", "rwlck: *mut ErlNifRWLock"},
  -    %%      {"c_int", "enif_tsd_key_create", "name: *mut c_char, key: *mut ErlNifTSDKey"},
  +    %%      {"c_int", "enif_tsd_key_create", "name: *mut c_uchar, key: *mut ErlNifTSDKey"},
       %%      {"", "enif_tsd_key_destroy", "key: ErlNifTSDKey"},
       %%      {"", "enif_tsd_set", "key: ErlNifTSDKey, data: *mut c_void"},
       %%      {"*mut c_void", "enif_tsd_get", "key: ErlNifTSDKey"},
  -    %%      {"*mut ErlNifThreadOpts", "enif_thread_opts_create", "name: *mut c_char"},
  +    %%      {"*mut ErlNifThreadOpts", "enif_thread_opts_create", "name: *mut c_uchar"},
       %%      {"", "enif_thread_opts_destroy", "opts: *mut ErlNifThreadOpts"},
  -    %%      {"c_int", "enif_thread_create", "name: *mut c_char, tid: *mut ErlNifTid, func: ::std::option::Option<extern \"C\" fn (arg1: *mut c_void) -> *mut c_void>, args: *mut c_void, opts: *mut ErlNifThreadOpts"},
  +    %%      {"c_int", "enif_thread_create", "name: *mut c_uchar, tid: *mut ErlNifTid, func: ::std::option::Option<extern \"C\" fn (arg1: *mut c_void) -> *mut c_void>, args: *mut c_void, opts: *mut ErlNifThreadOpts"},
       %%      {"ErlNifTid", "enif_thread_self", ""},
       %%      {"c_int", "enif_equal_tids", "tid1: ErlNifTid, tid2: ErlNifTid"},
       %%      {"", "enif_thread_exit", "resp: *mut c_void"},
  
positive.code:     {"", "dummy_enif_make_list", ""}, % Can't support variable arguments
  
      {"ERL_NIF_TERM", "enif_make_list_cell", "env: *mut ErlNifEnv, car: ERL_NIF_TERM, cdr: ERL_NIF_TERM"},
      {"ERL_NIF_TERM", "enif_make_string", "env: *mut ErlNifEnv, string: *const c_char, arg1: ErlNifCharEncoding"},
      {"ERL_NIF_TERM", "enif_make_ref", "env: *mut ErlNifEnv"},
  
      %% Skip threading API for now (perhaps forever)
      %% If anybody has a situation where they want to use this API instead of the very fine
      %% Rust API, please tell me.
      %%      {"*mut ErlNifMutex", "enif_mutex_create", "name: *mut c_char"},
      %%      {"", "enif_mutex_destroy", "mtx: *mut ErlNifMutex"},
      %%      {"c_int", "enif_mutex_trylock", "mtx: *mut ErlNifMutex"},
      %%      {"", "enif_mutex_lock", "mtx: *mut ErlNifMutex"},
      %%      {"", "enif_mutex_unlock", "mtx: *mut ErlNifMutex"},
      %%      {"*mut ErlNifCond", "enif_cond_create", "name: *mut c_char"},
      %%      {"", "enif_cond_destroy", "cnd: *mut ErlNifCond"},
      %%      {"", "enif_cond_signal", "cnd: *mut ErlNifCond"},
      %%      {"", "enif_cond_broadcast", "cnd: *mut ErlNifCond"},
      %%      {"", "enif_cond_wait", "cnd: *mut ErlNifCond, mtx: *mut ErlNifMutex"},
      %%      {"*mut ErlNifRWLock", "enif_rwlock_create", "name: *mut c_char"},
      %%      {"", "enif_rwlock_destroy", "rwlck: *mut ErlNifRWLock"},
      %%      {"c_int", "enif_rwlock_tryrlock", "rwlck: *mut ErlNifRWLock"},
      %%      {"", "enif_rwlock_rlock", "rwlck: *mut ErlNifRWLock"},
  
negative.code:     {"ERL_NIF_TERM", "enif_make_tuple_from_array", "arg1: *mut ErlNifEnv, arr: *const ERL_NIF_TERM, cnt: c_uint"},
      {"ERL_NIF_TERM", "enif_make_list_from_array", "arg1: *mut ErlNifEnv, arr: *const ERL_NIF_TERM, cnt: c_uint"},
      {"c_int", "enif_is_empty_list", "arg1: *mut ErlNifEnv, term: ERL_NIF_TERM"},
      {"*mut ErlNifResourceType", "enif_open_resource_type", "arg1: *mut ErlNifEnv, module_str: *const c_uchar, name_str: *const c_uchar, dtor: ::std::option::Option<extern \"C\" fn (arg1: *mut ErlNifEnv, arg2: *mut c_void)>, flags: ErlNifResourceFlags, tried: *mut ErlNifResourceFlags"},
      {"*mut c_void", "enif_alloc_resource", "_type: *mut ErlNifResourceType, size: size_t"},
      {"", "enif_release_resource", "obj: *mut c_void"},
      {"ERL_NIF_TERM", "enif_make_resource", "arg1: *mut ErlNifEnv, obj: *mut c_void"},
  