@SafeVarargs
  @Contract("null, _, _ -> null")
  public static @Nullable <T extends PsiElement> T findChildOfAnyType(@Nullable PsiElement element,
                                                                      boolean strict,
                                                                      @NotNull Class<? extends T> @NotNull ... classes) {
    if (element == null) return null;

    FindElement<PsiElement> processor = new FindElement<PsiElement>() {
      @Override
      public boolean execute(@NotNull PsiElement each) {
        if (strict && each == element) return true;
        if (instanceOf(each, classes)) {
          return setFound(each);
        }
        return true;
      }
@SafeVarargs
  @Contract("null, _, _ -> null")
  public static @Nullable <T extends PsiElement> T findChildOfAnyType(@Nullable PsiElement element,
                                                                      boolean strict,
                                                                      @NotNull Class<? extends T> @NotNull ... classes) {
    if (element == null) return null;

    FindElement<PsiElement> processor = new FindElement<PsiElement>() {
      @Override
      public boolean execute(@NotNull PsiElement each)