anchor.diff:  
   -define(SERVER, ?MODULE).
   
  --record(state, {session_id :: session:id()}).
  +-record(state, {
  +    session_id :: session:id(),
  +    status :: status(),
  +    callback :: binary(),
  +    path :: file_meta:path(),
  +    target_provider_id :: oneprovider:id()
  +}).
   
   %%%===================================================================
   %%% API
  
positive.code:     {noreply, NewState :: #state{}} |
      {noreply, NewState :: #state{}, timeout() | hibernate} |
      {stop, Reason :: term(), NewState :: #state{}}.
  handle_cast(_Request, State) ->
      ?log_bad_request(_Request),
      {noreply, State}.
  
negative.code:     {ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} |
      {stop, Reason :: term()} | ignore.
  init([SessionId, FileEntry, ProviderId, Callback]) ->
      Server = self(),
      spawn(fun() ->
          try
              gen_server:cast(Server, transfer_active),
              ok = onedata_file_api:replicate_file(SessionId, FileEntry, ProviderId),
              gen_server:cast(Server, transfer_completed)
          catch
              _:E ->
                  gen_server:cast(Server, transfer_failed),
                  ?error_stacktrace("Could not replicate file ~p due to ~p", [FileEntry, E])
          end
      end),
      FilePath =
          case FileEntry of
              {path, Path} ->
                  Path;
              {guid, Guid} ->
                  {ok, Path} = onedata_file_api:get_file_path(SessionId, Guid),
                  Path
          end,
      {ok, #state{session_id = SessionId, status = scheduled, callback = Callback,
          path = FilePath, target_provider_id = ProviderId}}.
  
  %%--------------------------------------------------------------------
  %% @private
  