@Override
  public void moveFile(Object requestor, @NotNull VirtualFile file, @NotNull VirtualFile newParent) throws IOException {
    var name = file.getName();
    if (!file.exists()) {
      throw new IOException(IdeCoreBundle.message("vfs.file.not.exist.error", file.getPath()));
    }
    if (file.getParent() == null) {
      throw new IOException(CoreBundle.message("cannot.rename.root.directory", file.getPath()));
    }
    if (!newParent.exists() || !newParent.isDirectory()) {
      throw new IOException(IdeCoreBundle.message("vfs.target.not.directory.error", newParent.getPath()));
    }
    if (newParent.findChild(name) != null) {
      throw new IOException(IdeCoreBundle.message("vfs.target.already.exists.error", newParent.getPath() + "/" + name));
    }

    if (!auxMove(file, newParent)) {
      var nioFile = convertToNioFileAndCheck(file, false);
      var nioTarget = convertToNioFileAndCheck(newParent, false).resolve(nioFile.getFileName());
      try {
        Files.move(nioFile, nioTarget, StandardCopyOption.ATOMIC_MOVE);
      }
      catch (AtomicMoveNotSupportedException e) {
        Files.move(nioFile, nioTarget);
      }
    }

    auxNotifyCompleted(handler -> handler.move(file, newParent));
  }
@Override
  public void moveFile(Object requestor, @NotNull VirtualFile file, @NotNull VirtualFile newParent)