anchor.diff:  
   lookup(Route) ->
   	Path = binary:split(Route, <<".">>, [global]),
  -	do_lookup(null, Path, []).
  +	[ Data || {_, Data} <- do_lookup(null, Path, [])].
   
   do_lookup(_, [], Callbacks) -> Callbacks;
   do_lookup(Parent, [Label], Callbacks) ->
  
positive.code: subpaths(Path) ->
  	{Last, SubPaths} = lists:foldl(fun
  		(El, {null, Paths})->
  			{El, Paths};
  		(El, {Curr, Paths})->
  			{<< El/bits, $., Curr/bits>>, [Curr |Paths]}
  		end,
  		{null, []},
  		lists:reverse(binary:split(Path, <<".">>, [global]))
  	),
  	[Last |SubPaths].
  
  
negative.code: 	{reply, ok, State}.
  
  handle_cast({send, From, Topic, Message}, State) ->
  	[send_event(Message, From, Topic, Rec)|| Rec <- lookup(Topic)],
  	{noreply, State};
  handle_cast(_Msg, State) ->
  	{noreply, State}.
  
  handle_info({'DOWN', Ref, _Type, Subscriber, _Exit}, #{ subscribers := Subs } = State) ->
  	ets:select_delete(?MODULE, [
  		{{'_',Subscriber},[],[true]},
  		{{'_',{Subscriber,'_'}},[],[true]}
  	]),
  	{noreply, State#{ subscribers := Subs -- [{Subscriber, Ref}] }};
  handle_info(_Info, State) ->
  	{noreply, State}.
  