code: public final FluentIterable<T> breadthFirstTraversal(final T root) {
      checkNotNull(root);
      return new FluentIterable<T>() {
        @Override
        public UnmodifiableIterator<T> iterator() {
          return new BreadthFirstIterator(root);
        }
      };
    }
docs: Returns an unmodifiable iterable over the nodes in a tree structure, using breadth-first
  traversal. That is, all the nodes of depth 0 are returned, then depth 1, then 2, and so on.
  
  <p>No guarantees are made about the behavior of the traversal when nodes change while
  iteration is in progress or when the iterators generated by {@link #children} are advanced.