anchor.diff:  -spec rename_interprovider(fslogic_worker:ctx(), fslogic_worker:file(),
       file_meta:path()) -> #fuse_response{} | no_return().
   rename_interprovider(#fslogic_ctx{session_id = SessId}, SourceEntry, LogicalTargetPath) ->
  -    {ok, SourcePath} = file_meta:gen_path(SourceEntry),
  +    {ok, SourcePath} = fslogic_path:gen_path(SourceEntry, SessId),
       {ok, SourceParent} = file_meta:get_parent(SourceEntry),
       SourcePathTokens = filename:split(SourcePath),
       TargetPathTokens = filename:split(LogicalTargetPath),
   
       for_each_child_file(SourceEntry,
           fun(Entry) ->
  -            {ok, OldPath} = file_meta:gen_path(Entry),
  +            {ok, OldPath} = fslogic_path:gen_path(Entry, SessId),
               OldTokens = filename:split(OldPath),
               NewTokens = TargetPathTokens ++ lists:sublist(OldTokens, length(SourcePathTokens) + 1, length(OldTokens)),
               NewPath = fslogic_path:join(NewTokens),
  
positive.code: %%--------------------------------------------------------------------
  -spec get_canonical_path(fslogic_worker:ctx(), file_meta:path()) ->
      file_meta:path().
  get_canonical_path(CTX, Path) ->
      {ok, Tokens} = fslogic_path:verify_file_path(Path),
      CanonicalFileEntry = fslogic_path:get_canonical_file_entry(CTX, Tokens),
      {ok, CanonicalPath} = file_meta:gen_path(CanonicalFileEntry),
      CanonicalPath.
  
  
  
negative.code:             for_each_child_file(SourceEntry,
                  fun
                      (#document{value = #file_meta{type = ?REGULAR_FILE_TYPE}} = File) ->
                          %% TODO: get all snapshots:
                          FileSnapshots = [File],
                          lists:foreach(
  