int (PsiClass aClass) { if (!aClass.isValid()) return CLASS_KIND_CLASS; if (aClass.isAnnotationType()) { return CLASS_KIND_ANNOTATION; } if (aClass.isEnum()) { return CLASS_KIND_ENUM; } if (aClass.isRecord()) { return CLASS_KIND_RECORD; } if (aClass.isInterface()) { return CLASS_KIND_INTERFACE; } if (aClass instanceof PsiAnonymousClass) { return CLASS_KIND_ANONYMOUS; } if (!DumbService.getInstance(aClass.getProject()).isDumb()) { final PsiManager manager = aClass.getManager(); final PsiClass javaLangTrowable = JavaPsiFacade.getInstance(manager.getProject()).findClass(CommonClassNames.JAVA_LANG_THROWABLE, aClass.getResolveScope()); final boolean isException = javaLangTrowable != null && InheritanceUtil.isInheritorOrSelf(aClass, javaLangTrowable, true); if (isException) { return CLASS_KIND_EXCEPTION; } if (TestFrameworks.getInstance().isTestClass(aClass)) { return CLASS_KIND_JUNIT_TEST; } if (PsiClassUtil.isRunnableClass(aClass, false) && PsiMethodUtil.findMainMethod(aClass) != null) { return CLASS_KIND_RUNNABLE; } } return CLASS_KIND_CLASS; }