private void addUniqueNodes(final Map<TreeNode, TreeNode> nodes, final TreeNode newNode) {
        if (nodes.put(newNode, newNode) != null) {
            throw new RuntimeException("Node used more than once in tree: " + newNode);
        }
        for (final TreeNode n : tree.getChildren(newNode)) {
            addUniqueNodes(nodes, n);
        }
    }
In difference to the original algorithm we also pass in extra level
information.
stroom-core-client-widget/src/main/java/stroom/widget/htree/client/treelayout/AbegoTreeLayout.java