void (@NotNull PsiCall methodCall, @NotNull PsiExpressionList list, @Nullable HighlightInfo.Builder highlightInfo, TextRange fixRange) { JavaResolveResult result = methodCall.resolveMethodGenerics(); PsiMethod method = (PsiMethod)result.getElement(); PsiSubstitutor substitutor = result.getSubstitutor(); PsiExpression[] expressions = list.getExpressions(); if (method == null) return; PsiParameter[] parameters = method.getParameterList().getParameters(); if (parameters.length != expressions.length) return; for (int i = 0; i < expressions.length; i++) { PsiExpression expression = expressions[i]; PsiParameter parameter = parameters[i]; PsiType expressionType = expression.getType(); PsiType parameterType = substitutor.substitute(parameter.getType()); if (expressionType == null || expressionType instanceof PsiPrimitiveType || TypeConversionUtil.isNullType(expressionType) || expressionType instanceof PsiArrayType) continue; if (parameterType instanceof PsiPrimitiveType || TypeConversionUtil.isNullType(parameterType) || parameterType instanceof PsiArrayType) continue; if (parameterType.isAssignableFrom(expressionType)) continue; PsiClass parameterClass = PsiUtil.resolveClassInType(parameterType); PsiClass expressionClass = PsiUtil.resolveClassInType(expressionType); if (parameterClass == null || expressionClass == null) continue; if (expressionClass instanceof PsiAnonymousClass) continue; if (expressionClass.isInheritor(parameterClass, true)) continue; IntentionAction action = QuickFixFactory.getInstance().createChangeParameterClassFix(expressionClass, (PsiClassType)parameterType); if (highlightInfo != null) { highlightInfo.registerFix(action, null, null, fixRange, null); } } }