static L> unrollTree(OccTree tree) { new L> l; unrollTree_collect(tree, new ArrayList, l); ret l; } static void unrollTree_collect(OccTree tree, L l, L> out) { for (A a : keys(tree.followUp)) { l.add(a); unrollTree_collect(tree.followUp(a), l, out); removeLast(l); } if (empty(tree.followUp)) out.add(cloneList(l)); }