anchor.diff:      gen_server:start_link(?MODULE, Options, [{timeout, ?START_TIMEOUT}]).
   
   
  -stop(InstanceId) when is_pid(InstanceId) ->
  -    gen_server:cast(InstanceId, stop).
  -
  -
  -call(InstanceId, Module, Function, Args) when is_pid(InstanceId),
  +-spec stop(Instance) -> ok when
  +    Instance :: instance().
  +
  +stop(Instance) when is_pid(Instance) ->
  +    gen_server:cast(Instance, stop).
  +
  +
  +-spec call(Instance, Module, Function, Args) -> Result when
  +    Instance :: instance(),
  +    Module :: atom(),
  +    Function :: atom(),
  +    Args :: list(),
  +    Result :: term().
  +
  +% TODO: Call timeout?
  +call(Instance, Module, Function, Args) when is_pid(Instance),
           is_atom(Module), is_atom(Function), is_list(Args) ->
  -    case gen_server:call(InstanceId, {call, Module, Function, Args}) of
  +    case gen_server:call(Instance, {call, Module, Function, Args}) of
           {ok, Result} ->
               Result;
           {error, Error} ->
  
positive.code: 
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
negative.code:     start([]).
  
  -spec start(Options) -> Result when
      Options :: options(),
      Result :: {ok, Instance} | {error, Reason},
      Instance :: instance(),
      Reason :: term().
  
  start(Options) when is_list(Options) ->
      gen_server:start(?MODULE, Options, [{timeout, ?START_TIMEOUT}]).
  