public static void doMove(Project project, PsiElement @NotNull [] elements, PsiElement targetContainer, DataContext dataContext, MoveCallback callback) {
    if (elements.length == 0) return;

    try (var ignored = SlowOperations.startSection(SlowOperations.ACTION_PERFORM)) {
      if (DumbService.isDumb(project)) {
        MoveFilesOrDirectoriesHandler filesOrDirectoriesHandler = MoveHandlerDelegate.EP_NAME.findExtensionOrFail(MoveFilesOrDirectoriesHandler.class);
        if (filesOrDirectoriesHandler.canMove(elements, targetContainer, null)) {
          int copyDumb = Messages.showYesNoDialog(project,
                                                  RefactoringBundle.message("move.handler.is.dumb.during.indexing"),
                                                  getRefactoringName(), Messages.getQuestionIcon());
          if (copyDumb == Messages.YES) {
            logDelegate(project, filesOrDirectoriesHandler, elements[0].getLanguage());
            filesOrDirectoriesHandler.doMove(project, elements, filesOrDirectoriesHandler.adjustTargetForMove(dataContext, targetContainer), callback);
          }
        }
      }
      else {
        for (MoveHandlerDelegate delegate : MoveHandlerDelegate.EP_NAME.getExtensionList()) {
          if (delegate.canMove(elements, targetContainer, null)) {
            logDelegate(project, delegate, elements[0].getLanguage());
            delegate.doMove(project, elements, delegate.adjustTargetForMove(dataContext, targetContainer), callback);
            break;
          }
        }
      }
    }
  }
public static void doMove(Project project, PsiElement @NotNull [] elements, PsiElement targetContainer, DataContext dataContext, MoveCallback callback)