@SafeVarargs
  public static @Unmodifiable @NotNull <T extends PsiElement> List<T> getChildrenOfAnyType(@Nullable PsiElement element, @NotNull Class<? extends T> @NotNull ... classes) {
    List<T> result = null;
    if (element != null) {
      for (PsiElement child = element.getFirstChild(); child != null; child = child.getNextSibling()) {
        if (instanceOf(child, classes)) {
          if (result == null) result = new SmartList<>();
          //noinspection unchecked
          result.add((T)child);
        }
      }
    }
    return result != null ? result : ContainerUtil.emptyList();
  }
@SafeVarargs
  public static @Unmodifiable @NotNull <T extends PsiElement> List<T> getChildrenOfAnyType(@Nullable PsiElement element, @NotNull Class<? extends T> @NotNull ... classes)