anchor.diff:  -spec round_inc(pr:pr(), any()) -> pr:pr().
   round_inc(Round, ID) ->
       pr:new(pr:get_r(Round)+1, ID).
  +
  +-spec next_read_batching_interval() -> non_neg_integer().
  +next_read_batching_interval() ->
  +    Div = randoms:rand_uniform(0, ?READ_BATCHING_INTERVAL_DIVERGENCE*2 + 1),
  +    ?READ_BATCHING_INTERVAL - ?READ_BATCHING_INTERVAL_DIVERGENCE + Div.
  
positive.code:                   replies()     %% aggregates replies
                   }.
  
  -type replies() :: #w_replies{} | #r_replies{}.
  
  -include("gen_component.hrl").
  
negative.code: -spec start_link(pid_groups:groupname(), pid_groups:pidname(), dht_node_state:db_selector())
                  -> {ok, pid()}.
  start_link(DHTNodeGroup, Name, DBSelector) ->
      {ok, Pid} = gen_component:start_link(?MODULE, fun ?MODULE:on/2, DBSelector,
                               [{pid_groups_join_as, DHTNodeGroup, Name}]),
      case ?READ_BATCHING of
          false -> ok;
          true ->
              comm:send_local_after(next_read_batching_interval(), Pid, {read_batch_trigger})
      end,
      {ok, Pid}.
  
  -spec init(dht_node_state:db_selector()) -> state().
  init(DBSelector) ->
  