anchor.diff:     %io:format("~p~n", [{?LINE, Now}]),
      {reply, ok, State};
      
  -handle_call({get, DocId, InPathId, Steps}, _, #{tab := Tab} = State) ->
  -   Key = {DocId, InPathId, Steps},
  -   Reply = case ets:lookup(Tab, Key) of
  -      [] ->
  -         undefined;
  -      [{_, undefined, _}] ->
  -         undefined;
  -      [{_, T, _}] ->
  -         Now = expire(),
  -         ets:update_element(Tab, Key, {3, Now}),
  -         T
  -   end,
  -   {reply, Reply, State};
  +handle_call({get, DocId, InPathId, Steps}, ReplyTo, #{tab := Tab} = State) ->
  +   Fun = fun() ->
  +               Key = {DocId, InPathId, Steps},
  +               Reply = case ets:lookup(Tab, Key) of
  +                  [] ->
  +                     undefined;
  +                  [{_, undefined, _}] ->
  +                     undefined;
  +                  [{_, T, _}] ->
  +                     Now = expire(),
  +                     ets:update_element(Tab, Key, {3, Now}),
  +                     T
  +               end,
  +               gen_server:reply(ReplyTo, Reply)
  +         end,
  +   _ = erlang:spawn_link(Fun),
  +   {noreply, State};
   handle_call(_Request, _From, State) ->
      Reply = ok,
      {reply, Reply, State}.
  
positive.code:          end,               
     ok = lists:foreach(Del, ToDel),
     {noreply, State};
  handle_cast(_Msg, State) ->
     {noreply, State}.
  
  
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(),
  