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)));
}, _);
}