private static boolean shouldIgnoreStacktrace(@NotNull List<String> categories, StackTraceElement[] stackTrace) {
    if (categories.contains("none")) {
      return true;
    }

    boolean all = categories.contains("all");
    boolean categoryMatched = false;

    for (StackTraceElement element : stackTrace) {
      if (element.getClassName().equals("com.intellij.openapi.application.Preloader")) {
        if (all || categories.contains("preloader")) {
          categoryMatched = true;
          break;
        }
        else {
          return true;
        }
      }
      else if (element.getClassName().equals("com.intellij.serviceContainer.MyComponentAdapter")
               && element.getMethodName().equals("doCreateInstance")) {
        if (all || categories.contains("component")) {
          categoryMatched = true;
          break;
        }
        else {
          return true;
        }
      }
      else if (element.getClassName().equals("com.intellij.ui.CardLayoutPanel") && element.getMethodName().contains("selectLater")) {
        if (all || categories.contains("configurable")) {
          categoryMatched = true;
          break;
        }
        else {
          return true;
        }
      }
    }

    if (!all && !categoryMatched && !categories.contains("unknown")) {
      return true;
    }
    return false;
  }
private static boolean shouldIgnoreStacktrace(@NotNull List<String> categories, StackTraceElement[] stackTrace)