@Deprecated
  public static <T> TreeTraverser<T> using(
      final Function<T, ? extends Iterable<T>> nodeToChildrenFunction) {
    checkNotNull(nodeToChildrenFunction);
    return new TreeTraverser<T>() {
      @Override
      public Iterable<T> children(T root) {
        return nodeToChildrenFunction.apply(root);
      }
    };
  }
@Deprecated
  public static <T> TreeTraverser<T> using(
      final Function<T, ? extends Iterable<T>> nodeToChildrenFunction) {
    checkNotNull(nodeToChildrenFunction);
    return new TreeTraverser<T>() {
      @Override
      public Iterable<T> children(T root) {
        return nodeToChildrenFunction.apply(root);
      }
    };
  }
@ Deprecated public static < T > TreeTraverser < T > using ( final Function < T , ? extends Iterable < T > > nodeToChildrenFunction ) { checkNotNull ( nodeToChildrenFunction ) ; return new TreeTraverser < T > ( ) { @ Override public Iterable < T > children ( T root ) { return nodeToChildrenFunction . apply ( root ) ; } } ; }
Returns a tree traverser that uses the given function to navigate from a node to its children.
This is useful if the function instance already exists, or so that you can supply a lambda
expressions. If those circumstances don't apply, you probably don't need to use this; subclass
{@code TreeTraverser} and implement its {@link #children} method directly.

@since 20.0
@deprecated Use {@link com.google.common.graph.Traverser#forTree} instead. If you are using a
lambda, these methods have exactly the same signature.
Returns a tree traverser that uses the given function to navigate from a node to its children . This is useful if the function instance already exists or so that you can supply a lambda expressions . If those circumstances don t apply you probably don t need to use this ; subclass { @code TreeTraverser } and implement its { @link #children } method directly .