static WebTree web_makeTree(WebNode node) { if (node == null) null; WebTree tree = new(node); web_makeTree_impl(tree, new HashSet); ret tree; } static void web_makeTree_impl(WebTree tree, HashSet seen) { if (!seen.add(tree.node)) ret; for (WebNode n : web_forwardRelated(tree.node)) { WebTree tree2 = new(n); tree.children.add(pair(tree.node.web.getRelation(tree.node, n), tree2)); web_makeTree_impl(tree2, seen); } }