//# 6 errors, 1,329 messages
//#
/*
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init
    //#TreeFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#TreeFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__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.FrameContainer;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.interfaces.ConfigChangeListener;
import com.dmdirc.interfaces.IconChangeListener;
import com.dmdirc.interfaces.NotificationListener;
import com.dmdirc.interfaces.SelectionListener;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.ui.interfaces.FrameManager;
import com.dmdirc.ui.interfaces.Window;
import com.dmdirc.addons.ui_swing.UIUtilities;

import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

import net.miginfocom.swing.MigLayout;

/**
 * Manages open windows in the application in a tree style view.
 */
public final class TreeFrameManager implements FrameManager,
    //#TreeFrameManager.java:62: method: Tree com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$000(TreeFrameManager)
    //#input(Tree access$000(TreeFrameManager)): x0
    //#input(Tree access$000(TreeFrameManager)): x0.tree
    //#output(Tree access$000(TreeFrameManager)): return_value
    //#pre[1] (Tree access$000(TreeFrameManager)): x0 != null
    //#post(Tree access$000(TreeFrameManager)): return_value == x0.tree
    //#post(Tree access$000(TreeFrameManager)): init'ed(return_value)
    //#TreeFrameManager.java:62: end of method: Tree com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$000(TreeFrameManager)
    //#TreeFrameManager.java:62: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$100(TreeFrameManager)
    //#input(void access$100(TreeFrameManager)): ""._tainted
    //#input(void access$100(TreeFrameManager)): "."._tainted
    //#input(void access$100(TreeFrameManager)): "<Unknown>"._tainted
    //#input(void access$100(TreeFrameManager)): "@"._tainted
    //#input(void access$100(TreeFrameManager)): "Config option not found: "._tainted
    //#input(void access$100(TreeFrameManager)): "backgroundcolour"._tainted
    //#input(void access$100(TreeFrameManager)): "foregroundcolour"._tainted
    //#input(void access$100(TreeFrameManager)): "treeview"._tainted
    //#input(void access$100(TreeFrameManager)): "ui"._tainted
    //#input(void access$100(TreeFrameManager)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void access$100(TreeFrameManager)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigManager.stats
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.identities
    //#input(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.managers
    //#input(void access$100(TreeFrameManager)): x0
    //#input(void access$100(TreeFrameManager)): x0.tree
    //#output(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void access$100(TreeFrameManager)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void access$100(TreeFrameManager)): new ArrayList(getSources#1) num objects
    //#output(void access$100(TreeFrameManager)): new ArrayList(getSources#1).__Lock
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).channel
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).file
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).network
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).server
    //#output(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1).sources
    //#output(void access$100(TreeFrameManager)): new MapList(ConfigManager#1) num objects
    //#new obj(void access$100(TreeFrameManager)): java.lang.StringBuilder:toString(...)
    //#new obj(void access$100(TreeFrameManager)): new ArrayList(getSources#1)
    //#new obj(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1)
    //#new obj(void access$100(TreeFrameManager)): new MapList(ConfigManager#1)
    //#pre[9] (void access$100(TreeFrameManager)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[10] (void access$100(TreeFrameManager)): x0 != null
    //#pre[11] (void access$100(TreeFrameManager)): x0.tree != null
    //#pre[1] (void access$100(TreeFrameManager)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#post(void access$100(TreeFrameManager)): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void access$100(TreeFrameManager)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void access$100(TreeFrameManager)): new ArrayList(getSources#1) num objects == 0
    //#post(void access$100(TreeFrameManager)): new ConfigManager(getGlobalConfig#1) num objects == 0
    //#post(void access$100(TreeFrameManager)): new MapList(ConfigManager#1) num objects == 0
    //#post(void access$100(TreeFrameManager)): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void access$100(TreeFrameManager)): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:getTarget
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:addListener
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:getSources
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:addConfigManager
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:hasOption
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:getOption
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:getOptionColour
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBackground
    //#unanalyzed(void access$100(TreeFrameManager)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setForeground
    //#TreeFrameManager.java:62: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$100(TreeFrameManager)
    //#TreeFrameManager.java:62: method: Map com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$200(TreeFrameManager)
    //#input(Map access$200(TreeFrameManager)): x0
    //#input(Map access$200(TreeFrameManager)): x0.nodes
    //#output(Map access$200(TreeFrameManager)): return_value
    //#pre[1] (Map access$200(TreeFrameManager)): x0 != null
    //#post(Map access$200(TreeFrameManager)): return_value == x0.nodes
    //#post(Map access$200(TreeFrameManager)): init'ed(return_value)
    //#TreeFrameManager.java:62: end of method: Map com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$200(TreeFrameManager)
    //#TreeFrameManager.java:62: method: TreeViewModel com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$300(TreeFrameManager)
    //#input(TreeViewModel access$300(TreeFrameManager)): x0
    //#input(TreeViewModel access$300(TreeFrameManager)): x0.model
    //#output(TreeViewModel access$300(TreeFrameManager)): return_value
    //#pre[1] (TreeViewModel access$300(TreeFrameManager)): x0 != null
    //#post(TreeViewModel access$300(TreeFrameManager)): return_value == x0.model
    //#post(TreeViewModel access$300(TreeFrameManager)): init'ed(return_value)
    //#TreeFrameManager.java:62: end of method: TreeViewModel com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.access$300(TreeFrameManager)
        AdjustmentListener, Serializable,
        ConfigChangeListener, SelectionListener,
        NotificationListener, IconChangeListener {

    /**
     * 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 = 5;
    /** display tree. */
    private final Tree tree;
    /** data model. */
    private final TreeViewModel model;
    /** node storage, used for adding and deleting nodes correctly. */
    private final Map<FrameContainer, TreeViewNode> nodes;

    /** creates a new instance of the TreeFrameManager. */
    public TreeFrameManager() {
    //#TreeFrameManager.java:81: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): ""._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "."._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "<Unknown>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "@"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "Config option not found: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "backgroundcolour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "dragSelection"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "foregroundcolour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "treeview"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "treeviewActiveBackground"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "treeviewActiveBold"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "treeviewActiveForeground"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "treeviewRolloverColour"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): "ui"._tainted
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.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.TreeFrameManager()): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Dispatch_Table.addChangeListener(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigManager.stats
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.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.TreeFrameManager()): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.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.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.TreeFrameManager()): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig.listeners
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.identities
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.managers
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): java.lang.StringBuilder:toString(...)._tainted
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ArrayList(getSources#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ArrayList(getSources#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).channel
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).file
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).network
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).server
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1).sources
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new FrameContainerComparator(TreeViewModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new HashMap(TreeFrameManager#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new MapList(ConfigManager#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new MapList(ConfigManager#1).__Lock
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new Tree(TreeFrameManager#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.__Tag
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.dragSelect
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.manager
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new TreeViewModel(TreeFrameManager#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model.__Tag
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model.comparator
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.nodes
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): java.lang.StringBuilder:toString(...)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ArrayList(getSources#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new FrameContainerComparator(TreeViewModel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new HashMap(TreeFrameManager#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new MapList(ConfigManager#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new Tree(TreeFrameManager#4)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new TreeViewModel(TreeFrameManager#2)
    //#pre[11] (void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[1] (void com.dmdirc.addons.ui_swing.framemanager.tree.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.TreeFrameManager()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): getGlobalConfig(...).listeners != null
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): getGlobalConfig(...).listeners != null
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): getGlobalConfig(...).listeners != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ArrayList(getSources#1) num objects == 0
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new ConfigManager(getGlobalConfig#1) num objects == 0
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new MapList(ConfigManager#1) num objects == 0
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model == &new TreeViewModel(TreeFrameManager#2)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.nodes == &new HashMap(TreeFrameManager#1)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree == &new Tree(TreeFrameManager#4)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): not_init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new FrameContainerComparator(TreeViewModel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new HashMap(TreeFrameManager#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new Tree(TreeFrameManager#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): new TreeViewModel(TreeFrameManager#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(new MapList(ConfigManager#1).__Lock)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/Tree
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): init'ed(this.tree.dragSelect)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.manager == this
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.tree.manager != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): this.model.comparator == &new FrameContainerComparator(TreeViewModel#1)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:getTarget
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:addListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:getSources
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:addConfigManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:hasOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:getOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:getOptionColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.tree.DefaultMutableTreeNode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.tree.DefaultTreeModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.FrameContainerComparator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:getTree
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.JTree:repaint
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.util.MapList:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.JTree
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:putClientProperty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.InputMap:setParent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.InputMap:clear
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getSelectionModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.tree.TreeSelectionModel:setSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setRootVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setRowHeight
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setShowsRootHandles
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.TreeScroller
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setFocusable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:addMouseMotionListener
        nodes = new HashMap<FrameContainer, TreeViewNode>();
        model = new TreeViewModel(new TreeViewNode(null, null));
        tree = new Tree(this, model);

        tree.setCellRenderer(new TreeViewTreeCellRenderer(this));
    //#TreeFrameManager.java:86: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setCellRenderer(TreeCellRenderer)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setCellRenderer(TreeCellRenderer)
        tree.setVisible(true);
    //#TreeFrameManager.java:87: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setVisible(bool)

        IdentityManager.getGlobalConfig().addChangeListener("treeview", this);
        IdentityManager.getGlobalConfig().addChangeListener("ui",
    //#TreeFrameManager.java:90: ?use of default init
    //#    init'ed(getGlobalConfig(...).__Tag)
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(getGlobalConfig(...).__Tag)
    //#    VN: getGlobalConfig(...).__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid  Uncertain
                "backgroundcolour", this);
        IdentityManager.getGlobalConfig().addChangeListener("ui",
                "foregroundcolour", this);
    }
    //#TreeFrameManager.java:94: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()

    /** {@inheritDoc} */
    @Override
    public boolean canPositionVertically() {
        return true;
    //#TreeFrameManager.java:99: method: bool com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.canPositionVertically()
    //#output(bool canPositionVertically()): return_value
    //#post(bool canPositionVertically()): return_value == 1
    //#TreeFrameManager.java:99: end of method: bool com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.canPositionVertically()
    }

    /** {@inheritDoc} */
    @Override
    public boolean canPositionHorizontally() {
        return false;
    //#TreeFrameManager.java:105: method: bool com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.canPositionHorizontally()
    //#output(bool canPositionHorizontally()): return_value
    //#post(bool canPositionHorizontally()): return_value == 0
    //#TreeFrameManager.java:105: end of method: bool com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.canPositionHorizontally()
    }

    /** {@inheritDoc} */
    @Override
    public void setParent(final JComponent parent) {
        SwingUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:111: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): this.val$parent
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): this.val$parent == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)): init'ed(this.val$parent)
    //#TreeFrameManager.java:111: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1(TreeFrameManager, JComponent)
    //#TreeFrameManager.java:111: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.setParent(JComponent)
    //#input(void setParent(JComponent)): parent
    //#input(void setParent(JComponent)): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                final JScrollPane scrollPane = new JScrollPane(tree);
    //#TreeFrameManager.java:116: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.run()
    //#input(void run()): ""._tainted
    //#input(void run()): "."._tainted
    //#input(void run()): "<Unknown>"._tainted
    //#input(void run()): "@"._tainted
    //#input(void run()): "Config option not found: "._tainted
    //#input(void run()): "backgroundcolour"._tainted
    //#input(void run()): "foregroundcolour"._tainted
    //#input(void run()): "treeview"._tainted
    //#input(void run()): "ui"._tainted
    //#input(void run()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void run()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void run()): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void run()): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void run()): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void run()): com/dmdirc/config/ConfigManager.stats
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void run()): com/dmdirc/config/ConfigSource.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void run()): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void run()): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.getOptionColour(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/awt/Color;
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void run()): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void run()): com/dmdirc/config/IdentityManager.identities
    //#input(void run()): com/dmdirc/config/IdentityManager.managers
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.tree
    //#input(void run()): this.val$parent
    //#output(void run()): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void run()): java.lang.StringBuilder:toString(...)._tainted
    //#output(void run()): new ArrayList(getSources#1) num objects
    //#output(void run()): new ArrayList(getSources#1).__Lock
    //#output(void run()): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void run()): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void run()): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void run()): new ConfigManager(getGlobalConfig#1).channel
    //#output(void run()): new ConfigManager(getGlobalConfig#1).file
    //#output(void run()): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void run()): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void run()): new ConfigManager(getGlobalConfig#1).network
    //#output(void run()): new ConfigManager(getGlobalConfig#1).server
    //#output(void run()): new ConfigManager(getGlobalConfig#1).sources
    //#output(void run()): new MapList(ConfigManager#1) num objects
    //#new obj(void run()): java.lang.StringBuilder:toString(...)
    //#new obj(void run()): new ArrayList(getSources#1)
    //#new obj(void run()): new ConfigManager(getGlobalConfig#1)
    //#new obj(void run()): new MapList(ConfigManager#1)
    //#pre[9] (void run()): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[11] (void run()): this.this$0 != null
    //#pre[12] (void run()): this.tree != null
    //#pre[13] (void run()): this.val$parent != null
    //#pre[1] (void run()): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#presumption(void run()): javax.swing.JScrollPane:getHorizontalScrollBar(...)@119 != null
    //#post(void run()): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void run()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void run()): new ArrayList(getSources#1) num objects == 0
    //#post(void run()): new ConfigManager(getGlobalConfig#1) num objects == 0
    //#post(void run()): new MapList(ConfigManager#1) num objects == 0
    //#post(void run()): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint
    //#unanalyzed(void run()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void run()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void run()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void run()): Effects-of-calling:getTarget
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void run()): Effects-of-calling:addListener
    //#unanalyzed(void run()): Effects-of-calling:getSources
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void run()): Effects-of-calling:addConfigManager
    //#unanalyzed(void run()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void run()): Effects-of-calling:hasOption
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void run()): Effects-of-calling:getOption
    //#unanalyzed(void run()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void run()): Effects-of-calling:getOptionColour
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void run()): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBackground
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setForeground
                scrollPane.setAutoscrolls(true);
                scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
                scrollPane.getHorizontalScrollBar().addAdjustmentListener(TreeFrameManager.this);

                parent.setLayout(new MigLayout("ins 0, fill"));
    //#TreeFrameManager.java:121: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
                parent.add(scrollPane, "grow");
                parent.setFocusable(false);

                setColours();
            }
    //#TreeFrameManager.java:126: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.run()
        });
    }
    //#TreeFrameManager.java:128: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.setParent(JComponent)

    /** {@inheritDoc} */
    @Override
    public void addWindow(final FrameContainer window) {
        addWindow(model.getRootNode(), window);
    //#TreeFrameManager.java:133: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(FrameContainer)
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel]
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Descendant_Table[others]
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Dispatch_Table.getRootNode()Lcom/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode;
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void addWindow(FrameContainer)): this
    //#input(void addWindow(FrameContainer)): this.model
    //#input(void addWindow(FrameContainer)): this.model.__Tag
    //#input(void addWindow(FrameContainer)): window
    //#pre[2] (void addWindow(FrameContainer)): this.model != null
    //#pre[3] (void addWindow(FrameContainer)): this.model.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel:getRoot
    }
    //#TreeFrameManager.java:134: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void addWindow(final FrameContainer parent,
            final FrameContainer window) {
        addWindow(nodes.get(parent), window);
    //#TreeFrameManager.java:140: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(FrameContainer, FrameContainer)
    //#input(void addWindow(FrameContainer, FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void addWindow(FrameContainer, FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void addWindow(FrameContainer, FrameContainer)): parent
    //#input(void addWindow(FrameContainer, FrameContainer)): this
    //#input(void addWindow(FrameContainer, FrameContainer)): this.nodes
    //#input(void addWindow(FrameContainer, FrameContainer)): window
    //#pre[3] (void addWindow(FrameContainer, FrameContainer)): this.nodes != null
    //#presumption(void addWindow(FrameContainer, FrameContainer)): java.util.Map:get(...).__Tag@140 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    }
    //#TreeFrameManager.java:141: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(FrameContainer, FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void delWindow(final FrameContainer parent,
            final FrameContainer window) {
        delWindow(window);
    //#TreeFrameManager.java:147: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.delWindow(FrameContainer, FrameContainer)
    //#input(void delWindow(FrameContainer, FrameContainer)): this
    //#input(void delWindow(FrameContainer, FrameContainer)): window
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    }
    //#TreeFrameManager.java:148: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.delWindow(FrameContainer, FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void delWindow(final FrameContainer window) {
        UIUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:153: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)): init'ed(this.val$window)
    //#TreeFrameManager.java:153: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2(TreeFrameManager, FrameContainer)
    //#TreeFrameManager.java:153: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.delWindow(FrameContainer)
    //#TreeFrameManager.java:153: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void delWindow(FrameContainer)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#input(void delWindow(FrameContainer)): this
    //#input(void delWindow(FrameContainer)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                if (nodes == null || nodes.get(window) == null) {
    //#TreeFrameManager.java:158: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.run()
    //#input(void run()): "delServer triggered for root node"._tainted
    //#input(void run()): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.model
    //#input(void run()): this.this$0.nodes
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): (soft) this.model != null
    //#pre[5] (void run()): (soft) this.val$window != null
    //#presumption(void run()): init'ed(com.dmdirc.logger.ErrorLevel.MEDIUM)
    //#presumption(void run()): java.util.Map:get(...)@161 != null
    //#test_vector(void run()): this.nodes: Addr_Set{null}, Inverse{null}
    //#test_vector(void run()): java.util.Map:get(...)@158: Inverse{null}, Addr_Set{null}
    //#test_vector(void run()): javax.swing.tree.DefaultMutableTreeNode:getLevel(...)@163: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
                    return;
                }
                final DefaultMutableTreeNode node =
                        nodes.get(window);
                if (node.getLevel() == 0) {
                    Logger.appError(ErrorLevel.MEDIUM,
    //#TreeFrameManager.java:164: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
                            "delServer triggered for root node" +
                            node.toString(),
                            new IllegalArgumentException());
                } else {
                    model.removeNodeFromParent(nodes.get(window));
    //#TreeFrameManager.java:169: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel:removeNodeFromParent(MutableTreeNode)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel:removeNodeFromParent(MutableTreeNode)
                }
                nodes.remove(window);
                window.removeSelectionListener(TreeFrameManager.this);
    //#TreeFrameManager.java:172: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:removeSelectionListener(SelectionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:removeSelectionListener(SelectionListener)
                window.removeIconChangeListener(TreeFrameManager.this);
    //#TreeFrameManager.java:173: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:removeIconChangeListener(IconChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:removeIconChangeListener(IconChangeListener)
                window.removeNotificationListener(TreeFrameManager.this);
    //#TreeFrameManager.java:174: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:removeNotificationListener(NotificationListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:removeNotificationListener(NotificationListener)
            }
    //#TreeFrameManager.java:175: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.run()
        });
    }
    //#TreeFrameManager.java:177: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.delWindow(FrameContainer)

    /** 
     * Adds a window to the frame container.
     * 
     * @param parent Parent node
     * @param window Window to add
     */
    public void addWindow(final TreeViewNode parent,
            final FrameContainer window) {
        UIUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:187: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.val$parent
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.val$parent == Param_3
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): init'ed(this.val$parent)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)): init'ed(this.val$window)
    //#TreeFrameManager.java:187: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3(TreeFrameManager, FrameContainer, TreeViewNode)
    //#TreeFrameManager.java:187: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(TreeViewNode, FrameContainer)
    //#TreeFrameManager.java:187: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void addWindow(TreeViewNode, FrameContainer)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#input(void addWindow(TreeViewNode, FrameContainer)): parent
    //#input(void addWindow(TreeViewNode, FrameContainer)): this
    //#input(void addWindow(TreeViewNode, FrameContainer)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                final TreeViewNode node =
    //#TreeFrameManager.java:192: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.run()
    //#TreeFrameManager.java:192: Warning: method not available - call not analyzed
    //#    call on Window com.dmdirc.FrameContainer:getFrame()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: Window com.dmdirc.FrameContainer:getFrame()
    //#input(void run()): ""._tainted
    //#input(void run()): "."._tainted
    //#input(void run()): "<Unknown>"._tainted
    //#input(void run()): "@"._tainted
    //#input(void run()): "Config option not found: "._tainted
    //#input(void run()): "sortservers"._tainted
    //#input(void run()): "sortwindows"._tainted
    //#input(void run()): "treeview"._tainted
    //#input(void run()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void run()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel.__Dispatch_Table.getRootNode()Lcom/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode;
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getFrameContainer()Lcom/dmdirc/FrameContainer;
    //#input(void run()): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void run()): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void run()): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void run()): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void run()): com/dmdirc/config/ConfigManager.stats
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void run()): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void run()): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void run()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void run()): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void run()): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void run()): com/dmdirc/config/IdentityManager.identities
    //#input(void run()): com/dmdirc/config/IdentityManager.managers
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.model
    //#input(void run()): this.this$0.model.__Tag
    //#input(void run()): this.this$0.model.comparator
    //#input(void run()): this.this$0.model.root
    //#input(void run()): this.this$0.nodes
    //#input(void run()): this.this$0.tree
    //#input(void run()): this.val$parent
    //#input(void run()): this.val$window
    //#output(void run()): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void run()): java.lang.StringBuilder:toString(...)._tainted
    //#output(void run()): new ArrayList(getSources#1) num objects
    //#output(void run()): new ArrayList(getSources#1).__Lock
    //#output(void run()): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void run()): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void run()): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void run()): new ConfigManager(getGlobalConfig#1).channel
    //#output(void run()): new ConfigManager(getGlobalConfig#1).file
    //#output(void run()): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void run()): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void run()): new ConfigManager(getGlobalConfig#1).network
    //#output(void run()): new ConfigManager(getGlobalConfig#1).server
    //#output(void run()): new ConfigManager(getGlobalConfig#1).sources
    //#output(void run()): new MapList(ConfigManager#1) num objects
    //#new obj(void run()): java.lang.StringBuilder:toString(...)
    //#new obj(void run()): new ArrayList(getSources#1)
    //#new obj(void run()): new ConfigManager(getGlobalConfig#1)
    //#new obj(void run()): new MapList(ConfigManager#1)
    //#pre[11] (void run()): this.this$0 != null
    //#pre[12] (void run()): this.model != null
    //#pre[16] (void run()): this.nodes != null
    //#pre[17] (void run()): this.tree != null
    //#pre[19] (void run()): this.val$window != null
    //#pre[1] (void run()): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#pre[9] (void run()): (soft) init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[13] (void run()): (soft) this.model.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewModel
    //#pre[14] (void run()): (soft) this.model.comparator != null
    //#pre[15] (void run()): (soft) init'ed(this.model.root)
    //#presumption(void run()): (int) (java.awt.Rectangle:getY(...)@205) in {-2_147_483_648..4_294_967_295}
    //#presumption(void run()): com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel:getRoot(...)@147 != null
    //#presumption(void run()): com/dmdirc/config/IdentityManager.globalconfig.__Tag@195 == com/dmdirc/config/ConfigManager
    //#presumption(void run()): com/dmdirc/config/IdentityManager.globalconfig.__Tag@197 == com/dmdirc/config/ConfigManager
    //#post(void run()): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#post(void run()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void run()): init'ed(new ArrayList(getSources#1) num objects)
    //#post(void run()): possibly_updated(new ArrayList(getSources#1).__Lock)
    //#post(void run()): init'ed(new ConfigManager(getGlobalConfig#1) num objects)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).file)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).network)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).server)
    //#post(void run()): possibly_updated(new ConfigManager(getGlobalConfig#1).sources)
    //#post(void run()): init'ed(new MapList(ConfigManager#1) num objects)
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.interfaces.Window:getContainer
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainer:toString
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setText
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setOpaque
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setToolTipText
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainer:getIcon
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setBorder
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:getFont
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setPreferredSize
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.tree.DefaultMutableTreeNode
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel:getRoot
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainerComparator:compare
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.GlobalWindow:instanceof
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void run()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void run()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void run()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void run()): Effects-of-calling:getTarget
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void run()): Effects-of-calling:addListener
    //#unanalyzed(void run()): Effects-of-calling:getSources
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void run()): Effects-of-calling:addConfigManager
    //#unanalyzed(void run()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void run()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void run()): Effects-of-calling:hasOption
    //#unanalyzed(void run()): Effects-of-calling:getOption
    //#unanalyzed(void run()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getChildCount
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getChildAt
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getUserObject
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:toString
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:compareToIgnoreCase
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.tree.DefaultTreeModel:insertNodeInto
    //#test_vector(void run()): this.val$parent: Inverse{null}, Addr_Set{null}
    //#test_vector(void run()): com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getRowBounds(...)@202: Addr_Set{null}, Inverse{null}
                        new TreeViewNode(new NodeLabel(window.getFrame()),
                        window);
                nodes.put(window, node);
                if (parent == null) {
                    model.insertNodeInto(node, model.getRootNode());
                } else {
                    model.insertNodeInto(node, parent);
                }
                tree.expandPath(new TreePath(node.getPath()).getParentPath());
    //#TreeFrameManager.java:201: Warning: method not available - call not analyzed
    //#    call on TreeNode[] com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getPath()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: TreeNode[] com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getPath()
    //#TreeFrameManager.java:201: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:expandPath(TreePath)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:expandPath(TreePath)
                final Rectangle view =
    //#TreeFrameManager.java:202: Warning: method not available - call not analyzed
    //#    call on TreeNode[] com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getPath()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: TreeNode[] com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode:getPath()
    //#TreeFrameManager.java:202: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getRowForPath(TreePath)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getRowForPath(TreePath)
    //#TreeFrameManager.java:202: Warning: method not available - call not analyzed
    //#    call on Rectangle com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getRowBounds(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: Rectangle com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getRowBounds(int)
                        tree.getRowBounds(tree.getRowForPath(new TreePath(node.getPath())));
                if (view != null) {
                    tree.scrollRectToVisible(new Rectangle(0, (int) view.getY(), 0, 0));
    //#TreeFrameManager.java:205: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:scrollRectToVisible(Rectangle)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:scrollRectToVisible(Rectangle)
                }
                window.addSelectionListener(TreeFrameManager.this);
    //#TreeFrameManager.java:207: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:addSelectionListener(SelectionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:addSelectionListener(SelectionListener)
                window.addIconChangeListener(TreeFrameManager.this);
    //#TreeFrameManager.java:208: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:addIconChangeListener(IconChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:addIconChangeListener(IconChangeListener)
                window.addNotificationListener(TreeFrameManager.this);
    //#TreeFrameManager.java:209: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:addNotificationListener(NotificationListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:addNotificationListener(NotificationListener)
            }
    //#TreeFrameManager.java:210: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.run()
        });
    }
    //#TreeFrameManager.java:212: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.addWindow(TreeViewNode, FrameContainer)

    /**
     * Returns the tree for this frame manager.
     *
     * @return Tree for the manager
     */
    public JTree getTree() {
        return tree;
    //#TreeFrameManager.java:220: method: JTree com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.getTree()
    //#input(JTree getTree()): this
    //#input(JTree getTree()): this.tree
    //#output(JTree getTree()): return_value
    //#post(JTree getTree()): return_value == this.tree
    //#post(JTree getTree()): init'ed(return_value)
    //#TreeFrameManager.java:220: end of method: JTree com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.getTree()
    }

    /** 
     * {@inheritDoc}
     * 
     * @param e Adjustment event
     */
    @Override
    public void adjustmentValueChanged(final AdjustmentEvent e) {
        //HACK Disregard all scrolling events
        ((JScrollBar) e.getSource()).setValue(0);
    //#TreeFrameManager.java:231: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.adjustmentValueChanged(AdjustmentEvent)
    //#input(void adjustmentValueChanged(AdjustmentEvent)): e
    //#pre[1] (void adjustmentValueChanged(AdjustmentEvent)): e != null
    //#presumption(void adjustmentValueChanged(AdjustmentEvent)): java.awt.event.AdjustmentEvent:getSource(...)@231 != null
    }
    //#TreeFrameManager.java:232: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.adjustmentValueChanged(AdjustmentEvent)

    /**
     * Checks for and sets a rollover node.
     * 
     * @param event event to check 
     */
    protected void checkRollover(final MouseEvent event) {
        NodeLabel node = null;
    //#TreeFrameManager.java:240: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.checkRollover(MouseEvent)
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.setRollover(Z)V
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/Tree]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Descendant_Table[others]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Dispatch_Table.getNodeForLocation(II)Lcom/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode;
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void checkRollover(MouseEvent)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(void checkRollover(MouseEvent)): event
    //#input(void checkRollover(MouseEvent)): this
    //#input(void checkRollover(MouseEvent)): this.nodes
    //#input(void checkRollover(MouseEvent)): this.nodes.__Lock
    //#input(void checkRollover(MouseEvent)): this.tree
    //#input(void checkRollover(MouseEvent)): this.tree.__Tag
    //#pre[3] (void checkRollover(MouseEvent)): this.nodes != null
    //#pre[4] (void checkRollover(MouseEvent)): this.tree != null
    //#pre[5] (void checkRollover(MouseEvent)): (soft) this.tree.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/Tree
    //#presumption(void checkRollover(MouseEvent)): java.util.Iterator:next(...).__Tag@250 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#presumption(void checkRollover(MouseEvent)): java.util.Iterator:next(...)@250 != null
    //#presumption(void checkRollover(MouseEvent)): java.util.Map:values(...)@250 != null
    //#presumption(void checkRollover(MouseEvent)): label.__Tag@250 == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#presumption(void checkRollover(MouseEvent)): treeNode.label@250 != null
    //#unanalyzed(void checkRollover(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getPathForLocation
    //#unanalyzed(void checkRollover(MouseEvent)): Effects-of-calling:javax.swing.tree.TreePath:getLastPathComponent
    //#test_vector(void checkRollover(MouseEvent)): event: Inverse{null}, Addr_Set{null}
    //#test_vector(void checkRollover(MouseEvent)): java.util.Iterator:hasNext(...)@250: {1}, {0}

        if (event == null) {
            node = null;
        } else if (tree.getNodeForLocation(event.getX(), event.getY()) != null) {
            node =
    //#TreeFrameManager.java:245: ?null dereference
    //#    getNodeForLocation(...) != null
    //#    severity: MEDIUM
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void checkRollover(MouseEvent)
    //#    basic block: bb_4
    //#    assertion: getNodeForLocation(...) != null
    //#    VN: getNodeForLocation(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#TreeFrameManager.java:245: ?use of default init
    //#    init'ed(getNodeForLocation(...).__Tag)
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void checkRollover(MouseEvent)
    //#    basic block: bb_4
    //#    assertion: init'ed(getNodeForLocation(...).__Tag)
    //#    VN: getNodeForLocation(...).__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#TreeFrameManager.java:245: ?null dereference
    //#    com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[getNodeForLocation(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void checkRollover(MouseEvent)
    //#    basic block: bb_4
    //#    assertion: com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[getNodeForLocation(...).__Tag] != null
    //#    VN: com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[getNodeForLocation(...).__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                    tree.getNodeForLocation(event.getX(), event.getY()).getLabel();
        }

        synchronized (nodes) {
            for (TreeViewNode treeNode : nodes.values()) {
                final NodeLabel label = treeNode.getLabel();
                label.setRollover(node == null ? false : label == node);
            }
        }
        tree.repaint();
    //#TreeFrameManager.java:255: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void checkRollover(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    }
    //#TreeFrameManager.java:256: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.checkRollover(MouseEvent)

    /** Sets treeview colours. */
    private void setColours() {
        tree.setBackground(IdentityManager.getGlobalConfig().getOptionColour(
    //#TreeFrameManager.java:260: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.setColours()
    //#TreeFrameManager.java:260: ?use of default init
    //#    init'ed(Obj_Id#874:getOptionColour(...))
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void setColours()
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(Obj_Id#874:getOptionColour(...))
    //#    VN: getOptionColour(...)
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#TreeFrameManager.java:260: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBackground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void setColours()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBackground(Color)
    //#input(void setColours()): ""._tainted
    //#input(void setColours()): "."._tainted
    //#input(void setColours()): "<Unknown>"._tainted
    //#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()): "ui"._tainted
    //#input(void setColours()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void setColours()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void setColours()): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#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.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.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)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/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void setColours()): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void setColours()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void setColours()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#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.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#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.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void setColours()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void setColours()): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig.__Lock
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void setColours()): com/dmdirc/config/IdentityManager.globalconfig.sources.__Lock
    //#input(void setColours()): com/dmdirc/config/IdentityManager.identities
    //#input(void setColours()): com/dmdirc/config/IdentityManager.managers
    //#input(void setColours()): this
    //#input(void setColours()): this.tree
    //#output(void setColours()): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void setColours()): java.lang.StringBuilder:toString(...)._tainted
    //#output(void setColours()): new ArrayList(getSources#1) num objects
    //#output(void setColours()): new ArrayList(getSources#1).__Lock
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).channel
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).file
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).network
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).server
    //#output(void setColours()): new ConfigManager(getGlobalConfig#1).sources
    //#output(void setColours()): new MapList(ConfigManager#1) num objects
    //#new obj(void setColours()): java.lang.StringBuilder:toString(...)
    //#new obj(void setColours()): new ArrayList(getSources#1)
    //#new obj(void setColours()): new ConfigManager(getGlobalConfig#1)
    //#new obj(void setColours()): new MapList(ConfigManager#1)
    //#pre[4] (void setColours()): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[6] (void setColours()): this.tree != null
    //#pre[1] (void setColours()): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#presumption(void setColours()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void setColours()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void setColours()): getGlobalConfig(...).sources != null
    //#presumption(void setColours()): getGlobalConfig(...).sources != null
    //#post(void setColours()): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void setColours()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void setColours()): new ArrayList(getSources#1) num objects == 0
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1) num objects == 0
    //#post(void setColours()): new MapList(ConfigManager#1) num objects == 0
    //#post(void setColours()): new ArrayList(getSources#1) num objects <= 1
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void setColours()): new MapList(ConfigManager#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void setColours()): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).__Tag == com/dmdirc/config/ConfigManager
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).channel == &java.lang.StringBuilder:toString(...)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).ircd == &""
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).network == &""
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).server == &""
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).listeners == &new MapList(ConfigManager#1)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void setColours()): new ConfigManager(getGlobalConfig#1).sources == &new ArrayList(getSources#1)
    //#post(void setColours()): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#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: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.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void setColours()): Effects-of-calling:getTarget
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void setColours()): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void setColours()): Effects-of-calling:addListener
    //#unanalyzed(void setColours()): Effects-of-calling:getSources
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void setColours()): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void setColours()): Effects-of-calling:addConfigManager
    //#unanalyzed(void setColours()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void setColours()): Effects-of-calling:hasOption
    //#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: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
                "treeview", "backgroundcolour",
                "ui", "backgroundcolour"));
        tree.setForeground(IdentityManager.getGlobalConfig().getOptionColour(
    //#TreeFrameManager.java:263: ?use of default init
    //#    init'ed(Obj_Id#897:getOptionColour(...))
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void setColours()
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(Obj_Id#897:getOptionColour(...))
    //#    VN: getOptionColour(...)
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#TreeFrameManager.java:263: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setForeground(Color)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void setColours()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setForeground(Color)
                "treeview", "foregroundcolour",
                "ui", "foregroundcolour"));

        tree.repaint();
    //#TreeFrameManager.java:267: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void setColours()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    }
    //#TreeFrameManager.java:268: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.setColours()

    /** {@inheritDoc} */
    @Override
    public void configChanged(final String domain, final String key) {
        setColours();
    //#TreeFrameManager.java:273: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.configChanged(String, String)
    //#input(void configChanged(String, String)): ""._tainted
    //#input(void configChanged(String, String)): "."._tainted
    //#input(void configChanged(String, String)): "<Unknown>"._tainted
    //#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)): "ui"._tainted
    //#input(void configChanged(String, String)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void configChanged(String, String)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#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.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.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)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/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void configChanged(String, String)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#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.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#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.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void configChanged(String, String)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.identities
    //#input(void configChanged(String, String)): com/dmdirc/config/IdentityManager.managers
    //#input(void configChanged(String, String)): this
    //#input(void configChanged(String, String)): this.tree
    //#output(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void configChanged(String, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void configChanged(String, String)): new ArrayList(getSources#1) num objects
    //#output(void configChanged(String, String)): new ArrayList(getSources#1).__Lock
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).channel
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).file
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).network
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).server
    //#output(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1).sources
    //#output(void configChanged(String, String)): new MapList(ConfigManager#1) num objects
    //#new obj(void configChanged(String, String)): java.lang.StringBuilder:toString(...)
    //#new obj(void configChanged(String, String)): new ArrayList(getSources#1)
    //#new obj(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1)
    //#new obj(void configChanged(String, String)): new MapList(ConfigManager#1)
    //#pre[9] (void configChanged(String, String)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[11] (void configChanged(String, String)): this.tree != null
    //#pre[1] (void configChanged(String, String)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#post(void configChanged(String, String)): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void configChanged(String, String)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void configChanged(String, String)): new ArrayList(getSources#1) num objects == 0
    //#post(void configChanged(String, String)): new ConfigManager(getGlobalConfig#1) num objects == 0
    //#post(void configChanged(String, String)): new MapList(ConfigManager#1) num objects == 0
    //#post(void configChanged(String, String)): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void configChanged(String, String)): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#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: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.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getTarget
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:addListener
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getSources
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:addConfigManager
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:hasOption
    //#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: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:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setBackground
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.Tree:setForeground
    }
    //#TreeFrameManager.java:274: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.configChanged(String, String)

    /** {@inheritDoc} */
    @Override
    public void selectionChanged(final Window window) {
        synchronized (nodes) {
    //#TreeFrameManager.java:279: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.selectionChanged(Window)
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/Tree]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Descendant_Table[others]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/Tree.__Dispatch_Table.setTreePath(Ljavax/swing/tree/TreePath;)V
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(void selectionChanged(Window)): this
    //#input(void selectionChanged(Window)): this.nodes
    //#input(void selectionChanged(Window)): this.nodes.__Lock
    //#input(void selectionChanged(Window)): this.tree
    //#input(void selectionChanged(Window)): this.tree.__Tag
    //#input(void selectionChanged(Window)): window
    //#output(void selectionChanged(Window)): new TreePath(selectionChanged#1) num objects
    //#output(void selectionChanged(Window)): this.tree.path
    //#new obj(void selectionChanged(Window)): new TreePath(selectionChanged#1)
    //#pre[3] (void selectionChanged(Window)): this.nodes != null
    //#pre[4] (void selectionChanged(Window)): (soft) this.tree != null
    //#pre[5] (void selectionChanged(Window)): (soft) this.tree.__Tag == com/dmdirc/addons/ui_swing/framemanager/tree/Tree
    //#presumption(void selectionChanged(Window)): com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getModel(...)@288 != null
    //#presumption(void selectionChanged(Window)): java.util.Iterator:next(...).__Tag@281 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#presumption(void selectionChanged(Window)): java.util.Iterator:next(...)@281 != null
    //#presumption(void selectionChanged(Window)): java.util.Map:values(...)@280 != null
    //#presumption(void selectionChanged(Window)): label.__Tag@281 == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#presumption(void selectionChanged(Window)): treeNode.label@281 != null
    //#post(void selectionChanged(Window)): this.tree.path == One-of{old this.tree.path, &new TreePath(selectionChanged#1)}
    //#post(void selectionChanged(Window)): new TreePath(selectionChanged#1) num objects <= 1
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    //#test_vector(void selectionChanged(Window)): window: Addr_Set{null}, Inverse{null}
    //#test_vector(void selectionChanged(Window)): java.util.Iterator:hasNext(...)@281: {1}, {0}
    //#test_vector(void selectionChanged(Window)): javax.swing.tree.DefaultTreeModel:getPathToRoot(...)@288: Addr_Set{null}, Inverse{null}
    //#test_vector(void selectionChanged(Window)): treePath.length@288: {0}, {1..+Inf}
            final Collection<TreeViewNode> collection = nodes.values();
            for (TreeViewNode treeNode : collection) {
                final NodeLabel label = treeNode.getLabel();
                label.selectionChanged(window);
            }
        }

        if (window != null) {
            final TreeNode[] treePath =
    //#TreeFrameManager.java:288: Warning: method not available - call not analyzed
    //#    call on TreeModel com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void selectionChanged(Window)
    //#    unanalyzed callee: TreeModel com.dmdirc.addons.ui_swing.framemanager.tree.Tree:getModel()
    //#TreeFrameManager.java:288: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void selectionChanged(Window)
    //#    unanalyzed callee: FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
                    ((DefaultTreeModel) tree.getModel()).getPathToRoot(nodes.get(window.getContainer()));
            if (treePath != null && treePath.length > 0) {
                final TreePath path = new TreePath(treePath);
                if (path != null) {
    //#TreeFrameManager.java:292: Warning: test always goes same way
    //#    Test predetermined because path != null
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
    //#    method: void selectionChanged(Window)
    //#    from bb: bb_10
    //#    live edge: bb_10-->bb_11
    //#    tested vn: 0
    //#    tested vn values: {0}
                    tree.setTreePath(path);
                }
            }
        }
    }
    //#TreeFrameManager.java:297: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.selectionChanged(Window)

    /** {@inheritDoc} */
    @Override
    public void notificationSet(final Window window, final Color colour) {
        SwingUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:302: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.val$colour
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.val$colour == Param_3
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): init'ed(this.val$colour)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)): init'ed(this.val$window)
    //#TreeFrameManager.java:302: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4(TreeFrameManager, Window, Color)
    //#TreeFrameManager.java:302: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.notificationSet(Window, Color)
    //#input(void notificationSet(Window, Color)): colour
    //#input(void notificationSet(Window, Color)): this
    //#input(void notificationSet(Window, Color)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                synchronized (nodes) {
    //#TreeFrameManager.java:307: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.notificationSet(Lcom/dmdirc/ui/interfaces/Window;Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nodes
    //#input(void run()): this.this$0.nodes.__Lock
    //#input(void run()): this.this$0.tree
    //#input(void run()): this.val$colour
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nodes != null
    //#pre[6] (void run()): this.val$window != null
    //#pre[4] (void run()): (soft) this.tree != null
    //#presumption(void run()): java.util.Map:get(...).__Tag@309 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#presumption(void run()): label.__Tag@309 == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:equals
                    final FrameContainer container = window.getContainer();
    //#TreeFrameManager.java:308: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4
    //#    method: void run()
    //#    unanalyzed callee: FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
                    final TreeViewNode node = nodes.get(container);
                    if (container != null && node != null) {
                        final NodeLabel label = node.getLabel();
                        if (label != null) {
                            label.notificationSet(window, colour);
    //#TreeFrameManager.java:313: Warning: unused assignment in callee
    //#    Unused assignment to (label.notificationColour) in notificationSet
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4
    //#    method: void run()
                            tree.repaint();
    //#TreeFrameManager.java:314: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
                        }
                    }
                }
            }
    //#TreeFrameManager.java:318: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.run()
        });
    }
    //#TreeFrameManager.java:320: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.notificationSet(Window, Color)

    /** {@inheritDoc} */
    @Override
    public void notificationCleared(final Window window) {
        SwingUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:325: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)): init'ed(this.val$window)
    //#TreeFrameManager.java:325: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5(TreeFrameManager, Window)
    //#TreeFrameManager.java:325: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.notificationCleared(Window)
    //#input(void notificationCleared(Window)): this
    //#input(void notificationCleared(Window)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                synchronized (nodes) {
    //#TreeFrameManager.java:330: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.notificationCleared(Lcom/dmdirc/ui/interfaces/Window;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nodes
    //#input(void run()): this.this$0.nodes.__Lock
    //#input(void run()): this.this$0.tree
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nodes != null
    //#pre[5] (void run()): this.val$window != null
    //#pre[4] (void run()): (soft) this.tree != null
    //#presumption(void run()): java.util.Map:get(...).__Tag@332 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#presumption(void run()): label.__Tag@332 == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:equals
                    final FrameContainer container = window.getContainer();
    //#TreeFrameManager.java:331: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5
    //#    method: void run()
    //#    unanalyzed callee: FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
                    final TreeViewNode node = nodes.get(container);
                    if (container != null && node != null) {
                        final NodeLabel label = node.getLabel();
                        if (label != null) {
                            label.notificationCleared(window);
    //#TreeFrameManager.java:336: Warning: unused assignment in callee
    //#    Unused assignment to (label.notificationColour) in notificationCleared
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5
    //#    method: void run()
                            tree.repaint();
    //#TreeFrameManager.java:337: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
                        }
                    }
                }
            }
    //#TreeFrameManager.java:341: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.run()
        });
    }
    //#TreeFrameManager.java:343: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.notificationCleared(Window)

    /** {@inheritDoc} */
    @Override
    public void iconChanged(final Window window, final Icon icon) {
        SwingUtilities.invokeLater(new Runnable() {
    //#TreeFrameManager.java:348: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.val$icon
    //#output(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.val$icon == Param_3
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): init'ed(this.val$icon)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)): init'ed(this.val$window)
    //#TreeFrameManager.java:348: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6(TreeFrameManager, Window, Icon)
    //#TreeFrameManager.java:348: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.iconChanged(Window, Icon)
    //#input(void iconChanged(Window, Icon)): icon
    //#input(void iconChanged(Window, Icon)): this
    //#input(void iconChanged(Window, Icon)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                synchronized (nodes) {
    //#TreeFrameManager.java:353: method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel.__Dispatch_Table.iconChanged(Lcom/dmdirc/ui/interfaces/Window;Ljavax/swing/Icon;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode.__Dispatch_Table.getLabel()Lcom/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nodes
    //#input(void run()): this.this$0.nodes.__Lock
    //#input(void run()): this.this$0.tree
    //#input(void run()): this.val$icon
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nodes != null
    //#pre[6] (void run()): this.val$window != null
    //#pre[4] (void run()): (soft) this.tree != null
    //#presumption(void run()): java.util.Map:get(...).__Tag@354 == com/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode
    //#presumption(void run()): label.__Tag@354 == com/dmdirc/addons/ui_swing/framemanager/tree/NodeLabel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.NodeLabel:setIcon
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:equals
                    final TreeViewNode node = nodes.get(window.getContainer());
    //#TreeFrameManager.java:354: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6
    //#    method: void run()
    //#    unanalyzed callee: FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
                    if (node != null) {
                        final NodeLabel label = node.getLabel();
                        if (label != null) {
                            label.iconChanged(window, icon);
                            tree.repaint();
    //#TreeFrameManager.java:359: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.Tree:repaint()
                        }
                    }
                }
            }
    //#TreeFrameManager.java:363: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.run()
        });
    }
    //#TreeFrameManager.java:365: end of method: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.iconChanged(Window, Icon)
}
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$6]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$6] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$6
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$5]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$5
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$4]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$4
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$3]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$3
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$2]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$2
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$1]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init): __Dispatch_Table.run()V == &run
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager$1
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager]
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.adjustmentValueChanged(Ljava/awt/event/AdjustmentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.canPositionHorizontally()Z
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.canPositionVertically()Z
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.checkRollover(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.getTree()Ljavax/swing/JTree;
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.iconChanged(Lcom/dmdirc/ui/interfaces/Window;Ljavax/swing/Icon;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.notificationCleared(Lcom/dmdirc/ui/interfaces/Window;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.notificationSet(Lcom/dmdirc/ui/interfaces/Window;Ljava/awt/Color;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.setColours()V
    //#output(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/tree/TreeFrameManager] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/addons/ui_swing/framemanager/tree/TreeViewNode;Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.adjustmentValueChanged(Ljava/awt/event/AdjustmentEvent;)V == &adjustmentValueChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.canPositionHorizontally()Z == &canPositionHorizontally
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.canPositionVertically()Z == &canPositionVertically
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.checkRollover(Ljava/awt/event/MouseEvent;)V == &checkRollover
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V == &configChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.getTree()Ljavax/swing/JTree; == &getTree
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.iconChanged(Lcom/dmdirc/ui/interfaces/Window;Ljavax/swing/Icon;)V == &iconChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.notificationCleared(Lcom/dmdirc/ui/interfaces/Window;)V == &notificationCleared
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.notificationSet(Lcom/dmdirc/ui/interfaces/Window;Ljava/awt/Color;)V == &notificationSet
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V == &selectionChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.setColours()V == &setColours
    //#post(com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V == &setParent
    //#TreeFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager.com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager__static_init
    //#TreeFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager
