private void cull() {
            Node child;
            outer: for (Iterator<Node> i = children.iterator(); i.hasNext();) {
                child = i.next();
                
                for (Node otherChild : children) {
                    if (otherChild == child)
                        continue;
                    
                    if (otherChild.hasChild(child.name) != null) {
                        i.remove();
                        continue outer;
                    }
                }
            }
            
            for (Node c : children)
                c.cull();
        }