anchor.diff:  
   -type queue_key()        :: {Src :: comm:mypid(), Dest :: comm:mypid()}.
   -type delay_queue_key()  :: {Dest :: comm:mypid()}.
  --type msg_queues()       :: [{queue_key(), queue()}].
  --type msg_delay_queues() :: [{delay_queue_key(), queue()}].
  +-type msg_queues()       :: [queue_key()].
  +-type msg_delay_queues() :: [delay_queue_key()].
   
   -record(state,
           {msg_queues              = ?required(state, msg_queues)
  
positive.code:         (queue_key(), {local | global, comm:message()}, msg_queues()) -> msg_queues().%;
          %(delay_queue_key(), comm:message(), msg_delay_queues()) -> msg_delay_queues().
  add_to_list_of_queues(Key, M, Queues) ->
      case lists:keyfind(Key, 1, Queues) of
          {_, Queue} ->
              Tuple = {Key, queue:in(M, Queue)},
              lists:keyreplace(Key, 1, Queues, Tuple);
          false ->
              Q = queue:from_list([M]),
              [{Key, Q} | Queues]
      end.
  
  -spec update_queue_in_list_of_queues
  
negative.code:                                  Possibilities::pos_integer(),
                                   state_t()}.
  pop_random_message(#state{msg_queues = OldQueues} = State) ->
      {{Src, Dest} = Key, Len} = util:randomelem_and_length(OldQueues),
      Q = erlang:get(Key),
      {{value, {LorG, M}}, Q2} = queue:out(Q),
      NewQueues = update_queue_in_list_of_queues(Key, Q2, OldQueues),
      State2 = State#state{msg_queues = NewQueues},
  