anchor.diff:  start_link() ->
   	gen_server:start_link(?MODULE, [], []).
   
  -set_info(Info, Pid) ->
  -    gen_server:call(Pid,{set_info,Info}).
  +-spec set_user_info(UserInfo :: map(), Pid :: pid()) -> ok.
  +set_user_info(Info, Pid) ->
  +    gen_server:call(Pid,{set_user_info,Info}).
   
  +-spec connect_session(Session :: pid(), Pid :: pid()) -> ok.
   connect_session(Session, Pid) ->
       gen_server:call(Pid,{connect_session,Session}).
  +
  +-spec add_token(TokenMap :: map(), Pid :: pid()) -> ok.
  +add_token(TokenMap, Pid) ->
  +    gen_server:call(Pid,{add_token_map,TokenMap}).
  +
   %% gen_server.
   
   init([]) ->
  -	{ok, #state{}}.
  +	{ok, #state{}, 5000}.
   
  -handle_call({set_info,Info}, _From, State) ->
  -    {reply, ok, State#state{info=Info}};
  +handle_call({set_user_info,UserInfo}, _From, State) ->
  +    {reply, ok, State#state{user_info=UserInfo}};
   handle_call({connect_session,Session}, _From,#state{sessions=Sessions} = State) ->
       MRef = monitor(process, Session),
       NewSessions = [ {Session, MRef} | lists:keydelete(Session,1,Sessions) ],
       {reply, ok, State#state{sessions=NewSessions}};
  +handle_call({add_token_map,TokenMap}, _From, State) ->
  +    {ok, NewState} = update_token(TokenMap,State),
  +    {reply, ok, NewState};
   handle_call(_Request, _From, State) ->
   	{reply, ignored, State}.
   
  
positive.code: -module(tts_user).
  -behaviour(gen_server).
  
  %% API.
  -export([start_link/0]).
  -export([set_info/2]).
  -export([connect_session/2]).
  
  
  %% gen_server.
  
negative.code: -export([code_change/3]).
  
  -record(state, {
            user_info = #{},
            credentials = [],
            sessions = []
  }).
  
  