boolean (PsiMethod method, Collection<? extends PsiClassType> exceptionTypes) { final PsiReferenceList superThrowsList = method.getThrowsList(); final PsiClassType[] superThrownTypes = superThrowsList.getReferencedTypes(); outer: for (PsiClassType superThrownType : superThrownTypes) { ProgressManager.checkCanceled(); if (exceptionTypes.contains(superThrownType)) { continue; } for (PsiClassType exceptionType : exceptionTypes) { if (InheritanceUtil.isInheritor(superThrownType, exceptionType.getCanonicalText())) { continue outer; } } final PsiClass aClass = superThrownType.resolve(); if (aClass == null) { return true; } if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION) && !InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_ERROR)) { return true; } } return false; }