code: public final FluentIterable<T> preOrderTraversal(final T root) {
      checkNotNull(root);
      return new FluentIterable<T>() {
        @Override
        public UnmodifiableIterator<T> iterator() {
          return preOrderIterator(root);
        }
      };
    }
docs: Returns an unmodifiable iterable over the nodes in a tree structure, using pre-order
  traversal. That is, each node's subtrees are traversed after the node itself is returned.
  
  <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.