anchor.diff:                              StateData#conv_state.actor_pid]),
     {noreply, StateData}.
   
  -
  -% Module:handle_call(Request, From, State) -> Result
  -% Result = {reply,Reply,NewState} | {reply,Reply,NewState,Timeout}
  -%  | {reply,Reply,NewState,hibernate}
  -%  | {noreply,NewState} | {noreply,NewState,Timeout}
  -%  | {noreply,NewState,hibernate}
  -%  | {stop,Reason,Reply,NewState} | {stop,Reason,NewState}
  -%
   
   % Synchronous messages:
   %  * Invitation
  
positive.code:               protocol_role_map=ProtocolRoleMap, % Roles for each protocol
                monitors=orddict:new(), % Monitors for each role we play in each protocol
                current_protocol=undefined}. % The currently-active protocol.
  
  
  % TODO: Change this
  freshen_state(OldState) ->
    ActorPid = OldState#conv_state.actor_pid,
    ActorTypeName = OldState#conv_state.actor_type_name,
    ProtocolRoleMap = OldState#conv_state.protocol_role_map,
    fresh_state(ActorPid, ActorTypeName, ProtocolRoleMap).
  
  % Initialises the basic monitor state with some default values.
  init([ActorPid, ActorTypeName, ProtocolRoleMap]) ->
  
negative.code:       {reply, {error, Err}, StateData}
    end.
  
  % Handle termination of a conversation -- remove from the conversation
  handle_terminate_conversation(ConversationID, State) ->
    ActorName = State#conv_state.actor_type_name,
    ActorPID = State#conv_state.actor_pid,
    ActiveProtocols = State#conv_state.active_protocols,
    NewActiveProtocols = bidirectional_map:remove_right(ConversationID, ActiveProtocols),
    NewState = State#conv_state{active_protocols=NewActiveProtocols},
    error_logger:info_msg("INFO: Actor ~w with PID ~p exiting conversation ~p.~n",
                         [ActorName, ActorPID, ConversationID]),
  