anchor.diff:      {reply, true, State, MA};
   handle_call({is_user_agent, _UserAgent}, _From, #state{max_age=MA}=State) ->
       {reply, false, State, MA};
  -handle_call(get_user_agent, _From,
  -            #state{user_agent=UserAgent, max_age=MA}=State) ->
  -    {reply, {ok, UserAgent}, State, MA};
  +handle_call({is_same_ip, IP}, _From,
  +            #state{ip=undefined, max_age=MA}=State) ->
  +    {reply, true, State#state{ip=IP}, MA};
  +handle_call({is_same_ip, IP}, _From,
  +            #state{ip=IP, max_age=MA}=State) ->
  +    {reply, true, State, MA};
  +handle_call({is_same_ip, _IP}, _From, #state{max_age=MA}=State) ->
  +    {reply, false, State, MA};
   handle_call(_Request, _From, State) ->
       {reply, ignored, State}.
   
  
positive.code: 
  is_user_agent(UserAgent, Pid) ->
      gen_server:call(Pid, {is_user_agent, UserAgent}).
  
  -spec get_oidc_state(Pid :: pid()) -> {ok, OidcState::binary()}.
  get_oidc_state(Pid) ->
  
negative.code: -export([clear_oidc_state_nonce/1]).
  
  -export([is_user_agent/2]).
  -export([is_same_ip/2]).
  -export([is_logged_in/1]).
  
  %% gen_server.
  