void (@NotNull PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); if (!isIgnoredThrowable(expression)) { return; } final PsiMethod method = expression.resolveMethod(); if (method == null) { return; } final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(method.getReturnType()); if (aClass instanceof PsiTypeParameter) { return; } final PsiClass containingClass = method.getContainingClass(); if (containingClass == null) { return; } if (!method.hasModifierProperty(PsiModifier.STATIC) && InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_LANG_THROWABLE)) { return; } final StandardMethodContract contract = ContainerUtil.getOnlyItem(JavaMethodContractUtil.getMethodContracts(method)); if (contract != null && contract.isTrivial() && contract.getReturnValue().isFail()) { return; } if (MethodUtils.hasCanIgnoreReturnValueAnnotation(method, method.getContainingFile() /* check only in current file */)) { return; } registerMethodCallError(expression, expression); }