private void setStyle(MindMapNode node) {
        // precondition: all children are contained in nodeIconSets

        // gather all icons of my children and of me here:
        TreeSet iconSet = new TreeSet();
        for (Iterator i = node.childrenUnfolded(); i.hasNext(); ) {
            MindMapNode child = (MindMapNode) i.next();
            addAccumulatedIconsToTreeSet(child, iconSet,
                    (TreeSet) nodeIconSets.get(child));
        }
        // remove my icons from the treeset:
        for (Iterator i = node.getIcons().iterator(); i.hasNext(); ) {
            MindIcon icon = (MindIcon) i.next();
            iconSet.remove(icon.getName());
        }
        boolean dirty = true;
        // look for a change:
        if (nodeIconSets.containsKey(node)) {
            TreeSet storedIconSet = (TreeSet) nodeIconSets.get(node);
            if (storedIconSet.equals(iconSet)) {
                dirty = false;
            }
        }
        nodeIconSets.put(node, iconSet);

        if (dirty) {
            if (iconSet.size() > 0) {
                // create multiple image:
                MultipleImage image = new MultipleImage(0.75f);
                for (Iterator i = iconSet.iterator(); i.hasNext(); ) {
                    String iconName = (String) i.next();
                    // logger.info("Adding icon "+iconName + " to node "+
                    // node.toString());
                    MindIcon icon = MindIcon.factory(iconName);
                    image.addImage(icon.getIcon());
                }
                node.setStateIcon(getName(), image);
            } else {
                node.setStateIcon(getName(), null);
            }
            getMindMapController().nodeRefresh(node);
        }

    }