void (@NotNull HighlightInfo.Builder info, @NotNull TextRange textRange, @NotNull PsiMethodCallExpression call, @NotNull PsiMethod method, @NotNull PsiTypeParameter typeParameter, @NotNull PsiType expectedTypeValue, @NotNull PsiParameter @NotNull [] parameters, @NotNull Set<PsiTypeParameter> set) { PsiMethodCallExpression qualifierCall = MethodCallUtils.getQualifierMethodCall(call); if (qualifierCall == null) return; JavaResolveResult qualifierResolve = qualifierCall.resolveMethodGenerics(); PsiMethod qualifierMethod = tryCast(qualifierResolve.getElement(), PsiMethod.class); if (qualifierMethod == null) return; PsiClassType qualifierType = tryCast(qualifierMethod.getReturnType(), PsiClassType.class); if (qualifierType == null) return; if (ContainerUtil.exists(parameters, p -> PsiTypesUtil.mentionsTypeParameters(p.getType(), set))) return; PsiClassType.ClassResolveResult classResolveResult = qualifierType.resolveGenerics(); PsiClass qualifierClass = classResolveResult.getElement(); if (qualifierClass == null) return; PsiType expectedQualifierType = JavaPsiFacade.getElementFactory(method.getProject()) .createType(qualifierClass, classResolveResult.getSubstitutor().put(typeParameter, expectedTypeValue)); PsiType actualType = qualifierCall.getType(); if (actualType != null && !expectedQualifierType.equals(actualType)) { registerPatchParametersFixes(info, textRange, qualifierCall, qualifierMethod, expectedQualifierType, actualType); } }