anchor.diff:  %%  internal functions
   %%----------------------------------------------------------------------
   
  --spec start_fsm(State :: #state{},RadFsm :: pid(), Auth :: binray(), Address :: inet:ip_address(),
  +-spec start_fsm(State :: #state{},RadFsm :: pid(), Auth :: binary(), Address :: inet:ip_address(),
   		Port :: pos_integer(), Identifier :: non_neg_integer(),
   		Request :: #eap_packet{}) ->
   	NewState :: #state{}.
  
positive.code: handle_call({request, Address, Port, Packet}, {RadFsm, _Tag}= _From,
  		#state{handlers = Handlers} = State) ->
  	case catch radius:codec(Packet) of
  		#radius{identifier = Identifier, authenticator = Auth, attributes = Attributes} = Request ->
  			NewState = case gb_trees:lookup(Identifier, Handlers) of
  				none ->
  					start_fsm(State, RadFsm, Auth, Address, Port, Identifier, Request);
  
negative.code: 									State;
  								error ->
  									{reply, {error, no_such_attribute}, State}
  							end
  			end,
  			{reply, {ok, wait}, NewState};
  		{'EXIT', _Reason} ->
  