@Nullable
  private @InspectionMessage String checkIndirectInheritance(PsiMethod intfMethod,
                                                             PsiClass intfMethodClass,
                                                             PsiMethod overridingMethod,
                                                             PsiClass overridingMethodClass) {
    if (isNullableOverridingNotNull(Annotated.from(overridingMethod), intfMethod)) {
      return JavaAnalysisBundle.message("inspection.message.nullable.method.implements.non.null.method",
                                        overridingMethod.getName(), overridingMethodClass.getName(), intfMethodClass.getName());
    }
    if (isNonAnnotatedOverridingNotNull(overridingMethod, intfMethod)) {
      return JavaAnalysisBundle.message("inspection.message.non.annotated.method.implements.non.null.method",
                                        overridingMethod.getName(), overridingMethodClass.getName(), intfMethodClass.getName());
    }

    PsiParameter[] overridingParameters = overridingMethod.getParameterList().getParameters();
    PsiParameter[] superParameters = intfMethod.getParameterList().getParameters();
    if (overridingParameters.length == superParameters.length) {
      NullableNotNullManager manager = getNullityManager(intfMethod);
      for (int i = 0; i < overridingParameters.length; i++) {
        PsiParameter parameter = overridingParameters[i];
        List<PsiParameter> supers = Collections.singletonList(superParameters[i]);
        if (findNullableSuperForNotNullParameter(parameter, supers) != null) {
          return JavaAnalysisBundle.message("inspection.message.non.null.parameter.should.not.override.nullable.parameter",
                                            parameter.getName(), overridingMethod.getName(), overridingMethodClass.getName(), intfMethodClass.getName());
        }
        if (findNotNullSuperForNonAnnotatedParameter(manager, parameter, supers) != null) {
          return JavaAnalysisBundle.message("inspection.message.non.annotated.parameter.should.not.override.non.null.parameter",
                                            parameter.getName(), overridingMethod.getName(), overridingMethodClass.getName(), intfMethodClass.getName());
        }
        if (isNotNullParameterOverridingNonAnnotated(manager, parameter, supers)) {
          return JavaAnalysisBundle.message("inspection.message.non.null.parameter.should.not.override.non.annotated.parameter",
                                            parameter.getName(), overridingMethod.getName(), overridingMethodClass.getName(), intfMethodClass.getName());
        }
      }
    }

    return null;
  }
@Nullable
  private @InspectionMessage String checkIndirectInheritance(PsiMethod intfMethod,
                                                             PsiClass intfMethodClass,
                                                             PsiMethod overridingMethod,
                                                             PsiClass overridingMethodClass)