static , B>>, B> JTree jDynamicEitherTree(A root, O... _) { ret jDynamicTree( (Either) (Either) eitherA(root), x -> { if (!isEitherA(x)) null; // leaves have no children Either, B> result = eitherAOpt(x)!; ret (Cl>) (isEitherA(result) ? map eitherA(eitherGetA(result)) : ll(eitherBOpt(result))); }, _); }