anchor.diff:  %%
   init([ServiceName, ServerAddress, ServerPort, ClientAddress,
   		ClientPort, SessionId, OriginHost, OriginRealm,
  -		DestinationHost, DestinationRealm] = _Args) ->
  +		_DestinationHost, _DestinationRealm] = _Args) ->
   	process_flag(trap_exit, true),
   	{ok, idle, #statedata{service = ServiceName, session_id = SessionId,
   			server_address = ServerAddress, server_port = ServerPort,
   			client_address = ClientAddress, client_port = ClientPort,
  -			origin_host = OriginHost, origin_realm = OriginRealm,
  -			hss_realm = DestinationRealm, hss_host = DestinationHost}}.
  +			origin_host = OriginHost, origin_realm = OriginRealm}}.
   
   -spec idle(Event, From, StateData) -> Result
   	when
  
positive.code: 		service :: tuple() | undefined,
  		hss_realm :: string() | undefined,
  		hss_host :: string() | undefined,
  		nas_host :: string() | undefined,
  		nas_realm :: string() | undefined,
  		nas_address :: inet:ip_address() | undefined,
  		application :: pos_integer() | undefined,
  		request :: #'3gpp_swx_RTR'{},
  		session_id :: string(),
  		session_index :: string() | undefined,
  		from :: {pid(), reference()} | undefined}).
  -type statedata() :: #statedata{}.
  
  
negative.code: %% @@see //stdlib/gen_fsm:StateName/3
  %% @private
  %%
  idle(#'3gpp_swx_RTR'{'User-Name' = [Identity],
  		'Origin-Realm' = HssRealm, 'Origin-Host' = HssHost,
  		'Deregistration-Reason' = #'3gpp_swx_Deregistration-Reason'{
  				'Reason-Code' = ReasonCode,
  				'Reason-Info' = ReasonInfo}} = Request,
  		From, #statedata{session_id = SessionId} = StateData) ->
  	[IMSI | _] = binary:split(Identity, <<$@>>, []),
  	NewStateData = StateData#statedata{request = Request,
  			from = From, imsi = IMSI, identity = Identity,
  			hss_realm = HssRealm, hss_host = HssHost},
  	F = fun() ->
  			Sessions = mnesia:index_read(session, IMSI, #session.imsi),
  			lists:foreach(fun(S) -> mnesia:delete_object(S) end, Sessions),
  			Sessions
  	end,
  	case mnesia:transaction(F) of
  		{atomic, []} ->
  			ResultCode = ?'DIAMETER_BASE_RESULT-CODE_UNKNOWN_SESSION_ID',
  			Reply = response(ResultCode, StateData),
  			{stop, shutdown,  Reply, StateData};
  		{atomic, Sessions}
  				when ReasonCode =:= ?'3GPP_SWX_REASON-CODE_PERMANENT_TERMINATION' ->
  			ResultCode = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS',
  			gen_fsm:reply(From, response(ResultCode, StateData)),
  			send_abort(Sessions, NewStateData);
  		{atomic, _Sessions}
  				when ReasonCode =:= ?'3GPP_SWX_REASON-CODE_NEW_SERVER_ASSIGNED' ->
  			ResultCode = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS',
  			Reply = response(ResultCode, StateData),
  			{stop, shutdown,  Reply, StateData};
  		{aborted, Reason} ->
  			error_logger:error_report(["Failed user lookup",
  					{hss_host, HssHost}, {hss_realm, HssRealm},
  					{imsi, IMSI}, {identity, Identity},
  					{reason_info, ReasonInfo}, {session, SessionId},
  					{error, Reason}]),
  			ResultCode = ?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY',
  			Reply = response(ResultCode, StateData),
  			{stop, shutdown,  Reply, StateData}
  