anchor.diff:  %%      return match | {bad_state_match, Node, NodesThatDontMatch}
   compare_state_with_rest(#mem{clock=Clock} = _State, States) ->
       Results = lists:map(fun({Node, #mem{clock=Clock1}}) ->
  -        {vector_clock:equals(Clock, Clock1), Node}
  +        {mem3_vclock:equals(Clock, Clock1), Node}
       end, States),
       BadResults = lists:foldl(fun({true, _N}, AccIn) -> AccIn;
                                   ({false, N}, AccIn) -> [N | AccIn]
  
positive.code: 
  merge_states(#mem{clock=RemoteClock, nodes=RemoteNodes} = _RemoteState,
               #mem{clock=LocalClock, nodes=LocalNodes} = LocalState) ->
      MergedClock = vector_clock:merge(RemoteClock, LocalClock),
      MergedNodes = merge_nodes(RemoteNodes, LocalNodes),
      LocalState#mem{clock=MergedClock, nodes=MergedNodes}.
  
  
negative.code: 
  
  %% @doc handle the gossip messages
  %%      We're not using mem3_vclock:resolve b/c we need custom merge strategy
  handle_gossip(From, RemoteState=#mem{clock=RemoteClock},
                LocalState=#mem{clock=LocalClock}) ->
      case mem3_vclock:compare(RemoteClock, LocalClock) of
      equal ->
          {reply, ok, LocalState};
      less ->
  