anchor.diff:  %% @impure
   %%
   %% @doc Repair any vnodes that do not have the correct object.
  +
  +%% I giveup :/
  +-dialyzer({nowarn_function, repair/4}).
  +
   repair(_, _, _, []) -> ok;
  -
  -repair(Time, {Bkt, {Met, _}} = MetAndTime, MObj, [{IdxNode, Obj}|T]) ->
  +repair(_, _, not_found, _) -> ok;
  +repair(_, _, Events, _) when is_list(Events) -> ok;
  +repair(Time, {Bkt, {Met, _}} = MetAndTime, {_, Data} = MObj, [{IdxNode, Obj}|T])
  +  when not is_list(Obj)->
       case MObj == Obj of
           true ->
               repair(Time, MetAndTime, MObj, T);
           false ->
  -            {_, Data} = MObj,
               metric_vnode:repair(IdxNode, {Bkt, Met}, {Time, Data}),
               repair(Time, MetAndTime, MObj, T)
       end.
  
positive.code:                 _ ->
  
                      metric_vnode:Op(Prelist, ReqId, {Bucket, Metric}, Val)
              end,
              {next_state, waiting, SD0};
          {Bucket, _Time} ->
              case Val of
                  undefined ->
                      event_vnode:Op(Prelist, ReqId, Bucket);
                  _ ->
                      event_vnode:Op(Prelist, ReqId, Bucket, Val)
              end,
              {next_state, waiting, SD0#state{type=event}}
      end.
  
  %% @doc Wait for R replies and then respond to From (original client
  %% that called `get/2').
  
negative.code: %%%===================================================================
  %%% Internal Functions
  %%%===================================================================
  -spec merge(state(), [E]) -> E.
  merge(#state{system = event}, Events) ->
      merge_events(Events);
  merge(#state{system = metric}, Metrics) ->
  