//# 0 errors, 384 messages
//#
/*
    //#TreeViewTreeCellRenderer.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#TreeViewTreeCellRenderer.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init
 * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.dmdirc.addons.ui_swing.framemanager.tree;

import com.dmdirc.interfaces.ConfigChangeListener;
import com.dmdirc.config.ConfigManager;
import com.dmdirc.config.IdentityManager;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;

import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.TreeCellRenderer;

/**
 * Displays a node in a tree according to its type.
 */
public class TreeViewTreeCellRenderer implements TreeCellRenderer,
        ConfigChangeListener {

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 3;
    /** Parent frame manager. */
    private final TreeFrameManager manager;
    /** Config manager. */
    private final ConfigManager config;
    /** Rollover colours. */
    private Color rolloverColour;
    /** Active bold. */
    private boolean activeBold;
    /** Active background. */
    private Color activeBackground;
    /** Active foreground. */
    private Color activeForeground;

    /**
     * Creates a new instance of TreeViewTreeCellRenderer.
     *
     * @param manager Parent TreeFrameManager
     */
    public TreeViewTreeCellRenderer(final TreeFrameManager manager) {
    //#TreeViewTreeCellRenderer.java:67: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): ""._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "."._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "<Unknown>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "@"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "Config option not found: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "backgroundcolour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "foregroundcolour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "treeview"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "treeviewActiveBackground"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "treeviewActiveBold"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "treeviewActiveForeground"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "treeviewRolloverColour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): "ui"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.addChangeListener(Ljava/lang/String;Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigManager.stats
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.__Lock
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.listeners
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.listeners.__Lock
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.sources.__Lock
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.identities
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.managers
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): manager
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): manager.tree
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ArrayList(getSources#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ArrayList(getSources#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).channel
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).file
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).network
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).server
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).sources
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new MapList(ConfigManager#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new MapList(ConfigManager#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.activeBackground
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.activeBold
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.activeForeground
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.config
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.manager
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.rolloverColour
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): java.lang.StringBuilder:toString(...)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ArrayList(getSources#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new MapList(ConfigManager#1)
    //#pre[4] (void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): manager != null
    //#pre[5] (void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): manager.tree != null
    //#pre[6] (void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[1] (void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.config.__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.config.listeners != null
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.config.sources != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig == One-of{old com/dmdirc/config/IdentityManager.globalconfig, &new ConfigManager(getGlobalConfig#1)}
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.config == com/dmdirc/config/IdentityManager.globalconfig
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(this.activeBackground)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(this.activeBold)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(this.activeForeground)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.manager == manager
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): this.manager != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(this.rolloverColour)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ArrayList(getSources#1) num objects <= 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new MapList(ConfigManager#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).__Tag == com/dmdirc/config/ConfigManager
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).channel == &java.lang.StringBuilder:toString(...)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).ircd == &""
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).network == &""
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).server == &""
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).listeners == &new MapList(ConfigManager#1)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).sources == &new ArrayList(getSources#1)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): init'ed(new MapList(ConfigManager#1).__Lock)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:hasOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:getOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:getOptionColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:getTree
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:javax.swing.JTree:repaint
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:getTarget
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:addListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:getSources
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:addConfigManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.MapList:add
        this.manager = manager;

        config = IdentityManager.getGlobalConfig();

        setColours();

        config.addChangeListener("ui", this);
        config.addChangeListener("treeview", this);
    }
    //#TreeViewTreeCellRenderer.java:76: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer(TreeFrameManager)

    /**
     * Configures the renderer based on the passed parameters.
     *
     * @param tree JTree for this renderer.
     * @param value node to be renderered.
     * @param sel whether the node is selected.
     * @param expanded whether the node is expanded.
     * @param leaf whether the node is a leaf.
     * @param row the node's row.
     * @param hasFocus whether the node has focus.
     *
     * @return RendererComponent for this node.
     */
    @Override
    public final Component getTreeCellRendererComponent(final JTree tree,
            final Object value, final boolean sel, final boolean expanded,
            final boolean leaf, final int row, final boolean hasFocus) {

        if (value == null) {
    //#TreeViewTreeCellRenderer.java:96: method: Component com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.getNotificationColour()Ljava/awt/Color;
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.isRollover()Z
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.isSelected()Z
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this.activeBackground
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this.activeBold
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this.activeForeground
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this.rolloverColour
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): tree
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.__Tag
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.__Tag
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.notificationColour
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.rollover
    //#input(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.selected
    //#output(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#1) num objects
    //#output(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#2) num objects
    //#output(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): return_value
    //#new obj(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#1)
    //#new obj(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#2)
    //#pre[14] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(this.activeBackground)
    //#pre[15] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(this.activeBold)
    //#pre[16] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(this.activeForeground)
    //#pre[17] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(this.rolloverColour)
    //#pre[18] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) tree != null
    //#pre[20] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) value.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#pre[21] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(value.label)
    //#pre[22] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) value.label.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#pre[23] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(value.label.notificationColour)
    //#pre[24] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(value.label.rollover)
    //#pre[25] (Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): (soft) init'ed(value.label.selected)
    //#presumption(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont(...)@118 != null
    //#presumption(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont(...)@120 != null
    //#presumption(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont(...)@125 != null
    //#post(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): return_value == One-of{&new JLabel(getTreeCellRendererComponent#1), &new JLabel(getTreeCellRendererComponent#2), value.label}
    //#post(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): return_value != null
    //#post(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#1) num objects <= 1
    //#post(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): new JLabel(getTreeCellRendererComponent#2) num objects <= 1
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): this.activeBold: {0}, {1}
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value: Inverse{null}, Addr_Set{null}
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label: Inverse{null}, Addr_Set{null}
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.notificationColour: Addr_Set{null}, Inverse{null}
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.rollover: {0}, {1}
    //#test_vector(Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)): value.label.selected: {0}, {1}
            return new JLabel("Node == null");
        }
        final NodeLabel label = ((TreeViewNode) value).getLabel();
        if (label == null) {
            return new JLabel("Label == null");
        }

        label.setBackground(tree.getBackground());
    //#TreeViewTreeCellRenderer.java:104: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
        label.setForeground(tree.getForeground());
    //#TreeViewTreeCellRenderer.java:105: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)

        if (label.isRollover()) {
            label.setBackground(rolloverColour);
    //#TreeViewTreeCellRenderer.java:108: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
        }

        final Color colour = label.getNotificationColour();
        if (colour != null) {
            label.setForeground(colour);
    //#TreeViewTreeCellRenderer.java:113: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)
        }

        if (label.isSelected()) {
            if (activeBold) {
                label.setFont(label.getFont().deriveFont(Font.BOLD));
    //#TreeViewTreeCellRenderer.java:118: Warning: method not available - call not analyzed
    //#    call on Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#TreeViewTreeCellRenderer.java:118: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
            } else {
                label.setFont(label.getFont().deriveFont(Font.PLAIN));
    //#TreeViewTreeCellRenderer.java:120: Warning: method not available - call not analyzed
    //#    call on Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#TreeViewTreeCellRenderer.java:120: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
            }
            label.setBackground(activeBackground);
    //#TreeViewTreeCellRenderer.java:122: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBackground(Color)
            label.setForeground(activeForeground);
    //#TreeViewTreeCellRenderer.java:123: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setForeground(Color)
        } else {
            label.setFont(label.getFont().deriveFont(Font.PLAIN));
    //#TreeViewTreeCellRenderer.java:125: Warning: method not available - call not analyzed
    //#    call on Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: Font com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont()
    //#TreeViewTreeCellRenderer.java:125: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
    //#    method: Component getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setFont(Font)
        }

        return label;
    //#TreeViewTreeCellRenderer.java:128: end of method: Component com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.getTreeCellRendererComponent(JTree, Object, bool, bool, bool, int, bool)
    }

    /** Sets the colours for the renderer. */
    private void setColours() {
        rolloverColour = config.getOptionColour(
    //#TreeViewTreeCellRenderer.java:133: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.setColours()
    //#input(void setColours()): "."._tainted
    //#input(void setColours()): "Config option not found: "._tainted
    //#input(void setColours()): "backgroundcolour"._tainted
    //#input(void setColours()): "foregroundcolour"._tainted
    //#input(void setColours()): "treeview"._tainted
    //#input(void setColours()): "treeviewActiveBackground"._tainted
    //#input(void setColours()): "treeviewActiveBold"._tainted
    //#input(void setColours()): "treeviewActiveForeground"._tainted
    //#input(void setColours()): "treeviewRolloverColour"._tainted
    //#input(void setColours()): "ui"._tainted
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void setColours()): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void setColours()): com/dmdirc/config/ConfigManager.stats
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void setColours()): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void setColours()): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void setColours()): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void setColours()): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void setColours()): com/dmdirc/config/Identity.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void setColours()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void setColours()): this
    //#input(void setColours()): this.config
    //#input(void setColours()): this.config.__Tag
    //#input(void setColours()): this.config.file
    //#input(void setColours()): this.config.sources
    //#input(void setColours()): this.manager
    //#input(void setColours()): this.manager.tree
    //#output(void setColours()): this.activeBackground
    //#output(void setColours()): this.activeBold
    //#output(void setColours()): this.activeForeground
    //#output(void setColours()): this.rolloverColour
    //#pre[2] (void setColours()): this.config != null
    //#pre[4] (void setColours()): this.config.__Tag == com/dmdirc/config/ConfigManager
    //#pre[6] (void setColours()): this.config.sources != null
    //#pre[8] (void setColours()): this.manager != null
    //#pre[9] (void setColours()): this.manager.tree != null
    //#post(void setColours()): init'ed(this.activeBackground)
    //#post(void setColours()): init'ed(this.activeBold)
    //#post(void setColours()): init'ed(this.activeForeground)
    //#post(void setColours()): init'ed(this.rolloverColour)
    //#unanalyzed(void setColours()): Effects-of-calling:hasOption
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void setColours()): Effects-of-calling:getOption
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void setColours()): Effects-of-calling:getOptionColour
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.Boolean:parseBoolean
                "ui", "treeviewRolloverColour",
                "treeview", "backgroundcolour",
                "ui", "backgroundcolour");
        activeBackground = config.getOptionColour(
                "ui", "treeviewActiveBackground",
                "treeview", "backgroundcolour",
                "ui", "backgroundcolour");
        activeForeground = config.getOptionColour(
                "ui", "treeviewActiveForeground",
                "treeview", "foregroundcolour",
                "ui", "foregroundcolour");
        activeBold = config.getOptionBool("ui", "treeviewActiveBold");

        manager.getTree().repaint();
    }
    //#TreeViewTreeCellRenderer.java:148: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.setColours()

    /** {@inheritDoc} */
    @Override
    public void configChanged(final String domain, final String key) {
        if (("ui".equals(domain) || "treeview".equals(domain)) &&
    //#TreeViewTreeCellRenderer.java:153: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.configChanged(String, String)
    //#input(void configChanged(String, String)): "."._tainted
    //#input(void configChanged(String, String)): "Config option not found: "._tainted
    //#input(void configChanged(String, String)): "backgroundcolour"._tainted
    //#input(void configChanged(String, String)): "foregroundcolour"._tainted
    //#input(void configChanged(String, String)): "treeview"._tainted
    //#input(void configChanged(String, String)): "treeviewActiveBackground"._tainted
    //#input(void configChanged(String, String)): "treeviewActiveBold"._tainted
    //#input(void configChanged(String, String)): "treeviewActiveForeground"._tainted
    //#input(void configChanged(String, String)): "treeviewRolloverColour"._tainted
    //#input(void configChanged(String, String)): "ui"._tainted
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager.stats
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void configChanged(String, String)): domain
    //#input(void configChanged(String, String)): key
    //#input(void configChanged(String, String)): this
    //#input(void configChanged(String, String)): this.config
    //#input(void configChanged(String, String)): this.config.__Tag
    //#input(void configChanged(String, String)): this.config.file
    //#input(void configChanged(String, String)): this.config.sources
    //#input(void configChanged(String, String)): this.manager
    //#input(void configChanged(String, String)): this.manager.tree
    //#output(void configChanged(String, String)): this.activeBackground
    //#output(void configChanged(String, String)): this.activeBold
    //#output(void configChanged(String, String)): this.activeForeground
    //#output(void configChanged(String, String)): this.rolloverColour
    //#pre[8] (void configChanged(String, String)): (soft) this.config != null
    //#pre[10] (void configChanged(String, String)): (soft) this.config.__Tag == com/dmdirc/config/ConfigManager
    //#pre[12] (void configChanged(String, String)): (soft) this.config.sources != null
    //#pre[14] (void configChanged(String, String)): (soft) this.manager != null
    //#pre[15] (void configChanged(String, String)): (soft) this.manager.tree != null
    //#post(void configChanged(String, String)): possibly_updated(this.activeBackground)
    //#post(void configChanged(String, String)): possibly_updated(this.activeBold)
    //#post(void configChanged(String, String)): possibly_updated(this.activeForeground)
    //#post(void configChanged(String, String)): possibly_updated(this.rolloverColour)
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:hasOption
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getOption
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getOptionColour
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getTree
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.JTree:repaint
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@153: {1}, {0}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@153: {0}, {1}
                ("treeviewRolloverColour".equals(key) ||
                "treeviewActiveBackground".equals(key) ||
                "treeviewActiveForeground".equals(key) ||
                "treeviewActiveBold".equals(key) ||
                "backgroundcolour".equals(key) ||
                "foregroundcolour".equals(key))) {
            setColours();
        }
    }
    //#TreeViewTreeCellRenderer.java:162: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.configChanged(String, String)
}
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewTreeCellRenderer]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.getTreeCellRendererComponent(Ljavax/swing/JTree;Ljava/lang/Object;ZZZIZ)Ljava/awt/Component;
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.setColours()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewTreeCellRenderer] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V == &configChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.getTreeCellRendererComponent(Ljavax/swing/JTree;Ljava/lang/Object;ZZZIZ)Ljava/awt/Component; == &getTreeCellRendererComponent
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init): __Dispatch_Table.setColours()V == &setColours
    //#TreeViewTreeCellRenderer.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer.com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer__static_init
    //#TreeViewTreeCellRenderer.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewTreeCellRenderer
