anchor.diff:      {ok, file_ctx:new_by_guid(Guid)}.
   
   
  +%% @private
   -spec report_error(id(), file_id:file_guid(), archive:doc(), term(), list()) -> ok.
   report_error(TaskId, FileGuid, ArchiveDoc, Reason, Stacktrace) ->
       {ok, ArchiveId} = archive:get_id(ArchiveDoc),
  
positive.code: %%% Internal functions
  %%%===================================================================
  
  -spec do_dir_master_job(tree_traverse:master_job(), traverse:master_job_extended_args()) -> 
      {ok, traverse:master_job_map()}.
  do_dir_master_job(#tree_traverse{
  
negative.code:         _ ->
              {TargetRootName, StartFileCtx}
      end,
      {StartFileDoc, StartFileCtx2} = file_ctx:get_file_doc(StartFileCtx1),
      {ok, SpaceId} = archive:get_space_id(ArchiveDoc),
      {IsDir, StartFileCtx3} = file_ctx:is_dir(StartFileCtx2),
      case archive_recall_cache:get(SpaceId, StartFileDoc) of
          {ok, {ongoing, _}} -> 
              ?ERROR_POSIX(?EBUSY);
          _ ->
              case create_root_file(IsDir, user_ctx:get_session_id(UserCtx), TargetParentGuid, FinalName) of
                  {ok, RootFileGuid} ->
                      {RootPath, _} = file_ctx:get_canonical_path(file_ctx:new_by_guid(RootFileGuid)),
                      [_Sep, _SpaceId | RootPathTokens] = filename:split(RootPath),
                      TraverseInfo = #{
                          archive_doc => ArchiveDoc,
                          current_parent => TargetParentGuid,
                          root_path_tokens => RootPathTokens,
                          root_file_name => FinalName
                      },
                      setup_recall_traverse(
                          SpaceId, ArchiveDoc, RootFileGuid, TraverseInfo, StartFileCtx3, UserCtx),
                      {ok, RootFileGuid};
                  {error, eexist} ->
                      ?ERROR_ALREADY_EXISTS;
                  {error, Reason} ->
                      ?ERROR_POSIX(Reason)
              end
      
      end.
  
  
  