@Override
          public void run(@NotNull ProgressIndicator indicator) {
            indicator.setIndeterminate(false);
            int total = selectedGroups.stream().mapToInt(g -> g.entriesToDelete).sum();
            var errors = new ArrayList<String>();

            for (var group : selectedGroups) {
              for (var directory : group.directories) {
                indicator.checkCanceled();
                indicator.setText(directory.toString());
                if (myLogger.isDebugEnabled()) myLogger.debug("deleting " + directory);
                currentRoot = directory;
                try {
                  NioFiles.deleteRecursively(directory, p -> {
                    indicator.checkCanceled();
                    indicator.setFraction((double)(progress++) / total);
                    indicator.setText2(currentRoot.relativize(p).toString());
                  });
                }
                catch (IOException e) {
                  myLogger.info(e);
                  errors.add(directory + " (" + IoErrorText.message(e) + ')');
                }
              }
            }

            if (!errors.isEmpty()) {
              @NlsSafe var content = String.join("<br>", errors);
              NotificationGroupManager.getInstance().getNotificationGroup("leftover.ide.directories")
                .createNotification(message("old.dirs.delete.error"), content, NotificationType.WARNING)
                .addAction(ShowLogAction.notificationAction())
                .notify(project);
            }
          }
@Override
          public void run(@NotNull ProgressIndicator indicator)