//# 0 errors, 803 messages
//#
/*
    //#WindowMenuFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#WindowMenuFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init
    //#WindowMenuFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#WindowMenuFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init
    //#WindowMenuFrameManager.java:1:1: class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#WindowMenuFrameManager.java:1:1: method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__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.windowmenu;

import com.dmdirc.FrameContainer;
import com.dmdirc.FrameContainerComparator;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.interfaces.SelectionListener;
import com.dmdirc.ui.IconManager;
import com.dmdirc.ui.WindowManager;
import com.dmdirc.ui.interfaces.FrameManager;
import com.dmdirc.ui.interfaces.Window;
import com.dmdirc.addons.ui_swing.UIUtilities;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import java.util.TreeMap;

import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JComponent;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;

/**
 * Manages the window menu window list.
 */
public final class WindowMenuFrameManager extends JMenu implements FrameManager,
    //#WindowMenuFrameManager.java:51: method: Map com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$000(WindowMenuFrameManager)
    //#input(Map access$000(WindowMenuFrameManager)): x0
    //#input(Map access$000(WindowMenuFrameManager)): x0.menuItemMap
    //#output(Map access$000(WindowMenuFrameManager)): return_value
    //#pre[1] (Map access$000(WindowMenuFrameManager)): x0 != null
    //#post(Map access$000(WindowMenuFrameManager)): return_value == x0.menuItemMap
    //#post(Map access$000(WindowMenuFrameManager)): init'ed(return_value)
    //#WindowMenuFrameManager.java:51: end of method: Map com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$000(WindowMenuFrameManager)
    //#WindowMenuFrameManager.java:51: method: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$100(WindowMenuFrameManager, FrameContainer)
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): ""._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "."._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "<Unknown>"._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "@"._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "Config option not found: "._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "sortwindows"._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): "treeview"._tainted
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[others]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Dispatch_Table.getFrame()Lcom/dmdirc/FrameContainer;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigManager.stats
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.identities
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.managers
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): x0
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): x0.comparator
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): x0.itemCount
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): x1
    //#input(int access$100(WindowMenuFrameManager, FrameContainer)): x1._tainted
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): java.lang.StringBuilder:toString(...)._tainted
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ArrayList(getSources#1) num objects
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ArrayList(getSources#1).__Lock
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).channel
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).file
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).network
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).server
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1).sources
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): new MapList(ConfigManager#1) num objects
    //#output(int access$100(WindowMenuFrameManager, FrameContainer)): return_value
    //#new obj(int access$100(WindowMenuFrameManager, FrameContainer)): java.lang.StringBuilder:toString(...)
    //#new obj(int access$100(WindowMenuFrameManager, FrameContainer)): new ArrayList(getSources#1)
    //#new obj(int access$100(WindowMenuFrameManager, FrameContainer)): new ConfigManager(getGlobalConfig#1)
    //#new obj(int access$100(WindowMenuFrameManager, FrameContainer)): new MapList(ConfigManager#1)
    //#pre[10] (int access$100(WindowMenuFrameManager, FrameContainer)): x0 != null
    //#pre[1] (int access$100(WindowMenuFrameManager, FrameContainer)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#pre[9] (int access$100(WindowMenuFrameManager, FrameContainer)): (soft) init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[11] (int access$100(WindowMenuFrameManager, FrameContainer)): (soft) x0.comparator != null
    //#pre[13] (int access$100(WindowMenuFrameManager, FrameContainer)): (soft) x1 != null
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): init'ed(return_value)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): init'ed(new ArrayList(getSources#1) num objects)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ArrayList(getSources#1).__Lock)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1) num objects)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).channel)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).file)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).network)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).server)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): possibly_updated(new ConfigManager(getGlobalConfig#1).sources)
    //#post(int access$100(WindowMenuFrameManager, FrameContainer)): init'ed(new MapList(ConfigManager#1) num objects)
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.FrameContainerComparator:compare
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.List:add
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:getTarget
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:addListener
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:getSources
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:addConfigManager
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:hasOption
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:getOption
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:com.dmdirc.FrameContainer:toString
    //#unanalyzed(int access$100(WindowMenuFrameManager, FrameContainer)): Effects-of-calling:java.lang.String:compareToIgnoreCase
    //#WindowMenuFrameManager.java:51: end of method: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$100(WindowMenuFrameManager, FrameContainer)
    //#WindowMenuFrameManager.java:51: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$200(WindowMenuFrameManager)
    //#input(void access$200(WindowMenuFrameManager)): x0
    //#input(void access$200(WindowMenuFrameManager)): x0.closeMenuItem
    //#input(void access$200(WindowMenuFrameManager)): x0.enabledMenuItems
    //#input(void access$200(WindowMenuFrameManager)): x0.itemCount
    //#input(void access$200(WindowMenuFrameManager)): x0.minimiseMenuItem
    //#input(void access$200(WindowMenuFrameManager)): x0.separator
    //#input(void access$200(WindowMenuFrameManager)): x0.toggleStateMenuItem
    //#pre[1] (void access$200(WindowMenuFrameManager)): x0 != null
    //#pre[2] (void access$200(WindowMenuFrameManager)): x0.closeMenuItem != null
    //#pre[3] (void access$200(WindowMenuFrameManager)): x0.enabledMenuItems != null
    //#pre[5] (void access$200(WindowMenuFrameManager)): x0.minimiseMenuItem != null
    //#pre[6] (void access$200(WindowMenuFrameManager)): x0.separator != null
    //#pre[7] (void access$200(WindowMenuFrameManager)): x0.toggleStateMenuItem != null
    //#unanalyzed(void access$200(WindowMenuFrameManager)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void access$200(WindowMenuFrameManager)): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void access$200(WindowMenuFrameManager)): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void access$200(WindowMenuFrameManager)): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void access$200(WindowMenuFrameManager)): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#WindowMenuFrameManager.java:51: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.access$200(WindowMenuFrameManager)
        ActionListener, SelectionListener, MenuListener {

    /**
     * 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 = 1;
    /** Menu item list. */
    private final Map<FrameContainer, FrameContainerMenuItem> menuItemMap;
    /** Comparator. */
    private final FrameContainerComparator comparator =
    //#WindowMenuFrameManager.java:63: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainerComparator()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: void com.dmdirc.FrameContainerComparator()
            new FrameContainerComparator();
    /** Non frame container menu count. */
    private final int itemCount;
    /** Menu items for toggling, closing and minimising. */
    private final JMenuItem toggleStateMenuItem,  closeMenuItem,  minimiseMenuItem;
    /** Seperator. */
    private final JSeparator separator;
    /** Active window. */
    private Window activeWindow;
    /** Enabled menu items? */
    private final AtomicBoolean enabledMenuItems = new AtomicBoolean(false);

    /** 
     * Creates a new instance of WindowMenuFrameManager.
     */
    public WindowMenuFrameManager() {
        super();
    //#WindowMenuFrameManager.java:80: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new AtomicBoolean(WindowMenuFrameManager#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new FrameContainerComparator(WindowMenuFrameManager#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JPopupMenu$Separator(WindowMenuFrameManager#7) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new TreeMap(WindowMenuFrameManager#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.activeWindow
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.closeMenuItem
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.comparator
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.enabledMenuItems
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.itemCount
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.menuItemMap
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.minimiseMenuItem
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.separator
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.toggleStateMenuItem
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new AtomicBoolean(WindowMenuFrameManager#2)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new FrameContainerComparator(WindowMenuFrameManager#1)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#4)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#5)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#6)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JPopupMenu$Separator(WindowMenuFrameManager#7)
    //#new obj(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new TreeMap(WindowMenuFrameManager#3)
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): com.dmdirc.ui.IconManager:getIconManager(...)@106 != null
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): com.dmdirc.ui.IconManager:getIconManager(...)@90 != null
    //#presumption(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): com.dmdirc.ui.IconManager:getIconManager(...)@98 != null
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): init'ed(this.activeWindow)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.closeMenuItem == &new JMenuItem(WindowMenuFrameManager#6)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.comparator == &new FrameContainerComparator(WindowMenuFrameManager#1)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.enabledMenuItems == &new AtomicBoolean(WindowMenuFrameManager#2)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): init'ed(this.itemCount)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.menuItemMap == &new TreeMap(WindowMenuFrameManager#3)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.minimiseMenuItem == &new JMenuItem(WindowMenuFrameManager#4)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.separator == &new JPopupMenu$Separator(WindowMenuFrameManager#7)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): this.toggleStateMenuItem == &new JMenuItem(WindowMenuFrameManager#5)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new AtomicBoolean(WindowMenuFrameManager#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new FrameContainerComparator(WindowMenuFrameManager#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JMenuItem(WindowMenuFrameManager#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new JPopupMenu$Separator(WindowMenuFrameManager#7) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): new TreeMap(WindowMenuFrameManager#3) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:com.dmdirc.ui.interfaces.Window:isMaximum
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:javax.swing.JMenuItem:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:javax.swing.JMenuItem:setIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()): Effects-of-calling:javax.swing.JMenuItem:setMnemonic

        menuItemMap =
                new TreeMap<FrameContainer, FrameContainerMenuItem>(comparator);

        setText("Window");
    //#WindowMenuFrameManager.java:85: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setText(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setText(String)
        setMnemonic('w');
    //#WindowMenuFrameManager.java:86: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setMnemonic(char)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setMnemonic(char)
        WindowManager.addFrameManager(this);
    //#WindowMenuFrameManager.java:87: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
        addMenuListener(this);
    //#WindowMenuFrameManager.java:88: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:addMenuListener(MenuListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:addMenuListener(MenuListener)

        minimiseMenuItem = new JMenuItem(IconManager.getIconManager().getIcon(
    //#WindowMenuFrameManager.java:90: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#WindowMenuFrameManager.java:90: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                "minimise"));
        minimiseMenuItem.setMnemonic('n');
        minimiseMenuItem.setText("Minimise");
        minimiseMenuItem.setActionCommand("Minimise");
        minimiseMenuItem.addActionListener(this);
        add(minimiseMenuItem);
    //#WindowMenuFrameManager.java:96: Warning: method not available - call not analyzed
    //#    call on JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)

        toggleStateMenuItem = new JMenuItem(IconManager.getIconManager().getIcon(
    //#WindowMenuFrameManager.java:98: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#WindowMenuFrameManager.java:98: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                "maximise"));
        toggleStateMenuItem.setMnemonic('m');
        toggleStateMenuItem.setText("Maximise");
        toggleStateMenuItem.setActionCommand("ToggleState");
        toggleStateMenuItem.addActionListener(this);
        add(toggleStateMenuItem);
    //#WindowMenuFrameManager.java:104: Warning: method not available - call not analyzed
    //#    call on JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)

        closeMenuItem = new JMenuItem(IconManager.getIconManager().getIcon(
    //#WindowMenuFrameManager.java:106: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#WindowMenuFrameManager.java:106: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                "close"));
        closeMenuItem.setMnemonic('c');
        closeMenuItem.setText("Close");
        closeMenuItem.setActionCommand("Close");
        closeMenuItem.addActionListener(this);
        add(closeMenuItem);
    //#WindowMenuFrameManager.java:112: Warning: method not available - call not analyzed
    //#    call on JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: JMenuItem com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(JMenuItem)
        
        separator = new JPopupMenu.Separator();
        add(separator);
    //#WindowMenuFrameManager.java:115: Warning: method not available - call not analyzed
    //#    call on Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(Component)

        itemCount = getMenuComponentCount();
    //#WindowMenuFrameManager.java:117: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
        checkToggleState();
    }
    //#WindowMenuFrameManager.java:119: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager()

    /**
     * Checks the number of components in the menu and enables menus items 
     * appropriately.
     */
    private void checkMenuItems() {
        enabledMenuItems.set((getMenuComponentCount() > itemCount));
    //#WindowMenuFrameManager.java:126: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.checkMenuItems()
    //#WindowMenuFrameManager.java:126: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkMenuItems()
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#input(void checkMenuItems()): this
    //#input(void checkMenuItems()): this.closeMenuItem
    //#input(void checkMenuItems()): this.enabledMenuItems
    //#input(void checkMenuItems()): this.itemCount
    //#input(void checkMenuItems()): this.minimiseMenuItem
    //#input(void checkMenuItems()): this.separator
    //#input(void checkMenuItems()): this.toggleStateMenuItem
    //#pre[2] (void checkMenuItems()): this.closeMenuItem != null
    //#pre[3] (void checkMenuItems()): this.enabledMenuItems != null
    //#pre[5] (void checkMenuItems()): this.minimiseMenuItem != null
    //#pre[6] (void checkMenuItems()): this.separator != null
    //#pre[7] (void checkMenuItems()): this.toggleStateMenuItem != null
        separator.setVisible(enabledMenuItems.get());
        closeMenuItem.setEnabled(enabledMenuItems.get());
        toggleStateMenuItem.setEnabled(enabledMenuItems.get());
        minimiseMenuItem.setEnabled(enabledMenuItems.get());
    }
    //#WindowMenuFrameManager.java:131: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.checkMenuItems()

    /** {@inheritDoc} */
    @Override
    public void setParent(final JComponent parent) {
        //Ignore
    }
    //#WindowMenuFrameManager.java:137: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.setParent(JComponent)
    //#WindowMenuFrameManager.java:137: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.setParent(JComponent)

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

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

    /** {@inheritDoc} */
    @Override
    public void addWindow(final FrameContainer window) {
        addFrameContainer(window);
    //#WindowMenuFrameManager.java:154: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addWindow(FrameContainer)
    //#input(void addWindow(FrameContainer)): this
    //#input(void addWindow(FrameContainer)): window
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    }
    //#WindowMenuFrameManager.java:155: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addWindow(FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void delWindow(final FrameContainer window) {
        removeFramecontainer(window);
    //#WindowMenuFrameManager.java:160: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.delWindow(FrameContainer)
    //#input(void delWindow(FrameContainer)): this
    //#input(void delWindow(FrameContainer)): window
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    }
    //#WindowMenuFrameManager.java:161: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.delWindow(FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void addWindow(final FrameContainer parent,
            final FrameContainer window) {
        addFrameContainer(window);
    //#WindowMenuFrameManager.java:167: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addWindow(FrameContainer, FrameContainer)
    //#input(void addWindow(FrameContainer, FrameContainer)): this
    //#input(void addWindow(FrameContainer, FrameContainer)): window
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
    }
    //#WindowMenuFrameManager.java:168: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addWindow(FrameContainer, FrameContainer)

    /** {@inheritDoc} */
    @Override
    public void delWindow(final FrameContainer parent,
            final FrameContainer window) {
        removeFramecontainer(window);
    //#WindowMenuFrameManager.java:174: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.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
    }
    //#WindowMenuFrameManager.java:175: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.delWindow(FrameContainer, FrameContainer)

    /**
     * Adds a frame container to the list.
     *
     * @param window Window to add to the list
     */
    private void addFrameContainer(final FrameContainer window) {
        UIUtilities.invokeLater(new Runnable() {
    //#WindowMenuFrameManager.java:183: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)): init'ed(this.val$window)
    //#WindowMenuFrameManager.java:183: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1(WindowMenuFrameManager, FrameContainer)
    //#WindowMenuFrameManager.java:183: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addFrameContainer(FrameContainer)
    //#WindowMenuFrameManager.java:183: 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.windowmenu.WindowMenuFrameManager
    //#    method: void addFrameContainer(FrameContainer)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#input(void addFrameContainer(FrameContainer)): this
    //#input(void addFrameContainer(FrameContainer)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                final FrameContainerMenuItem mi =
    //#WindowMenuFrameManager.java:188: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$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()): "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/windowmenu/FrameContainerMenuItem.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Dispatch_Table.getFrame()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.closeMenuItem
    //#input(void run()): this.this$0.comparator
    //#input(void run()): this.this$0.enabledMenuItems
    //#input(void run()): this.this$0.itemCount
    //#input(void run()): this.this$0.menuItemMap
    //#input(void run()): this.this$0.menuItemMap.__Lock
    //#input(void run()): this.this$0.minimiseMenuItem
    //#input(void run()): this.this$0.separator
    //#input(void run()): this.this$0.toggleStateMenuItem
    //#input(void run()): this.val$window
    //#input(void run()): this.val$window._tainted
    //#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.closeMenuItem != null
    //#pre[14] (void run()): this.enabledMenuItems != null
    //#pre[16] (void run()): this.menuItemMap != null
    //#pre[17] (void run()): this.minimiseMenuItem != null
    //#pre[18] (void run()): this.separator != null
    //#pre[19] (void run()): this.toggleStateMenuItem != null
    //#pre[20] (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.comparator != null
    //#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.FrameContainer:toString
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainer:getIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JMenuItem
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.FrameContainerMenuItem:addActionListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainer:addIconChangeListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.FrameContainerComparator:compare
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent
    //#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:java.lang.String:compareToIgnoreCase
    //#unanalyzed(void run()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void run()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#test_vector(void run()): com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing(...)@191: {0}, {1}
                        new FrameContainerMenuItem(window);
                synchronized (menuItemMap) {
                    if (isShowing()) {
    //#WindowMenuFrameManager.java:191: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing()
                        setSelected(false);
    //#WindowMenuFrameManager.java:192: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setSelected(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setSelected(bool)
                        setPopupMenuVisible(false);
    //#WindowMenuFrameManager.java:193: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setPopupMenuVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setPopupMenuVisible(bool)
                    }
                    menuItemMap.put(window, mi);
                    window.addSelectionListener(WindowMenuFrameManager.this);
    //#WindowMenuFrameManager.java:196: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:addSelectionListener(SelectionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:addSelectionListener(SelectionListener)
                    add(mi, getIndex(window));
    //#WindowMenuFrameManager.java:197: Warning: method not available - call not analyzed
    //#    call on Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(Component, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#    method: void run()
    //#    unanalyzed callee: Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:add(Component, int)
                    checkMenuItems();
                }
            }
    //#WindowMenuFrameManager.java:200: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1.run()
        });
    }
    //#WindowMenuFrameManager.java:202: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.addFrameContainer(FrameContainer)

    /**
     * Removes a frame container from the list.
     *
     * @param window Window to remove from list
     */
    private void removeFramecontainer(final FrameContainer window) {
        UIUtilities.invokeLater(new Runnable() {
    //#WindowMenuFrameManager.java:210: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): this
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)): init'ed(this.val$window)
    //#WindowMenuFrameManager.java:210: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2(WindowMenuFrameManager, FrameContainer)
    //#WindowMenuFrameManager.java:210: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.removeFramecontainer(FrameContainer)
    //#WindowMenuFrameManager.java:210: 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.windowmenu.WindowMenuFrameManager
    //#    method: void removeFramecontainer(FrameContainer)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.UIUtilities:invokeLater(Runnable)
    //#input(void removeFramecontainer(FrameContainer)): this
    //#input(void removeFramecontainer(FrameContainer)): window

            /** {@inheritDoc} */
            @Override
            public void run() {
                synchronized (menuItemMap) {
    //#WindowMenuFrameManager.java:215: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem]
    //#input(void run()): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[others]
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.closeMenuItem
    //#input(void run()): this.this$0.enabledMenuItems
    //#input(void run()): this.this$0.itemCount
    //#input(void run()): this.this$0.menuItemMap
    //#input(void run()): this.this$0.menuItemMap.__Lock
    //#input(void run()): this.this$0.minimiseMenuItem
    //#input(void run()): this.this$0.separator
    //#input(void run()): this.this$0.toggleStateMenuItem
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.closeMenuItem != null
    //#pre[4] (void run()): this.enabledMenuItems != null
    //#pre[6] (void run()): this.menuItemMap != null
    //#pre[7] (void run()): this.minimiseMenuItem != null
    //#pre[8] (void run()): this.separator != null
    //#pre[9] (void run()): this.toggleStateMenuItem != null
    //#pre[10] (void run()): (soft) this.val$window != null
    //#presumption(void run()): java.util.Map:get(...).__Tag@220 == com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void run()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void run()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#test_vector(void run()): com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing(...)@216: {0}, {1}
    //#test_vector(void run()): java.util.Map:get(...)@220: Addr_Set{null}, Inverse{null}
                    if (isShowing()) {
    //#WindowMenuFrameManager.java:216: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:isShowing()
                        setSelected(false);
    //#WindowMenuFrameManager.java:217: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setSelected(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setSelected(bool)
                        setPopupMenuVisible(false);
    //#WindowMenuFrameManager.java:218: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setPopupMenuVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:setPopupMenuVisible(bool)
                    }
                    final FrameContainerMenuItem mi = menuItemMap.get(window);
                    if (mi != null) {
                        remove(mi);
    //#WindowMenuFrameManager.java:222: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:remove(JMenuItem)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:remove(JMenuItem)
                        menuItemMap.remove(window);
                        window.removeSelectionListener(
    //#WindowMenuFrameManager.java:224: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.FrameContainer:removeSelectionListener(SelectionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.FrameContainer:removeSelectionListener(SelectionListener)
                                WindowMenuFrameManager.this);
                    }
                    checkMenuItems();
                }
            }
    //#WindowMenuFrameManager.java:229: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.run()
        });
    }
    //#WindowMenuFrameManager.java:231: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.removeFramecontainer(FrameContainer)

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (enabledMenuItems.get()) {
    //#WindowMenuFrameManager.java:240: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.activeWindow
    //#input(void actionPerformed(ActionEvent)): this.enabledMenuItems
    //#pre[4] (void actionPerformed(ActionEvent)): this.enabledMenuItems != null
    //#pre[1] (void actionPerformed(ActionEvent)): (soft) e != null
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) this.activeWindow != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getActionCommand(...)@241 != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getActionCommand(...)@243 != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getActionCommand(...)@245 != null
    //#test_vector(void actionPerformed(ActionEvent)): java.lang.String:equals(...)@241: {0}, {1}
    //#test_vector(void actionPerformed(ActionEvent)): java.lang.String:equals(...)@243: {0}, {1}
    //#test_vector(void actionPerformed(ActionEvent)): java.lang.String:equals(...)@245: {0}, {1}
    //#test_vector(void actionPerformed(ActionEvent)): java.util.concurrent.atomic.AtomicBoolean:get(...)@240: {0}, {1}
            if (e.getActionCommand().equals("ToggleState")) {
                activeWindow.toggleMaximise();
    //#WindowMenuFrameManager.java:242: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.Window:toggleMaximise()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.Window:toggleMaximise()
            } else if (e.getActionCommand().equals("Minimise")) {
                activeWindow.minimise();
    //#WindowMenuFrameManager.java:244: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.Window:minimise()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.Window:minimise()
            } else if (e.getActionCommand().equals("Close")) {
                activeWindow.close();
    //#WindowMenuFrameManager.java:246: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.Window:close()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.Window:close()
            }
        }
    }
    //#WindowMenuFrameManager.java:249: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.actionPerformed(ActionEvent)

    /** {@inheritDoc} */
    @Override
    public void selectionChanged(final Window window) {
        activeWindow = window;
    //#WindowMenuFrameManager.java:254: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.selectionChanged(Window)
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[others]
    //#input(void selectionChanged(Window)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V
    //#input(void selectionChanged(Window)): this
    //#input(void selectionChanged(Window)): this.comparator
    //#input(void selectionChanged(Window)): this.menuItemMap
    //#input(void selectionChanged(Window)): this.menuItemMap.__Lock
    //#input(void selectionChanged(Window)): window
    //#output(void selectionChanged(Window)): this.activeWindow
    //#pre[4] (void selectionChanged(Window)): (soft) window != null
    //#presumption(void selectionChanged(Window)): java.util.Iterator:next(...).__Tag@262 == com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem
    //#presumption(void selectionChanged(Window)): java.util.Iterator:next(...)@262 != null
    //#presumption(void selectionChanged(Window)): java.util.Map:values(...)@262 != null
    //#presumption(void selectionChanged(Window)): menuItem.frame@262 != null
    //#post(void selectionChanged(Window)): this.activeWindow == window
    //#post(void selectionChanged(Window)): this.activeWindow != null
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:com.dmdirc.ui.interfaces.Window:getContainer
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.FrameContainerMenuItem:getFont
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void selectionChanged(Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.FrameContainerMenuItem:setFont
    //#test_vector(void selectionChanged(Window)): java.util.Iterator:hasNext(...)@262: {0}, {1}
        final Map<FrameContainer, FrameContainerMenuItem> newMap =
                new TreeMap<FrameContainer, FrameContainerMenuItem>(
                comparator);
        synchronized (menuItemMap) {
            newMap.putAll(menuItemMap);
        }

        for (FrameContainerMenuItem menuItem : newMap.values()) {
            menuItem.selectionChanged(window);
        }
    }
    //#WindowMenuFrameManager.java:265: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.selectionChanged(Window)

    /**
     * Checks and sets the state of the toggle menu item.
     */
    private void checkToggleState() {
        checkMenuItems();
    //#WindowMenuFrameManager.java:271: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.checkToggleState()
    //#input(void checkToggleState()): this
    //#input(void checkToggleState()): this.activeWindow
    //#input(void checkToggleState()): this.closeMenuItem
    //#input(void checkToggleState()): this.enabledMenuItems
    //#input(void checkToggleState()): this.itemCount
    //#input(void checkToggleState()): this.minimiseMenuItem
    //#input(void checkToggleState()): this.separator
    //#input(void checkToggleState()): this.toggleStateMenuItem
    //#pre[2] (void checkToggleState()): init'ed(this.activeWindow)
    //#pre[3] (void checkToggleState()): this.closeMenuItem != null
    //#pre[4] (void checkToggleState()): this.enabledMenuItems != null
    //#pre[6] (void checkToggleState()): this.minimiseMenuItem != null
    //#pre[7] (void checkToggleState()): this.separator != null
    //#pre[8] (void checkToggleState()): this.toggleStateMenuItem != null
    //#presumption(void checkToggleState()): com.dmdirc.ui.IconManager:getIconManager(...)@279 != null
    //#presumption(void checkToggleState()): com.dmdirc.ui.IconManager:getIconManager(...)@284 != null
    //#unanalyzed(void checkToggleState()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void checkToggleState()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void checkToggleState()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void checkToggleState()): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void checkToggleState()): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#test_vector(void checkToggleState()): this.activeWindow: Addr_Set{null}, Inverse{null}
    //#test_vector(void checkToggleState()): com.dmdirc.ui.interfaces.Window:isMaximum(...)@277: {0}, {1}
        if (activeWindow != null) {
            toggleStateMenuItem.setEnabled(true);
            closeMenuItem.setEnabled(true);
            minimiseMenuItem.setEnabled(true);

            if (activeWindow.isMaximum()) {
    //#WindowMenuFrameManager.java:277: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.interfaces.Window:isMaximum()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkToggleState()
    //#    unanalyzed callee: bool com.dmdirc.ui.interfaces.Window:isMaximum()
                toggleStateMenuItem.setText("Restore");
                toggleStateMenuItem.setIcon(IconManager.getIconManager().getIcon(
    //#WindowMenuFrameManager.java:279: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkToggleState()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#WindowMenuFrameManager.java:279: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkToggleState()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                        "restore"));
                toggleStateMenuItem.setMnemonic('r');
            } else {
                toggleStateMenuItem.setText("Maximise");
                toggleStateMenuItem.setIcon(IconManager.getIconManager().getIcon(
    //#WindowMenuFrameManager.java:284: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkToggleState()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#WindowMenuFrameManager.java:284: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: void checkToggleState()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                        "maximise"));
                toggleStateMenuItem.setMnemonic('m');
            }
        }
    }
    //#WindowMenuFrameManager.java:289: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.checkToggleState()

    /**
     * Compares the new child with the existing children or parent to decide
     * where it needs to be inserted.
     *
     * @param newChild new node to be inserted.
     *
     * @return index where new node is to be inserted.
     */
    private int getIndex(final FrameContainer newChild) {
        for (int i = itemCount; i < getMenuComponentCount(); i++) {
    //#WindowMenuFrameManager.java:300: method: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.getIndex(FrameContainer)
    //#WindowMenuFrameManager.java:300: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: int getIndex(FrameContainer)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#input(int getIndex(FrameContainer)): ""._tainted
    //#input(int getIndex(FrameContainer)): "."._tainted
    //#input(int getIndex(FrameContainer)): "<Unknown>"._tainted
    //#input(int getIndex(FrameContainer)): "@"._tainted
    //#input(int getIndex(FrameContainer)): "Config option not found: "._tainted
    //#input(int getIndex(FrameContainer)): "sortwindows"._tainted
    //#input(int getIndex(FrameContainer)): "treeview"._tainted
    //#input(int getIndex(FrameContainer)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(int getIndex(FrameContainer)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(int getIndex(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem]
    //#input(int getIndex(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Descendant_Table[others]
    //#input(int getIndex(FrameContainer)): com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem.__Dispatch_Table.getFrame()Lcom/dmdirc/FrameContainer;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionBool(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigManager.stats
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.__Lock
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig.sources.__Lock
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.identities
    //#input(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.managers
    //#input(int getIndex(FrameContainer)): newChild
    //#input(int getIndex(FrameContainer)): newChild._tainted
    //#input(int getIndex(FrameContainer)): this
    //#input(int getIndex(FrameContainer)): this.comparator
    //#input(int getIndex(FrameContainer)): this.itemCount
    //#output(int getIndex(FrameContainer)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(int getIndex(FrameContainer)): java.lang.StringBuilder:toString(...)._tainted
    //#output(int getIndex(FrameContainer)): new ArrayList(getSources#1) num objects
    //#output(int getIndex(FrameContainer)): new ArrayList(getSources#1).__Lock
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).channel
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).file
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).network
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).server
    //#output(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1).sources
    //#output(int getIndex(FrameContainer)): new MapList(ConfigManager#1) num objects
    //#output(int getIndex(FrameContainer)): return_value
    //#new obj(int getIndex(FrameContainer)): java.lang.StringBuilder:toString(...)
    //#new obj(int getIndex(FrameContainer)): new ArrayList(getSources#1)
    //#new obj(int getIndex(FrameContainer)): new ConfigManager(getGlobalConfig#1)
    //#new obj(int getIndex(FrameContainer)): new MapList(ConfigManager#1)
    //#pre[1] (int getIndex(FrameContainer)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#pre[4] (int getIndex(FrameContainer)): (soft) newChild != null
    //#pre[6] (int getIndex(FrameContainer)): (soft) init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[8] (int getIndex(FrameContainer)): (soft) this.comparator != null
    //#presumption(int getIndex(FrameContainer)): com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(...).__Tag@304 == com/dmdirc/addons/ui_swing/framemanager/windowmenu/FrameContainerMenuItem
    //#presumption(int getIndex(FrameContainer)): com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(...).frame@304 != null
    //#presumption(int getIndex(FrameContainer)): com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(...)@304 != null
    //#presumption(int getIndex(FrameContainer)): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#post(int getIndex(FrameContainer)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#post(int getIndex(FrameContainer)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(int getIndex(FrameContainer)): init'ed(return_value)
    //#post(int getIndex(FrameContainer)): init'ed(new ArrayList(getSources#1) num objects)
    //#post(int getIndex(FrameContainer)): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1) num objects)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(int getIndex(FrameContainer)): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#post(int getIndex(FrameContainer)): init'ed(new MapList(ConfigManager#1) num objects)
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.FrameContainerComparator:compare
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.List:add
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:getTarget
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:addListener
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:getSources
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:addConfigManager
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:hasOption
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:getOption
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(int getIndex(FrameContainer)): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#test_vector(int getIndex(FrameContainer)): java.lang.Boolean:parseBoolean(...)@159: {0}, {1}
    //#test_vector(int getIndex(FrameContainer)): java.lang.String:compareToIgnoreCase(...)@308: {0..4_294_967_295}, {-2_147_483_648..-1}
            if (!(getMenuComponent(i) instanceof FrameContainerMenuItem)) {
    //#WindowMenuFrameManager.java:301: Warning: method not available - call not analyzed
    //#    call on Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: int getIndex(FrameContainer)
    //#    unanalyzed callee: Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(int)
                continue;
            }
            final FrameContainer child =
    //#WindowMenuFrameManager.java:304: Warning: method not available - call not analyzed
    //#    call on Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: int getIndex(FrameContainer)
    //#    unanalyzed callee: Component com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponent(int)
                    ((FrameContainerMenuItem) getMenuComponent(i)).getFrame();
            if (sortBefore(newChild, child)) {
                return i;
            } else if (!sortAfter(newChild, child) &&
    //#WindowMenuFrameManager.java:308: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.FrameContainer:toString()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: int getIndex(FrameContainer)
    //#    unanalyzed callee: String com.dmdirc.FrameContainer:toString()
                    IdentityManager.getGlobalConfig().getOptionBool("treeview",
                    "sortwindows") && newChild.toString().compareToIgnoreCase(
                    child.toString()) < 0) {
                return i;
            }
        }

        return getMenuComponentCount();
    //#WindowMenuFrameManager.java:316: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: int getIndex(FrameContainer)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount()
    //#WindowMenuFrameManager.java:316: end of method: int com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.getIndex(FrameContainer)
    }

    /**
     * Compares the types of the specified nodes' objects to see if the new
     * node should be sorted before the other.
     *
     * @param newChild The new child to be tested
     * @param child The existing child that it's being tested against
     *
     * @return True iff newChild should be sorted before child
     */
    private boolean sortBefore(final FrameContainer newChild,
            final FrameContainer child) {

        return comparator.compare(newChild, child) <= -1;
    //#WindowMenuFrameManager.java:331: method: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.sortBefore(FrameContainer, FrameContainer)
    //#WindowMenuFrameManager.java:331: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.FrameContainerComparator:compare(FrameContainer, FrameContainer)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: bool sortBefore(FrameContainer, FrameContainer)
    //#    unanalyzed callee: int com.dmdirc.FrameContainerComparator:compare(FrameContainer, FrameContainer)
    //#input(bool sortBefore(FrameContainer, FrameContainer)): child
    //#input(bool sortBefore(FrameContainer, FrameContainer)): newChild
    //#input(bool sortBefore(FrameContainer, FrameContainer)): this
    //#input(bool sortBefore(FrameContainer, FrameContainer)): this.comparator
    //#output(bool sortBefore(FrameContainer, FrameContainer)): return_value
    //#pre[4] (bool sortBefore(FrameContainer, FrameContainer)): this.comparator != null
    //#post(bool sortBefore(FrameContainer, FrameContainer)): init'ed(return_value)
    //#WindowMenuFrameManager.java:331: end of method: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.sortBefore(FrameContainer, FrameContainer)
    }

    /**
     * Compares the types of the specified nodes' objects to see if the new
     * node should be sorted after the other.
     *
     * @param newChild The new child to be tested
     * @param child The existing child that it's being tested against
     *
     * @return True iff newChild should be sorted before child
     */
    private boolean sortAfter(final FrameContainer newChild,
            final FrameContainer child) {

        return comparator.compare(newChild, child) >= 1;
    //#WindowMenuFrameManager.java:346: method: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.sortAfter(FrameContainer, FrameContainer)
    //#WindowMenuFrameManager.java:346: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.FrameContainerComparator:compare(FrameContainer, FrameContainer)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#    method: bool sortAfter(FrameContainer, FrameContainer)
    //#    unanalyzed callee: int com.dmdirc.FrameContainerComparator:compare(FrameContainer, FrameContainer)
    //#input(bool sortAfter(FrameContainer, FrameContainer)): child
    //#input(bool sortAfter(FrameContainer, FrameContainer)): newChild
    //#input(bool sortAfter(FrameContainer, FrameContainer)): this
    //#input(bool sortAfter(FrameContainer, FrameContainer)): this.comparator
    //#output(bool sortAfter(FrameContainer, FrameContainer)): return_value
    //#pre[4] (bool sortAfter(FrameContainer, FrameContainer)): this.comparator != null
    //#post(bool sortAfter(FrameContainer, FrameContainer)): init'ed(return_value)
    //#WindowMenuFrameManager.java:346: end of method: bool com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.sortAfter(FrameContainer, FrameContainer)
    }

    /** {@inheritDoc} */
    @Override
    public void menuSelected(final MenuEvent e) {
        checkToggleState();
    //#WindowMenuFrameManager.java:352: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuSelected(MenuEvent)
    //#input(void menuSelected(MenuEvent)): this
    //#input(void menuSelected(MenuEvent)): this.activeWindow
    //#input(void menuSelected(MenuEvent)): this.closeMenuItem
    //#input(void menuSelected(MenuEvent)): this.enabledMenuItems
    //#input(void menuSelected(MenuEvent)): this.itemCount
    //#input(void menuSelected(MenuEvent)): this.minimiseMenuItem
    //#input(void menuSelected(MenuEvent)): this.separator
    //#input(void menuSelected(MenuEvent)): this.toggleStateMenuItem
    //#pre[2] (void menuSelected(MenuEvent)): init'ed(this.activeWindow)
    //#pre[3] (void menuSelected(MenuEvent)): this.closeMenuItem != null
    //#pre[4] (void menuSelected(MenuEvent)): this.enabledMenuItems != null
    //#pre[6] (void menuSelected(MenuEvent)): this.minimiseMenuItem != null
    //#pre[7] (void menuSelected(MenuEvent)): this.separator != null
    //#pre[8] (void menuSelected(MenuEvent)): this.toggleStateMenuItem != null
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager:getMenuComponentCount
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:set
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean:get
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:javax.swing.JSeparator:setVisible
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:javax.swing.JMenuItem:setEnabled
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:com.dmdirc.ui.interfaces.Window:isMaximum
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:javax.swing.JMenuItem:setText
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:javax.swing.JMenuItem:setIcon
    //#unanalyzed(void menuSelected(MenuEvent)): Effects-of-calling:javax.swing.JMenuItem:setMnemonic
    }
    //#WindowMenuFrameManager.java:353: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuSelected(MenuEvent)

    /** {@inheritDoc} */
    @Override
    public void menuDeselected(final MenuEvent e) {
        //Ignore
    }
    //#WindowMenuFrameManager.java:359: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuDeselected(MenuEvent)
    //#WindowMenuFrameManager.java:359: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuDeselected(MenuEvent)

    /** {@inheritDoc} */
    @Override
    public void menuCanceled(final MenuEvent e) {
        //Ignore
    }
    //#WindowMenuFrameManager.java:365: method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuCanceled(MenuEvent)
    //#WindowMenuFrameManager.java:365: end of method: void com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.menuCanceled(MenuEvent)
}
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager$2]
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init): __Dispatch_Table.run()V == &run
    //#WindowMenuFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2__static_init
    //#WindowMenuFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$2
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager$1]
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init): __Dispatch_Table.run()V == &run
    //#WindowMenuFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1__static_init
    //#WindowMenuFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager$1
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager]
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addFrameContainer(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.canPositionHorizontally()Z
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.canPositionVertically()Z
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.checkMenuItems()V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.checkToggleState()V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.getIndex(Lcom/dmdirc/FrameContainer;)I
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuCanceled(Ljavax/swing/event/MenuEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuDeselected(Ljavax/swing/event/MenuEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuSelected(Ljavax/swing/event/MenuEvent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.removeFramecontainer(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.sortAfter(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)Z
    //#output(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.sortBefore(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)Z
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addFrameContainer(Lcom/dmdirc/FrameContainer;)V == &addFrameContainer
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.canPositionHorizontally()Z == &canPositionHorizontally
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.canPositionVertically()Z == &canPositionVertically
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.checkMenuItems()V == &checkMenuItems
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.checkToggleState()V == &checkToggleState
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.getIndex(Lcom/dmdirc/FrameContainer;)I == &getIndex
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuCanceled(Ljavax/swing/event/MenuEvent;)V == &menuCanceled
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuDeselected(Ljavax/swing/event/MenuEvent;)V == &menuDeselected
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.menuSelected(Ljavax/swing/event/MenuEvent;)V == &menuSelected
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.removeFramecontainer(Lcom/dmdirc/FrameContainer;)V == &removeFramecontainer
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.selectionChanged(Lcom/dmdirc/ui/interfaces/Window;)V == &selectionChanged
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V == &setParent
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.sortAfter(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)Z == &sortAfter
    //#post(com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init): __Dispatch_Table.sortBefore(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)Z == &sortBefore
    //#WindowMenuFrameManager.java:: end of method: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager.com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager__static_init
    //#WindowMenuFrameManager.java:: end of class: com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
