private void installPlugin(@NotNull ObsoleteVcs vcs) {
    new Task.Backgroundable(myProject, VcsBundle.message("impl.progress.title.installing.plugin")) {

      @RequiresBackgroundThread
      @Override
      public void run(@NotNull ProgressIndicator indicator) {
        try {
          PluginNode descriptor = MarketplaceRequests.getInstance().getLastCompatiblePluginUpdate(vcs.pluginId, null, indicator);
          if (descriptor != null) {
            PluginDownloader downloader = PluginDownloader.createDownloader(descriptor);
            if (downloader.prepareToInstall(indicator)) {
              downloader.install();
              PluginEnabler.HEADLESS.enable(List.of(descriptor));
              PluginManagerMain.notifyPluginsUpdated(myProject);
            }
          }
          else {
            showErrorNotification(vcs, VcsBundle.message("impl.notification.content.could.not.find.plugin", vcs.pluginId));
          }
        }
        catch (IOException e) {
          LOG.warn(e);
          showErrorNotification(vcs, e.getMessage());
        }
      }

      private void showErrorNotification(@NotNull ObsoleteVcs vcs, @NotNull @NlsContexts.NotificationContent String message) {
        String title = VcsBundle.message("impl.notification.title.failed.to.install.plugin");
        Notification notification = VcsNotifier.importantNotification()
          .createNotification(title, message, NotificationType.ERROR)
          .setDisplayId(VcsNotificationIdsHolder.SUGGESTED_PLUGIN_INSTALL_FAILED)
          .addAction(
            NotificationAction.createSimple(VcsBundle.messagePointer("action.NotificationAction.AllVcses.text.open.plugin.page"), () -> {
              BrowserUtil.browse(vcs.pluginUrl);
            }));
        VcsNotifier.getInstance(myProject).notify(notification);
      }
    }.queue();
  }
private void installPlugin(@NotNull ObsoleteVcs vcs)