anchor.diff:  
   %% See riak_kv_ensemble_router:random for justification
   random(N) ->
  -    erlang:phash2(erlang:statistics(io), N) + 1.+    erlang:phash2(erlang:statistics(io), N) + 1.
  +
  +
  +do_put(ReqId, Rec, #state{entries=Entries} = State) ->
  +    case do_get(ReqId, State) of
  +        undefined ->
  +            {undefined, State#state{entries=?DICT_TYPE:store(ReqId, Rec, Entries)}};
  +        OldValue ->
  +            {OldValue, State#state{entries=?DICT_TYPE:store(ReqId, Rec, Entries)}}
  +    end.
  +
  +do_get(ReqId, #state{entries=Entries} = _State) ->
  +    case ?DICT_TYPE:find(ReqId, Entries) of
  +        {ok, Value} -> Value;
  +        error -> undefined
  +    end.
  +
  +do_erase(ReqId, #state{entries=Entries} = State) ->
  +    case do_get(ReqId, State) of
  +        undefined ->
  +            {undefined, State};
  +        OldValue ->
  +            {OldValue, State#state{entries=?DICT_TYPE:erase(ReqId, Entries)}}
  +    end.
  
positive.code: %%%===================================================================
  
  init(_) ->
      {ok, dummy}.
  
  handle_call(_Request, _From, State) ->
      {reply, undefined, State}.
  
  handle_cast({put, RObj, ReqId, Preflist, #rec{from=From}=Rec}, State) ->
      case erlang:put(ReqId, Rec) of
          undefined ->
              [begin
                   Proxy = riak_core_vnode_proxy:reg_name(riak_kv_vnode, Idx),
                   {Proxy, Node} ! {ts_put, self(), RObj, ReqId, Type},
                   ok
               end || {{Idx, Node}, Type} <- Preflist];
          _AlreadyDefined ->
              reply(From, ReqId, {error, request_id_already_defined})
      end,
      {noreply, State};
  handle_cast({cancel, ReqId}, State) ->
      case erlang:erase(ReqId) of
          undefined ->
              ok;
          #rec{from=From} ->
              reply(From, ReqId, {error, timeout})
      end,
      {noreply, State};
  handle_cast(_Msg, State) ->
      {noreply, State}.
  
  handle_info({ts_reply, ReqId, _Reply, Type}, State) ->
      case erlang:get(ReqId) of
          undefined->
              % the entry was likely purged by the timeout mechanism
              {noreply, State};
  
negative.code:     primaries = 0,
      total = 0,
      from
  }).
  
  -define(DICT_TYPE, dict).
  
  -record(state, {
      entries = ?DICT_TYPE:new()
  }).
  
  -define(DEFAULT_TIMEOUT, 60000).
  