anchor.diff:  -on_load(init/0).
   
   -type req_comp() :: default | grey | grey_alpha | rgb | rgb_alpha.
  +-type stb_image() :: {
  +        X :: non_neg_integer(),
  +        Y :: non_neg_integer(),
  +        NComp :: non_neg_integer(),
  +        Data :: binary()
  +       }.
  +-type load_return() :: {ok, stb_image()} |
  +                       {error, Reason :: atom()}.
   
   % The name of the application we're writing. This is the name
   % used for the Erlang .app file.
  
positive.code:             filename:join(Dir, ?LIBNAME)
      end,
      erlang:load_nif(SoName, 0).
  
  % This is just a simple placeholder. It mostly shouldn't ever be called
  % unless there was an unexpected error loading the NIF shared library.
  
  not_loaded(Line) ->
      exit({not_loaded, [{module, ?MODULE}, {line, Line}]}).
  
negative.code: % erlang:load_nif/2 matches the return specification for -on_load()
  % functions.
  
  -spec internal_load(Filename :: binary(), Depth :: non_neg_integer()) ->
      load_return().
  internal_load(_Filename, _DesiredDepth) ->
      erlang:nif_error({not_loaded, [{module, ?MODULE}, {line, ?LINE}]}).
  
  % https://github.com/nothings/stb/blob/master/stb_image.h#L394
  -spec req_comp(non_neg_integer() | req_comp()) -> non_neg_integer().
  