anchor.diff:  %% cited in 'LICENSE.txt'.
   %% @end
   %% ===================================================================
  -%% @doc: Write me !
  +%% @doc: This module provides convenience methods that helps with managing #file{} record.
  +%%       It also provides some abstract getters/setters for some #file{} record in case further changes.
   %% @end
   %% ===================================================================
   -module(fslogic_file).
  
positive.code: %% normalize_file_type/2
  %% ====================================================================
  %% @doc Translates given file type into internal or protocol representation
  %%      (types file_type() and file_type_protocol() respectively)
  -spec normalize_file_type(protocol | internal, file_type() | file_type_protocol()) -> file_type() | file_type_protocol().
  %% ====================================================================
  normalize_file_type(protocol, ?DIR_TYPE) ->
  
negative.code: %% API functions
  %% ====================================================================
  
  %% get_file_owner/1
  %% ====================================================================
  %% @doc Fetches owner's username and UID for given file.
  %%      Returns {"", -1} on error.
  -spec get_file_owner(File :: file_doc() | file_info() | file()) -> Owner | Error when
      Owner :: {Login :: string(), UID :: integer()} |
      Error :: {[], -1}.
  %% ====================================================================
  get_file_owner(#file{} = File) ->
      case user_logic:get_user({uuid, File#file.uid}) of
          {ok, #veil_document{record = #user{}} = UserDoc} ->
  