
  -spec erlang:load_nif(Path, LoadInfo) -> ok | Error
                           when
                               Path :: string(),
                               LoadInfo :: term(),
                               Error ::
                                   {error, {Reason, Text :: string()}},
                               Reason ::
                                   load_failed | bad_lib | load | reload |
                                   upgrade | old_code.

  Loads and links a dynamic library containing native implemented
  functions (NIFs) for a module. Path is a file path to the
  shareable object/dynamic library file minus the OS-dependent file
  extension (.so for Unix and .dll for Windows). Notice that on
  most OSs the library has to have a different name on disc when an
  upgrade of the nif is done. If the name is the same, but the
  contents differ, the old library may be loaded instead. For
  information on how to implement a NIF library, see erl_nif(3).

  LoadInfo can be any term. It is passed on to the library as part
  of the initialization. A good practice is to include a module
  version number to support future code upgrade scenarios.

  The call to load_nif/2 must be made directly from the Erlang
  code of the module that the NIF library belongs to. It returns
  either ok, or {error,{Reason,Text}} if loading fails. Reason
  is one of the following atoms while Text is a human readable
  string that can give more information about the failure:

  load_failed:
    The OS failed to load the NIF library.

  bad_lib:
    The library did not fulfill the requirements as a NIF library
    of the calling module.

  load | upgrade:
    The corresponding library callback was unsuccessful.

  reload:
    A NIF library is already loaded for this module instance. The
    previously deprecated reload feature was removed in OTP 20.

  old_code:
    The call to load_nif/2 was made from the old code of a
    module that has been upgraded; this is not allowed.
