diff --git a/platform/lang-api/src/com/intellij/psi/PsiReferenceWrapper.java b/platform/lang-api/src/com/intellij/psi/PsiReferenceWrapper.java index 7864dd41b404..be65dc32fb4f 100644 --- a/platform/lang-api/src/com/intellij/psi/PsiReferenceWrapper.java +++ b/platform/lang-api/src/com/intellij/psi/PsiReferenceWrapper.java @@ -1,15 +1,13 @@ package com.intellij.psi; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiReference; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; /** * @author traff */ -public class PsiReferenceWrapper implements PsiReference{ +public class PsiReferenceWrapper implements PsiReference { private final PsiReference myOriginalPsiReference; public PsiReferenceWrapper(PsiReference originalPsiReference) { @@ -62,4 +60,18 @@ public class PsiReferenceWrapper implements PsiReference{ public boolean isSoft() { return myOriginalPsiReference.isSoft(); } + + public boolean isInstance(Class clazz) { + if (myOriginalPsiReference instanceof PsiReferenceWrapper) { + return ((PsiReferenceWrapper)myOriginalPsiReference).isInstance(clazz); + } + return clazz.isInstance(myOriginalPsiReference); + } + + public T cast(Class clazz) { + if (myOriginalPsiReference instanceof PsiReferenceWrapper) { + return ((PsiReferenceWrapper)myOriginalPsiReference).cast(clazz); + } + return clazz.cast(myOriginalPsiReference); + } }