boolean (PsiMethod method) { PsiMethod[] superMethods = method.findSuperMethods(); if (superMethods.length == 0) return false; PsiType returnType = TypeConversionUtil.erasure(method.getReturnType()); List<PsiType> parameterTypes = ContainerUtil.map(method.getParameterList().getParameters(), p -> TypeConversionUtil.erasure(p.getType())); for (PsiMethod superMethod : superMethods) { if (!Objects.equals(returnType, TypeConversionUtil.erasure(superMethod.getReturnType()))) { return true; } PsiParameter[] parameters = superMethod.getParameterList().getParameters(); if (parameters.length == parameterTypes.size()) { for (int i = 0; i < parameters.length; i++) { if (!Objects.equals(TypeConversionUtil.erasure(parameters[i].getType()), parameterTypes.get(i))) { return true; } } } } return false; }