anchor.diff:  		simple_auth_sup :: undefined | pid(),
   		pwd_sup :: undefined | pid(),
   		cb_fsms = gb_trees:empty() :: gb_trees:tree(
  -				Key :: (AuthFsm :: pid()), Value :: (CbFsm :: pid())),
  +				Key :: (AuthFsm :: pid()), Value :: (CbProc :: pid())),
   		handlers = gb_trees:empty() :: gb_trees:tree(
   				Key :: (SessionId :: string()), Value :: (Fsm :: pid()))}).
   
  
positive.code: %% @doc Based on the DIAMETER request generate appropriate DIAMETER
  %% answer.
  %% @hidden
  request(Caps, none, Request, CbFsm, State) when is_record(Request, diameter_nas_app_AAR) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1(none, OHost, ORealm, Request, CbFsm, State);
  request(Caps, {eap, <<_:32, ?Identity, Identity/binary>>}, Request, CbFsm, State)
  		when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1({identity, Identity}, OHost, ORealm, Request, CbFsm, State);
  request(Caps, {eap, <<_, EapId, _:16, ?LegacyNak, Data/binary>>}, Request, CbFsm, State)
  		when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1({legacy_nak, EapId, Data}, OHost, ORealm, Request, CbFsm, State);
  request(Caps, Eap, Request, CbFsm, State) when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1(Eap, OHost, ORealm, Request, CbFsm, State);
  request(Caps, none, Request, _CbFsm, State) when is_record(Request, diameter_nas_app_STR) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	SessionId = Request#diameter_nas_app_STR.'Session-Id',
  	try
  
negative.code: %%  internal functions
  %%----------------------------------------------------------------------
  
  -spec request(Caps, Eap, Request, CbProc, State) -> Reply
  	when
  		Caps :: capabilities(),
  		Eap :: none | {eap, #eap_packet{}},
  		Request :: #diameter_nas_app_AAR{} | #diameter_nas_app_STR{}
  				| #diameter_eap_app_DER{},
  		CbProc :: {pid(), term()},
  		State :: state(),
  		Reply :: {reply, Answer, State} | {noreply, State},
  		Answer :: #diameter_nas_app_AAA{} | #diameter_nas_app_STA{}
  