docs: @Override
  	public Component getTreeCellRendererComponent(JTree tree, Object value,
  			boolean sel, boolean expanded, boolean leaf, int row,
  			boolean hasFocus) {
  
  		component.removeAll();
  		SiteNode node = null;
  		if (value instanceof SiteNode) {
  			node = (SiteNode) value;
  		}
  		
  		if (node != null) {
  	        if( node.isFiltered()) {
  	        	// Hide the node
  	            setPreferredSize( new Dimension(0, 0) );
  	            return this;
  	        }
  
  			setPreferredSize(null);	// clears the preferred size, making the node visible
  			super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
  
  			// folder / file icons with scope 'target' if relevant
  			if (node.isRoot()) {
  				component.add(wrap(ROOT_ICON)); // 'World' icon
  			} else {
  				OverlayIcon icon;
  		        if (node.isDataDriven()) {
  					if (node.isIncludedInScope() && ! node.isExcludedFromScope()) {
  						icon = new OverlayIcon(DATA_DRIVEN_IN_SCOPE_ICON);
  					} else {
  						icon = new OverlayIcon(DATA_DRIVEN_ICON);
  					}
  		        } else if (leaf) {
  					if (node.isIncludedInScope() && ! node.isExcludedFromScope()) {
  						icon = new OverlayIcon(LEAF_IN_SCOPE_ICON);
  					} else {
  						icon = new OverlayIcon(LEAF_ICON);
  					}
  				} else {
  					if  (expanded) {
  						if (node.isIncludedInScope() && ! node.isExcludedFromScope()) {
  							icon = new OverlayIcon(FOLDER_OPEN_IN_SCOPE_ICON);
  						} else {
  							icon = new OverlayIcon(FOLDER_OPEN_ICON);
  						}
  					} else {
  						if (node.isIncludedInScope() && ! node.isExcludedFromScope()) {
  							icon = new OverlayIcon(FOLDER_CLOSED_IN_SCOPE_ICON);
  						} else {
  							icon = new OverlayIcon(FOLDER_CLOSED_ICON);
  						}
  					}
  				}
  				if (node.getParent().isRoot() && node.getNodeName().startsWith("https://")) {
  					// Add lock icon to site nodes with https
  					icon.add(LOCK_OVERLAY_ICON);
  				}
  				
  				component.add(wrap(DisplayUtils.getScaledIcon(icon)));
  				
  				Alert alert = node.getHighestAlert();
  				if (alert != null) {
  					component.add(wrap(alert.getIcon()));
  				}
  
  				for (ImageIcon ci : node.getCustomIcons()){
  					component.add(wrap(DisplayUtils.getScaledIcon(ci)));
  				}
  				
  			}
  			setText(node.toString());
  			setIcon(null);
  			component.add(this);
  
  	        for (SiteMapListener listener : listeners) {
  	        	listener.onReturnNodeRendererComponent(this, leaf, node);
  	        }
  	        return component;
  		}
  
  		return this;
  	}