anchor.diff:      {noreply, State}.
   
   %%--------------------------------------------------------------------
  -%% Function: terminate/2
  -%% Description: Shutdown the server
  -%% Returns: any (ignored by gen_server)
  -%%--------------------------------------------------------------------
  -terminate(_Reason, _State) ->
  -    ok.
  -
  -%%--------------------------------------------------------------------
  -%% Func: code_change/3
  -%% Purpose: Convert process state when code is changed
  -%% Returns: {ok, NewState}
  +%% Function: terminate(Reason, State)
  +%%           Reason = term()
  +%% Descrip.: Shutdown the server
  +%% Returns : any (ignored by gen_server)
  +%%--------------------------------------------------------------------
  +terminate(Reason, _State) ->
  +    Reason.
  +
  +%%--------------------------------------------------------------------
  +%% Function: code_change(OldVsn, State, Extra)
  +%% Descrip.: Convert process state when code is changed
  +%% Returns : {ok, NewState}
   %%--------------------------------------------------------------------
   code_change(_OldVsn, State, _Extra) ->
       {ok, State}.
   
   %%--------------------------------------------------------------------
   %%% Internal functions
  +%%--------------------------------------------------------------------
  +
  +%%--------------------------------------------------------------------
  +%% Function: read_userdb(State, MTime, Caller)
  +%%           State  = state record()
  +%%           MTime  = integer(), file modification time
  +%%           Caller = atom(), who is calling us (init | cast | info)
  +%% Descrip.: (Re-)load the user database. 
  +%% Returns : State           |
  +%%           {error, Reason}
   %%--------------------------------------------------------------------
   read_userdb(State, MTime, Caller) when is_record(State, state) ->
       logger:log(debug, "sipuserdb_file: (Re-)Loading userdb from file ~p", [State#state.fn]),
  
positive.code:     E = io_lib:format("bad data in user record (name ~p) : ~p", [U#user.name, H]),
      {error, E}.
  
  parse_address([], A) ->
      A;
  parse_address([{user, V} | T], A) when is_record(A, address) ->
      parse_address(T, A#address{user=V});
  
negative.code: parse_address([H | _T], A) when is_record(A, address) ->
      E = io_lib:format("bad data in address record (user ~p) : ~p", [A#address.user, H]),
      {error, E}.
  