boolean (@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; }