void (@NotNull PsiMethod method) { if (!method.isVarArgs()) { return; } final PsiClass aClass = method.getContainingClass(); if (aClass == null) { return; } final String methodName = method.getName(); final PsiMethod[] sameNameMethods = aClass.findMethodsByName(methodName, true); for (PsiMethod sameNameMethod : sameNameMethods) { PsiClass superClass = sameNameMethod.getContainingClass(); PsiSubstitutor substitutor = superClass != null ? TypeConversionUtil.getSuperClassSubstitutor(superClass, aClass, PsiSubstitutor.EMPTY) : PsiSubstitutor.EMPTY; if (!MethodSignatureUtil.areSignaturesEqual(sameNameMethod.getSignature(substitutor), method.getSignature(PsiSubstitutor.EMPTY))) { if (ignoreInconvertibleTypes && !areConvertibleTypesWithVarArgs(method.getParameterList(), sameNameMethod.getParameterList())) { continue; } registerMethodError(method, method); return; } } }