anchor.diff:                      read_value :: any()                         %% value returned frm read request
                      }).
   
  --type replies() :: gen_replies() | #rr_replies{} | #r_replies{}.
  +%% Aggregator for write replies.
  +-record(w_replies, {ack_count :: non_neg_integer(),             %% number of ack reveiced
  +                    deny_count :: non_neg_integer(),            %% number of denies received
  +                    highest_write_round :: pr:pr()              %% highest write round reveiced
  +                   }).
  +
  +-type replies() :: gen_replies() | #rr_replies{} | #r_replies{} | #w_replies{}.
   
   -type entry() :: {any(), %% ReqId
                     any(), %% debug field
  
positive.code: add_read_deny(Entry, _DBSelector, _MyRound, LargerRound, _Cons) ->
      {retry, entry_set_my_round(Entry, LargerRound)}.
  
  -spec add_write_reply(replies(), pr:pr(), Consistency::boolean())
                       -> {Done::boolean(), replies()}.
  add_write_reply(Replies, Round, _Cons) ->
      RepliesMaxWriteR = replies_max_write_r(Replies),
      RepliesRoundCmp = {pr:get_r(RepliesMaxWriteR), pr:get_id(RepliesMaxWriteR)},
      RoundCmp = {pr:get_r(Round), pr:get_id(Round)},
      R1 =
  
negative.code:             false -> Replies;
              true ->
                  %% reset rack and store newer round
                  OldAcks = Replies#w_replies.ack_count,
                  OldDenies = Replies#w_replies.deny_count,
                  Replies#w_replies{highest_write_round=Round,
                                    ack_count=0,
                                    deny_count=OldAcks+OldDenies}
          end,
      NewDenyCount = R1#w_replies.deny_count + 1,
      R2 = R1#w_replies{deny_count=NewDenyCount},
      Done = ?REDUNDANCY:quorum_denied(NewDenyCount),
      {Done, R2}.
  
  -spec inform_client(qread_done | qwrite_done, entry(), any()) -> ok.
  