anchor.diff:          ],
       [upgrade_config_testgen(I, C, E) || {I,C,E} <- T].
   
  +upgrade_config_vclocks_test() ->
  +    Config = #config{dynamic=[[{{node, node(), a}, 1},
  +                               {unchanged, 2},
  +                               {b, 2},
  +                               {{node, node(), c}, attach_vclock(1)}]]},
  +    Changes = [{set, {node, node(), a}, 2},
  +               {set, b, 4},
  +               {set, {node, node(), c}, [3]},
  +               {set, d, [4]}],
  +    Upgrader = fun (_) -> [] end,
  +    UpgradedConfig = do_upgrade_config(Config, Changes, Upgrader),
  +
  +    Get = fun (Config1, K) ->
  +                  {value, Value} = search_raw(Config1, K),
  +                  Value
  +          end,
  +
  +    ?assertMatch([{Node, {_, _}}] when Node =:= node(),
  +                 extract_vclock(Get(UpgradedConfig, {node, node(), a}))),
  +    ?assertMatch([],
  +                 extract_vclock(Get(UpgradedConfig, unchanged))),
  +    ?assertMatch([{Node, {_, _}}] when Node =:= node(),
  +                 extract_vclock(Get(UpgradedConfig, b))),
  +    ?assertMatch([{Node, {_, _}}] when Node =:= node(),
  +                 extract_vclock(Get(UpgradedConfig, {node, node(), c}))),
  +    ?assertMatch([{Node, {_, _}}] when Node =:= node(),
  +                 extract_vclock(Get(UpgradedConfig, d))).
   
   upgrade_config_with_many_upgrades_test_() ->
       {spawn, ?_test(test_upgrade_config_with_many_upgrades())}.
  
positive.code:     UpgradedConfig = do_upgrade_config(Config,
                                         Changes,
                                         Upgrader),
      ?assertEqual(lists:sort(ExpectedList),
                   lists:sort(config_dynamic(UpgradedConfig))).
  
  upgrade_config_testgen(InitialList, Changes, ExpectedList) ->
      Title = iolist_to_binary(io_lib:format("~p + ~p = ~p~n", [InitialList, Changes, ExpectedList])),
  
negative.code:             [{?METADATA_VCLOCK, NewVClock} | strip_metadata(NewValue)]
      end.
  
  attach_vclock(Value) ->
      VClock = lists:sort(vclock:increment(node(), vclock:fresh())),
      [{?METADATA_VCLOCK, VClock} | strip_metadata(Value)].
  
  %% gen_server callbacks
  
  upgrade_config(Config) ->
  