boolean (@Nullable PsiType type) { if (type == null) { return false; } final PsiType baseType = type.getDeepComponentType(); final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(baseType); if (aClass == null) { return false; } if (ignoreAbstractClasses && aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return false; } if (ignoreRecords && aClass.isRecord()) { return false; } if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) { return false; } if (aClass instanceof PsiTypeParameter) { return false; } return !LibraryUtil.classIsInLibrary(aClass); }