@Test
public void postOrder_deep() {

  Tree<String> tree = tree("a")
      .setLeft(tree("b")
          .setLeft("c")
          .setRight(tree("d").setLeft("e")))
      .setRight(tree("f")
          .setLeft(tree("g").setRight("h"))
          .setRight("i"));
  assertThat(Tree.<String>walker().postOrderFrom(tree).map(Tree::value))
      .containsExactly("c", "e", "d", "b", "h", "g", "i", "f", "a")
      .inOrder();
}