anchor.diff:  handle_info({'DOWN', MonitorRef, process, _Object, _Info}, #state{sessions=Sessions}=State) ->
       NewSessions = remove_session_from_list(MonitorRef,Sessions),
       shutdown_if_done(NewSessions,State);
  +handle_info(timeout, State) ->
  +    {stop,normal,State};
   handle_info(_Info, State) ->
   	{noreply, State}.
   
  
positive.code: -export([code_change/3]).
  
  -record(state, {
            info = #{},
            sessions = []
  }).
  
  
negative.code: start_link() ->
  	gen_server:start_link(?MODULE, [], []).
  
  -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{}, 5000}.
  
  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}.
  
  