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:     cleanup_for_exit(S),
      {stop, shutdown, S}.
  
  handle_info({check_blob_result, LocalObj, Status},
              #state{phase = Phase, num_pending_reqs = NumPendingReqs} = S)
    when Phase =:= build_map;
  
negative.code: 
  %% ===================================================================
  %% gen_server callbacks
  -spec init({string(), ets:tab()}) -> {ok, state()}.
  init({Root, DeletedAges}) ->
      % Ensure only one gc process is running at a time.  We don't use a
      % named process to implement uniqueness so that our message queue
  