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:       {reply, {error, Err}, StateData}
    end.
  
  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),
    NewState = State#conv_state{active_protocols=NewActiveProtocols},
    error_logger:info_msg("INFO: Actor ~w with PID ~p exiting conversation ~p.~n",
                         [ActorName, ActorPID, ConversationID]),
  
negative.code:   ProtocolRoleMap = StateData#conv_state.protocol_role_map,
    CurrentProtocol = StateData#conv_state.current_protocol,
    % TODO: Set CurrentProtocol if it is undefined
    ConversationProtocolResult = bidirectional_map:fetch_right(ConversationID, ActiveProtocols),
    case ConversationProtocolResult of
      {ok, ProtocolName} when CurrentProtocol == ProtocolName ->
        CurrentRole = orddict:fetch(ProtocolName, ProtocolRoleMap),
  