code: public boolean renameFile(@NotNull final Transaction txn, @NotNull final File origin, @NotNull final String newPath) {
          final ArrayByteIterable key = StringBinding.stringToEntry(newPath);
          final ByteIterable value = pathnames.get(txn, key);
          if (value != null) {
              return false;
          }
          final File newFile = new File(newPath, origin.getDescriptor(), origin.getCreated(), System.currentTimeMillis());
          pathnames.put(txn, key, newFile.toByteIterable());
          pathnames.delete(txn, StringBinding.stringToEntry(origin.getPath()));
          return true;
      }
docs: Renames {@code origin} file to the specified {@code newPath} and returns {@code true} if the file was actually
  renamed. Otherwise another file with the path {@code newPath} exists. File contents and file descriptor are
  not affected.
  
  @param txn     {@linkplain Transaction} instance
  @param origin  origin {@linkplain File}
  @param newPath new name of the file
  @return {@code true} if the file was actually renamed, otherwise another file with the path {@code newPath} exists
  @see File
  @see File#getDescriptor()