guava/src/com/google/common/collect/TreeTraverser.java
@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.