@Override
  public void actionPerformed(final @NotNull AnActionEvent event) {
    InspectionProfile profile = InspectionProfileManager.getInstance().getCurrentProfile();
    Collection<String> classes = new TreeSet<>();
    Map<String, Collection<String>> groups = new TreeMap<>();

    String tempDirectory = FileUtil.getTempDirectory();
    File descDirectory = new File(tempDirectory, "inspections");
    if (!descDirectory.mkdirs() && !descDirectory.isDirectory()) {
      LOG.error("Unable to create directory: " + descDirectory.getAbsolutePath());
      return;
    }

    for (InspectionToolWrapper<?, ?> toolWrapper : profile.getInspectionTools(null)) {
      classes.add(getInspectionClass(toolWrapper).getName());

      String group = getGroupName(toolWrapper);
      Collection<String> names = groups.get(group);
      if (names == null) groups.put(group, (names = new TreeSet<>()));
      names.add(toolWrapper.getShortName());

      InputStream stream = getDescriptionStream(toolWrapper);
      if (stream != null) {
        doDump(descDirectory.toPath().resolve(toolWrapper.getShortName() + ".html"), new Processor() {
          @Override public void process(BufferedWriter writer) throws Exception {
            writer.write(ResourceUtil.loadText(stream));
          }
        });
      }
    }
    doNotify("Inspection descriptions dumped to\n" + descDirectory.getAbsolutePath());

    Path fqnListFile = Path.of(tempDirectory, "inspection_fqn_list.txt");
    boolean fqnOk = doDump(fqnListFile, new Processor() {
      @Override public void process(BufferedWriter writer) throws Exception {
        for (String name : classes) {
          writer.write(name);
          writer.newLine();
        }
      }
    });
    if (fqnOk) {
      doNotify("Inspection class names dumped to\n" + fqnListFile);
    }

    Path groupsFile = Path.of(tempDirectory, "inspection_groups.txt");
    final boolean groupsOk = doDump(groupsFile, new Processor() {
      @Override public void process(BufferedWriter writer) throws Exception {
        for (Map.Entry<String, Collection<String>> entry : groups.entrySet()) {
          writer.write(entry.getKey());
          writer.write(':');
          writer.newLine();
          for (String name : entry.getValue()) {
            writer.write("  ");
            writer.write(name);
            writer.newLine();
          }
        }
      }
    });
    if (groupsOk) {
      doNotify("Inspection groups dumped to\n" + fqnListFile);
    }
  }
@Override
  public void actionPerformed(final @NotNull AnActionEvent event)