int (@NotNull MethodSignature methodSignature, @NotNull MethodSignatureBackedByPsiMethod superSignature, @NotNull List<? extends PsiClassType> checkedExceptions, @NotNull PsiSubstitutor substitutorForDerivedClass) { PsiMethod superMethod = superSignature.getMethod(); PsiSubstitutor substitutorForMethod = MethodSignatureUtil.getSuperMethodSignatureSubstitutor(methodSignature, superSignature); for (int i = 0; i < checkedExceptions.size(); i++) { PsiClassType checkedEx = checkedExceptions.get(i); PsiType substituted = substitutorForMethod == null ? TypeConversionUtil.erasure(checkedEx) : substitutorForMethod.substitute(checkedEx); PsiType exception = substitutorForDerivedClass.substitute(substituted); if (!isMethodThrows(superMethod, substitutorForMethod, exception, substitutorForDerivedClass)) { return i; } } return -1; }