anchor.diff:  %%  internal functions
   %%----------------------------------------------------------------------
   
  --spec request(Caps, Eap, Request, CbFsm, State) -> Reply
  +-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{},
  -		CbFsm :: pid(),
  +		CbProc :: {pid(), term()},
   		State :: state(),
   		Reply :: {reply, Answer, State} | {noreply, State},
   		Answer :: #diameter_nas_app_AAA{} | #diameter_nas_app_STA{}
  
positive.code: 		OHost :: string(),
  		ORealm :: string(),
  		Options :: list(),
  		CbFsm :: pid(),
  		Request :: #diameter_nas_app_AAR{} | #diameter_eap_app_DER{},
  		State :: state(),
  		Result :: {Fsm, State},
  		Fsm :: undefined | pid().
  start_fsm(AuthSup, AppId, SessId, Type, OHost, ORealm,
  		Options, CbFsm, Request, #state{handlers = Handlers, address = Address, port = Port,
  		cb_fsms = FsmHandler} = State) ->
  	StartArgs = [diameter, Address, Port, SessId, AppId, Type, OHost,
  			ORealm, Request, Options],
  
negative.code: 		simple_auth_sup :: undefined | pid(),
  		pwd_sup :: undefined | pid(),
  		cb_fsms = gb_trees:empty() :: gb_trees:tree(
  				Key :: (AuthFsm :: pid()), Value :: (CbProc :: pid())),
  		handlers = gb_trees:empty() :: gb_trees:tree(
  				Key :: (SessionId :: string()), Value :: (Fsm :: pid()))}).
  
  