diff --git a/java/java-impl/src/com/intellij/refactoring/util/classMembers/ElementNeedsThis.java b/java/java-impl/src/com/intellij/refactoring/util/classMembers/ElementNeedsThis.java index 3f3c7e7479c4..3d302b149624 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/classMembers/ElementNeedsThis.java +++ b/java/java-impl/src/com/intellij/refactoring/util/classMembers/ElementNeedsThis.java @@ -16,7 +16,7 @@ package com.intellij.refactoring.util.classMembers; import com.intellij.psi.*; -import com.intellij.psi.util.PsiUtil; +import com.intellij.psi.util.PsiTypesUtil; /** * @author dsl @@ -61,11 +61,16 @@ public class ElementNeedsThis extends ClassThisReferencesVisitor { @Override public void visitReferenceExpression(PsiReferenceExpression expression) { super.visitReferenceExpression(expression); - final PsiClass aClass = PsiUtil.resolveClassInType(expression.getType()); - if (aClass instanceof PsiTypeParameter) { - final PsiTypeParameterListOwner owner = ((PsiTypeParameter)aClass).getOwner(); - if (owner instanceof PsiClass && myClassSuperClasses.contains(owner)) { - myResult = true; + PsiType type = expression.getType(); + if (type != null) { + PsiTypesUtil.TypeParameterSearcher searcher = new PsiTypesUtil.TypeParameterSearcher(); + type.accept(searcher); + for (PsiTypeParameter parameter : searcher.getTypeParameters()) { + final PsiTypeParameterListOwner owner = parameter.getOwner(); + if (owner instanceof PsiClass && myClassSuperClasses.contains(owner)) { + myResult = true; + break; + } } } }