@Override
          public Iterable<? extends TT> fun(TT t) {
            //noinspection unchecked
            return (Iterable<? extends TT>)cache.computeIfAbsent(t, o -> JBIterable.from(tree.fun((TT)o)).collect());
          }
@Override
          public Iterable<? extends TT> fun(TT t)