@Override
    public void visitMethodCallExpression(@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);
    }
@Override
    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression)