class Trees {

    @NonNull
    public static <T> Iterable<T> depthFirstIterable(
            @NonNull T root,
            @NonNull Function<? super T, ? extends Stream<? extends T>> children) {
        return new DepthFirstIterable(root, children);
    }

    private  Trees();

}