class TreeWalker {

  public Iterable<Component> descendants(DescendantOrder order) {
    return new Iterable<Component>() {
      @Override
      public Iterator<Component> iterator() {
        return order.createIterator.fun(myRoot);
      }
    };
  }

  public  TreeWalker(@NotNull Component root);

}