void (@NotNull PsiMethod method) { super.visitMethod(method); final PsiAnnotation annotation = AnnotationUtil.findAnnotation(method, "org.junit.Test"); if (annotation == null) { return; } final PsiAnnotationParameterList parameterList = annotation.getParameterList(); final PsiNameValuePair[] attributes = parameterList.getAttributes(); PsiAnnotationMemberValue value = null; for (PsiNameValuePair attribute : attributes) { if ("expected".equals(attribute.getName())) { value = attribute.getValue(); break; } } if (!(value instanceof PsiClassObjectAccessExpression classObjectAccessExpression)) { return; } final PsiCodeBlock body = method.getBody(); if (body == null) { return; } final PsiTypeElement operand = classObjectAccessExpression.getOperand(); final PsiType type = operand.getType(); final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(type); if (InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION) || InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_ERROR)) { return; } final List<PsiClassType> exceptionsThrown = ExceptionUtil.getThrownExceptions(body); for (PsiClassType psiClassType : exceptionsThrown) { if (psiClassType.isAssignableFrom(type)) { return; } } registerError(operand, method); }