anchor.diff:  
   -spec handle_info(timeout, state()) -> gs_noreply_t() | gs_stop(normal);
                    ({reference(), term()}, state()) -> gs_noreply().
  -handle_info(timeout, S) ->
  +handle_info(timeout, #state{tag = TagName} = S) ->
  +    lager:info("tag ~p times out.", [TagName]),
       handle_cast({die, none}, S);
   % handle late replies to "catch gen_server:call"
   handle_info({Ref, _Msg}, S) when is_reference(Ref) ->
  
positive.code: 
  -spec do_delete(replyto(), state()) -> state().
  do_delete(ReplyTo, #state{tag = Tag} = S) ->
      case add_to_deleted(Tag) of
          {ok, _} ->
              gen_server:reply(ReplyTo, ok),
  
negative.code: 
  % callback stubs
  -spec terminate(term(), state()) -> ok.
  terminate(Reason, #state{tag = TagName}) ->
      lager:info("tag ~p dies with reason ~p.", [TagName, Reason]),
      ok.
  
  -spec code_change(term(), state(), term()) -> {ok, state()}.
  code_change(_OldVsn, State, _Extra) -> {ok, State}.
  