List<IntentionAction> (@NotNull PsiMethod method, @NotNull PsiExpression expression, PsiType parameterType) { if (!(expression instanceof PsiReferenceExpression)) { return Collections.emptyList(); } List<IntentionAction> result = new ArrayList<>(); if (BaseIntentionAction.canModify(method)) { final PsiMethod[] superMethods = method.findDeepestSuperMethods(); for (PsiMethod superMethod : superMethods) { if (!BaseIntentionAction.canModify(superMethod)) return Collections.emptyList(); } final PsiElement resolve = ((PsiReferenceExpression)expression).resolve(); if (resolve instanceof PsiVariable) { PsiType varType = ((PsiVariable)resolve).getType(); if (!varType.equals(GenericsUtil.getVariableTypeByExpressionType(parameterType))) { result.addAll(HighlightFixUtil.getChangeVariableTypeFixes((PsiVariable)resolve, parameterType)); } } } return result; }