@Override
    public Iterable<? extends S> fun(S s) {
      return meta == null ? JBIterable.from(tree.fun(reverse(s))).map(this::map)
                          : meta.childrenImpl(s, o -> JBIterable.from(tree.fun(reverse(o))).map(this::map));
    }
@Override
    public Iterable<? extends S> fun(S s)