anchor.diff:                                            fun(_, _) -> [node1, node2] end),
                                       equivalent_coverage(
                                         913438523331814323877303020447676887284957839360,
  -                                      {NewVnodes, NewFilters},
  +                                      NewFilters,
                                         3, CHBin) andalso
                                           %% Make sure none of the new
                                           %% vnodes live on our "down"
  
positive.code:     CHash = chash_init(),
      chashbin:create(CHash).
  
  test_replace_traditional2(CHBin) ->
      %% Unlike test_replace_traditional, this function will iterate
      %% through through N request IDs. Seems like an obvious place to
  
negative.code:                                                      end, NewVnodes)
                    end, lists:seq(0, 2))).
  
  equivalent_coverage(OldVNode, NewFilters, NVal, CHBin) ->
      RingSize = chashbin:num_partitions(CHBin),
      PartitionSize = chash:ring_increment(RingSize),
      OldFilters = test_vnode_to_filters(OldVNode, NVal, RingSize, PartitionSize),
      equivalent_coverage(OldFilters, NewFilters).
  
  equivalent_coverage(OldFilters, NewFilters) ->
      %% This logic relies on the fact that all of the new vnodes must
      %% have an explicit filter list since we're replacing a full vnode
      %% and there is no other vnode which has exactly the same
      %% partitions
      ConsolidatedFilters = lists:foldl(
                              fun({_VNode, FilterList}, Acc) -> Acc ++ FilterList end,
                              [],
                              NewFilters),
      lists:sort(OldFilters) == lists:sort(ConsolidatedFilters).
  
  test_vnode_to_filters(Index, NVal, RingSize, PartitionSize) ->
      lists:map(fun(N) -> (((Index div PartitionSize) + (RingSize - N)) rem RingSize) * PartitionSize end,
  