@Override
    public void run() {
      if (myCheckReadOnlyStatus && !checkReadonlyUsages()) return;
      PsiDocumentManager.getInstance(myProject).commitAllDocuments();
      if (myCannotMakeString != null && !myCannotMakeString.isEmpty() && myChangesDetected) {
        String title = UsageViewBundle.message("changes.detected.error.title");
        if (canPerformReRun()) {
          String message = myCannotMakeString + "\n\n" + UsageViewBundle.message("dialog.rerun.search");
          int answer = Messages.showYesNoCancelDialog(myProject, message, title, UsageViewBundle.message("action.description.rerun"),
                                                      UsageViewBundle.message("button.text.continue"),
                                                      UsageViewBundle.message("usage.view.cancel.button"), Messages.getErrorIcon());
          if (answer == Messages.YES) {
            refreshUsages();
            return;
          }
          else if (answer == Messages.CANCEL) {
            return;
          }
          //continue as is
        }
        else {
          Messages.showMessageDialog(myProject, myCannotMakeString, title, Messages.getErrorIcon());
          return;
        }
      }

      try {
        if (myCommandName == null) {
          myProcessRunnable.run();
        }
        else {
          CommandProcessor.getInstance().executeCommand(
            myProject, myProcessRunnable,
            myCommandName,
            null
          );
        }
      }
      finally {
        close();
      }
    }
@Override
    public void run()