anchor.diff:  %%--------------------------------------------------------------------
   -spec rename_trivial(fslogic_worker:ctx(), fslogic_worker:file(),
       file_meta:path()) -> #fuse_response{} | no_return().
  -rename_trivial(CTX, SourceEntry, TargetPath) ->
  -    rename_interspace(CTX, SourceEntry, TargetPath).
  +rename_trivial(CTX, SourceEntry, LogicalTargetPath) ->
  +    rename_interspace(CTX, SourceEntry, LogicalTargetPath).
   
   %%--------------------------------------------------------------------
   %% @doc Renames file within one provider.
   %%--------------------------------------------------------------------
   -spec rename_interspace(fslogic_worker:ctx(), fslogic_worker:file(),
       file_meta:path()) -> #fuse_response{} | no_return().
  -rename_interspace(CTX, SourceEntry, TargetPath) ->
  +rename_interspace(CTX, SourceEntry, LogicalTargetPath) ->
       {ok, SourcePath} = file_meta:gen_path(SourceEntry),
       {ok, SourceParent} = file_meta:get_parent(SourceEntry),
  -    CanonicalTargetPath = get_canonical_path(CTX, TargetPath),
  +    CanonicalTargetPath = get_canonical_path(CTX, LogicalTargetPath),
       {_, TargetParentPath} = fslogic_path:basename_and_parent(CanonicalTargetPath),
       SourceSpaceUUID = get_space_uuid(CTX, SourceEntry),
       TargetSpaceUUID = get_space_uuid(CTX, {path, TargetParentPath}),
  
positive.code: %%--------------------------------------------------------------------
  %% @doc Checks necessary permissions and renames file
  %%--------------------------------------------------------------------
  -spec rename_file(fslogic_worker:ctx(), fslogic_worker:file(), file_meta:path()) ->
      #fuse_response{} | no_return().
  -check_permissions([{?delete_object, {parent, 2}}, {?add_object, {parent, {path, 3}}}]).
  rename_file(CTX, SourceEntry, TargetPath) ->
      case check_reg_preconditions(CTX, SourceEntry, get_canonical_path(CTX, TargetPath)) of
          #fuse_response{status = #status{code = ?OK}} ->
              rename_select(CTX, SourceEntry, TargetPath);
          Error ->
              Error
      end.
  
negative.code:             CommonProvidersSet = ordsets:intersection([TargetProvidersSet, SourceProvidersSet]),
              case ordsets:is_element(oneprovider:get_provider_id(), CommonProvidersSet) of
                  true ->
                      rename_interspace(CTX, SourceEntry, LogicalTargetPath);
                  false ->
                      rename_interprovider(CTX, SourceEntry, LogicalTargetPath)
              end
      end.
  
  