guava/src/com/google/common/collect/TreeTraverser.java
@Deprecated
  public final FluentIterable<T> postOrderTraversal(final T root) {
    checkNotNull(root);
    return new FluentIterable<T>() {
      @Override
      public UnmodifiableIterator<T> iterator() {
        return postOrderIterator(root);
      }

      @Override
      public void forEach(Consumer<? super T> action) {
        checkNotNull(action);
        new Consumer<T>() {
          @Override
          public void accept(T t) {
            children(t).forEach(this);
            action.accept(t);
          }
        }.accept(root);
      }
    };
  }
@Deprecated
  public final FluentIterable<T> postOrderTraversal(final T root) {
    checkNotNull(root);
    return new FluentIterable<T>() {
      @Override
      public UnmodifiableIterator<T> iterator() {
        return postOrderIterator(root);
      }

      @Override
      public void forEach(Consumer<? super T> action) {
        checkNotNull(action);
        new Consumer<T>() {
          @Override
          public void accept(T t) {
            children(t).forEach(this);
            action.accept(t);
          }
        }.accept(root);
      }
    };
  }
Returns an unmodifiable iterable over the nodes in a tree structure, using post-order
traversal. That is, each node's subtrees are traversed before 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.

@deprecated Use {@link com.google.common.graph.Traverser#depthFirstPostOrder} instead, which
has the same behavior.