anchor.diff:      {noreply, S#state{gc_stats = {Stats, now()}}};
   
   handle_cast({update_tag_cache, TagCache}, S) ->
  -    {noreply, S#state{tag_cache = TagCache}};
  +    {noreply, S#state{tag_cache = {true, TagCache}}};
   
   handle_cast(refresh_tag_cache, #state{cache_refresher = Refresher} = S) ->
       Refresher ! refresh,
  
positive.code: -type node_info() :: {node(), {non_neg_integer(), non_neg_integer()}}.
  -type gc_stats() :: none | gc_run_stats().
  
  -record(state, {tags      = gb_trees:empty() :: gb_tree(),
                  tag_cache = false            :: false | gb_set(),
                  cache_refresher              :: pid(),
  
                  nodes             = []                :: [node_info()],
                  write_blacklist   = []                :: [node()],
  
negative.code: 
  -spec do_tag_request(term(), tagname(), replyto(), state()) ->
                              state().
  do_tag_request(M, Tag, From, #state{tags = Tags, tag_cache = {Valid, Cache}} = S) ->
      {Pid, TagsN} = get_tag_pid(Tag, Tags, {Valid, Cache}),
      gen_server:cast(Pid, {M, From}),
      case Valid of
          true -> S#state{tags = TagsN, tag_cache = {true, gb_sets:add(Tag, Cache)}};
          false -> S#state{tags = TagsN}
      end.
  
  -spec do_tag_notify(term(), tagname(), state()) -> state().
  do_tag_notify(M, Tag, #state{tags = Tags, tag_cache = {Valid, Cache}} = S) ->
      {Pid, TagsN} = get_tag_pid(Tag, Tags, {Valid, Cache}),
      gen_server:cast(Pid, {notify, M}),
      case Valid of
          true -> S#state{tags = TagsN, tag_cache = {true, gb_sets:add(Tag, Cache)}};
          false -> S#state{tags = TagsN}
      end.
  
  -spec do_update_nodes(nodes_update(), state()) -> state().
  do_update_nodes(NewNodes, #state{nodes = Nodes, tags = Tags} = S) ->
  