boolean (@NotNull PsiMethod method, @NonNls @Nullable String containingClassName, @Nullable PsiType returnType, PsiType @Nullable ... parameterTypes) { if (parameterTypes != null) { final PsiParameterList parameterList = method.getParameterList(); if (parameterList.getParametersCount() != parameterTypes.length) { return false; } final PsiParameter[] parameters = parameterList.getParameters(); for (int i = 0; i < parameters.length; i++) { ProgressManager.checkCanceled(); final PsiParameter parameter = parameters[i]; final PsiType type = parameter.getType(); final PsiType parameterType = parameterTypes[i]; if (PsiTypes.nullType().equals(parameterType)) { continue; } if (parameterType != null && !EquivalenceChecker.getCanonicalPsiEquivalence().typesAreEquivalent(type, parameterType)) { return false; } } } if (returnType != null) { final PsiType methodReturnType = method.getReturnType(); if (!EquivalenceChecker.getCanonicalPsiEquivalence().typesAreEquivalent(returnType, methodReturnType)) { return false; } } if (containingClassName != null) { final PsiClass containingClass = method.getContainingClass(); return InheritanceUtil.isInheritor(containingClass, containingClassName); } return true; }