anchor.diff:  handle_call(dbg_get_state, _, S) ->
       {reply, S, S}.
   
  +-type gc_status_msg()     :: {gc_status, pid()}.
  +-type retry_node_msg()    :: {retry_node, node()}.
  +-type build_map_msg()     ::  {build_map, [tagname()]}.
  +-type gc_done_msg()       :: {gc_done, node(), gc_run_stats()}.
  +-type rr_blob_msg()       :: {rr_blob, term()}.
  +-type add_replicas_msg()  :: {add_replicas, object_name(), [url()]}.
  +-type rr_tags_msg()       :: {rr_tags, [tagname()]}.
  +
  +-spec handle_cast(gc_status_msg() | retry_node_msg() | build_map_msg()
  +                  | gc_done_msg() | rr_blob_msg()    | add_replicas_msg()
  +                  | rr_tags_msg(),
  +                  state()) -> {noreply, state()}
  +                                  | {stop, stop_requested | shutdown, state()}.
   handle_cast({gc_status, From}, #state{phase = P} = S) when is_pid(From) ->
       From ! {ok, P},
       {noreply, S};
  
positive.code: %% ===================================================================
  %% gen_server callback stubs
  
  terminate(_Reason, _S) -> ok.
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  format_status(_Opt, [_PDict, S]) ->
      [{data, [{"State", [{phase, S#state.phase}]}]}].
  
  
negative.code:     gen_server:cast(self(), start),
      {ok, State}.
  
  -type is_orphan_msg() :: {is_orphan, object_type(), object_name(),
                            node(), volume_name()}.
  -spec handle_call(is_orphan_msg(), from(), state()) -> {reply, boolean(), state()};
                   (dbg_state_msg(), from(), state()) -> {reply, state(), state()}.
  handle_call({is_orphan, Type, ObjName, Node, Vol}, _, S) ->
      S1 = S#state{last_response_time = now()},
      {reply, check_is_orphan(S, Type, ObjName, Node, Vol), S1};
  