@Override
  public void actionPerformed(@NotNull AnActionEvent e) {
    ExtensionsRootType extensionsRootType = ExtensionsRootType.getInstance();

    VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
    PluginId pluginId = extensionsRootType.getOwner(file);
    String path = extensionsRootType.getPath(file);

    assert file != null && pluginId != null && path != null;

    Task.Backgroundable extractResourcesInBackground = new Task.Backgroundable(
      e.getProject(),
      LangBundle.message("progress.title.extracting.bundled.extensions.for.plugin", pluginId.getIdString())) {
      @Override
      public void run(@NotNull ProgressIndicator indicator) {
        try {
          extensionsRootType.extractBundledResources(pluginId, path);
          VirtualFileManager.getInstance().refreshWithoutFileWatcher(true);
        }
        catch (IOException ex) {
          ExtensionsRootType.LOG.warn("Failed to extract bundled extensions for " + file.getPath(), ex);
        }
      }
    };
    ProgressManager.getInstance().run(extractResourcesInBackground);
  }
@Override
  public void actionPerformed(@NotNull AnActionEvent e)