diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java b/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java index f20559eef3fd..f5c174dea4b5 100644 --- a/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java +++ b/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java @@ -180,12 +180,22 @@ public class PsiTreeUtil { } @Nullable public static T findChildOfType(@NotNull final PsiElement element, @NotNull final Class aClass, final boolean strict) { + return findChildOfAnyType(element, strict, aClass); + } + + @Nullable public static T findChildOfAnyType(@NotNull final PsiElement element, @NotNull final Class... classes) { + return findChildOfAnyType(element, true, classes); + } + + @Nullable public static T findChildOfAnyType(@NotNull final PsiElement element, final boolean strict, @NotNull final Class... classes) { PsiElementProcessor.FindElement processor = new PsiElementProcessor.FindElement() { @Override public boolean execute(PsiElement each) { if (strict && each == element) return true; - if (instanceOf(aClass, each)) { - return setFound(each); + for (Class eachClass : classes) { + if (instanceOf(eachClass, each)) { + return setFound(each); + } } return true; }