anchor.diff:      State3 = inc_s_msg_count(State2, length(Msg)),
       setelement(19, State3, NewList).
   
  --spec last_msg_received(state()) -> [comm:message()].
  +-spec last_msg_received(state()) -> [msg_or_tag()].
   last_msg_received(State) -> element(20, State).
  --spec set_last_msg_received(state(), [comm:message()]) -> state().
  +-spec set_last_msg_received(state(), [msg_or_tag()]) -> state().
   set_last_msg_received(State, Msg) ->
       OldList = last_msg_received(State),
       NumToKeep = erlang:max(?NUM_KEEP - length(Msg), 0),
  
positive.code:     State3 = inc_r_msg_count(State2, length(Msg)),
      setelement(20, State3, NewList).
  
  -spec save_n_msgs([msg_or_tag()] | msg_or_tag(), fun((state(), [msg_or_tag()]) -> state()), state()) -> state().
  save_n_msgs(Msg, SaveFun, State) when is_tuple(Msg) ->
      save_n_msgs([{single, Msg}], SaveFun, State);
  save_n_msgs(Msgs, SaveFun, State) when is_list(Msgs) ->
  
negative.code:     -define(GET_MSG_OR_TAG(Msg), setelement(1, Msg, util:extint2atom(element(1, Msg)))).
  -endif.
  
  -spec get_msg_tag({any(), comm:message()}) -> msg_or_tag().
  get_msg_tag(Msg) ->
      {_Pid, ActualMessage} = Msg,
      ?GET_MSG_OR_TAG(ActualMessage).
  