anchor.diff:  %% @see //stdlib/gen_fsm:init/1
   %% @private
   %%
  -init([Address, Port, Secret, SessionID] = _Args) ->
  +init([Address, Port, RadiusFsm, Secret, SessionID,
  +		#radius{code = ?AccessRequest, id = ID,
  +		authenticator = Authenticator, attributes = Attributes] = _Args) ->
   	StateData = #statedata{address = Address, port = Port,
  -		secret = Secret, session_id = SessionID},
  +		radius_fsm = RadiusFsm, secret = Secret, session_id = SessionID,
  +		req_auth = Authenticator, req_attr = Attributes},
   	process_flag(trap_exit, true),
  -	{ok, send_response, StateData, ?TIMEOUT}.
  -
  --spec send_response(Event :: timeout | term(), StateData :: #statedata{}) ->
  +	{ok, request, StateData, 0}.
  +
  +-spec request(Event :: timeout | term(), StateData :: #statedata{}) ->
   	Result :: {next_state, NextStateName :: atom(), NewStateData :: #statedata{}}
   		| {next_state, NextStateName :: atom(), NewStateData :: #statedata{},
   		Timeout :: non_neg_integer() | infinity}
  
positive.code: %% @@see //stdlib/gen_fsm:StateName/2
  %% @private
  %%
  send_response(timeout, StateData)->
  	{stop, shutdown, StateData};
  send_response({#radius{code = ?AccessRequest, id = RadiusID,
  		authenticator =  RequestAuthenticator,
  		attributes = Attributes}, RadiusFsm},
  		#statedata{session_id = SessionID, secret = Secret} = StateData) ->
  	Subscriber = radius_attributes:fetch(?UserName, Attributes),
  	NewStateData = StateData#statedata{subscriber = Subscriber},
  	case ocs:find_subscriber(Subscriber) of
  		{ok, [], Attr, _} ->
  			send_response(?AccessAccept, RadiusID, Attr, RequestAuthenticator,
  						Secret, RadiusFsm),
  			{stop, {shutdown, SessionID}, NewStateData };
  		{error, not_found} ->
  			send_response(?AccessReject, RadiusID, Attributes, RequestAuthenticator,
  					Secret, RadiusFsm),
  			{stop, {shutdown, SessionID}, NewStateData }
  	end.
  
  -spec handle_event(Event :: term(), StateName :: atom(),
  
negative.code: 	Response = #radius{code = RadiusCode, id = RadiusID,
  			authenticator = ResponseAuthenticator, attributes = Attributes2},
  	ResponsePacket = radius:codec(Response),
  	radius:response(RadiusFsm, {response, ResponsePacket}).
  
  