anchor.diff:  -export([i/0, list/1]).
   -export([subscribe/1, subscribe/2, subscribe/3]).
   -export([unsubscribe/1]).
  +-export([invalidate/2]).
   -export([get_root/2, get_match/3, get/4]).
   
   -include_lib("lager/include/log.hrl").
  
positive.code: 
  %% API
  -export([start_link/0, start_link/1]).
  -export([start/0, start/1, stop/0]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  
negative.code: 	    erlang:demonitor(Ref),
  	    {reply,ok,State#state { sub_list=SubList }}
      end;
  handle_call({invalidate,Name,Fields},_From,State) ->
      case lists:keytake(Name, #link.name, State#state.link_list) of 
  	false -> {reply, {error,enoent}, State};
  	{value,L,Ls} ->
  	    Attr = lists:foldl(
  		     fun(F,D) when is_atom(F) ->
  			     dict:erase(F, D)
  		     end, L#link.attr, Fields),
  	    L1 = L#link { attr = Attr },
  	    {reply, ok, State#state { link_list = [L1|Ls] } }
      end;
  
  handle_call(Req={get,_What,_Fam,_Flags,_Attrs}, From, State) ->
      ?debug("handle_call: GET: ~p", [Req]),
      State1 = enq_request(Req, From, State),
  