anchor.diff:           end,               
      ok = lists:foreach(Del, ToDel),
      {noreply, State};
  +handle_cast({touch, DocId, InPathId, Steps}, #{tab := Tab} = State) ->
  +   Key = {DocId, InPathId, Steps},
  +   _ = case ets:lookup(Tab, Key) of
  +      [] ->
  +         undefined;
  +      [{_, undefined, _}] ->
  +         undefined;
  +      [{_, _, _}] ->
  +         Now = expire(),
  +         ets:update_element(Tab, Key, {3, Now})
  +   end,
  +   {noreply, State};
   handle_cast(_Msg, State) ->
      {noreply, State}.
   
  
positive.code:          _ = erlang:put(Key, Val),
           Val;
        V ->
           gen_server:call(Server, {touch, DocId, InPathId, Steps}),
           V
     end.
  
  
negative.code: %% ====================================================================
  
  init([]) ->
     Tab = ets:new(?MODULE, [public]),
     {ok, #{tab => Tab}}.
  
  
  handle_call({put, DocId, InPathId, Steps, Results}, _, #{tab := Tab} = State) ->
     Key = {DocId, InPathId, Steps},
     Now = expire(),
  