//# 0 errors, 1,234 messages
//#
/*
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$12
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$11
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$11.com.dmdirc.addons.ui_swing.MainFrame$11__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$10
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$10.com.dmdirc.addons.ui_swing.MainFrame$10__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$9
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$9.com.dmdirc.addons.ui_swing.MainFrame$9__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$7.com.dmdirc.addons.ui_swing.MainFrame$7__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$6
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$6.com.dmdirc.addons.ui_swing.MainFrame$6__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$5.com.dmdirc.addons.ui_swing.MainFrame$5__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$8.com.dmdirc.addons.ui_swing.MainFrame$8__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$4
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$4.com.dmdirc.addons.ui_swing.MainFrame$4__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$3
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$3.com.dmdirc.addons.ui_swing.MainFrame$3__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$2
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$2.com.dmdirc.addons.ui_swing.MainFrame$2__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame$1
    //#MainFrame.java:1:1: method: com.dmdirc.addons.ui_swing.MainFrame$1.com.dmdirc.addons.ui_swing.MainFrame$1__static_init
    //#MainFrame.java:1:1: class: com.dmdirc.addons.ui_swing.MainFrame
 * 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;

import com.dmdirc.addons.ui_swing.components.LoggingSwingWorker;
import com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane;
import com.dmdirc.FrameContainer;
import com.dmdirc.Main;
import com.dmdirc.ServerManager;
import com.dmdirc.actions.ActionManager;
import com.dmdirc.actions.CoreActionType;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.interfaces.ConfigChangeListener;
import com.dmdirc.ui.IconManager;
import com.dmdirc.ui.WindowManager;
import com.dmdirc.ui.interfaces.FrameManager;
import com.dmdirc.ui.interfaces.FramemanagerPosition;
import com.dmdirc.ui.interfaces.MainWindow;
import com.dmdirc.ui.interfaces.Window;
import com.dmdirc.addons.ui_swing.components.MenuBar;
import com.dmdirc.addons.ui_swing.components.SnappingJSplitPane;
import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
import com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager;
import com.dmdirc.ui.CoreUIUtils;
import com.dmdirc.util.ReturnableThread;

import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.MenuSelectionManager;
import javax.swing.WindowConstants;

import net.miginfocom.swing.MigLayout;

/**
 * The main application frame.
 */
public final class MainFrame extends JFrame implements WindowListener,
    //#MainFrame.java:68: method: FramemanagerPosition com.dmdirc.addons.ui_swing.MainFrame.access$000(MainFrame)
    //#input(FramemanagerPosition access$000(MainFrame)): x0
    //#input(FramemanagerPosition access$000(MainFrame)): x0.position
    //#output(FramemanagerPosition access$000(MainFrame)): return_value
    //#pre[1] (FramemanagerPosition access$000(MainFrame)): x0 != null
    //#pre[2] (FramemanagerPosition access$000(MainFrame)): init'ed(x0.position)
    //#post(FramemanagerPosition access$000(MainFrame)): return_value == x0.position
    //#post(FramemanagerPosition access$000(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: FramemanagerPosition com.dmdirc.addons.ui_swing.MainFrame.access$000(MainFrame)
    //#MainFrame.java:68: method: JPanel com.dmdirc.addons.ui_swing.MainFrame.access$100(MainFrame)
    //#input(JPanel access$100(MainFrame)): x0
    //#input(JPanel access$100(MainFrame)): x0.frameManagerPanel
    //#output(JPanel access$100(MainFrame)): return_value
    //#pre[1] (JPanel access$100(MainFrame)): x0 != null
    //#pre[2] (JPanel access$100(MainFrame)): init'ed(x0.frameManagerPanel)
    //#post(JPanel access$100(MainFrame)): return_value == x0.frameManagerPanel
    //#post(JPanel access$100(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: JPanel com.dmdirc.addons.ui_swing.MainFrame.access$100(MainFrame)
    //#MainFrame.java:68: method: ImageIcon com.dmdirc.addons.ui_swing.MainFrame.access$200(MainFrame)
    //#input(ImageIcon access$200(MainFrame)): x0
    //#input(ImageIcon access$200(MainFrame)): x0.imageIcon
    //#output(ImageIcon access$200(MainFrame)): return_value
    //#pre[1] (ImageIcon access$200(MainFrame)): x0 != null
    //#pre[2] (ImageIcon access$200(MainFrame)): init'ed(x0.imageIcon)
    //#post(ImageIcon access$200(MainFrame)): return_value == x0.imageIcon
    //#post(ImageIcon access$200(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: ImageIcon com.dmdirc.addons.ui_swing.MainFrame.access$200(MainFrame)
    //#MainFrame.java:68: method: DMDircDesktopPane com.dmdirc.addons.ui_swing.MainFrame.access$300(MainFrame)
    //#input(DMDircDesktopPane access$300(MainFrame)): x0
    //#input(DMDircDesktopPane access$300(MainFrame)): x0.desktopPane
    //#output(DMDircDesktopPane access$300(MainFrame)): return_value
    //#pre[1] (DMDircDesktopPane access$300(MainFrame)): x0 != null
    //#pre[2] (DMDircDesktopPane access$300(MainFrame)): init'ed(x0.desktopPane)
    //#post(DMDircDesktopPane access$300(MainFrame)): return_value == x0.desktopPane
    //#post(DMDircDesktopPane access$300(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: DMDircDesktopPane com.dmdirc.addons.ui_swing.MainFrame.access$300(MainFrame)
    //#MainFrame.java:68: method: int com.dmdirc.addons.ui_swing.MainFrame.access$400(MainFrame)
    //#input(int access$400(MainFrame)): x0
    //#input(int access$400(MainFrame)): x0.exitCode
    //#output(int access$400(MainFrame)): return_value
    //#pre[1] (int access$400(MainFrame)): x0 != null
    //#pre[2] (int access$400(MainFrame)): init'ed(x0.exitCode)
    //#post(int access$400(MainFrame)): return_value == x0.exitCode
    //#post(int access$400(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: int com.dmdirc.addons.ui_swing.MainFrame.access$400(MainFrame)
    //#MainFrame.java:68: method: FrameManager com.dmdirc.addons.ui_swing.MainFrame.access$502(MainFrame, FrameManager)
    //#input(FrameManager access$502(MainFrame, FrameManager)): x0
    //#input(FrameManager access$502(MainFrame, FrameManager)): x1
    //#output(FrameManager access$502(MainFrame, FrameManager)): return_value
    //#output(FrameManager access$502(MainFrame, FrameManager)): x0.mainFrameManager
    //#pre[1] (FrameManager access$502(MainFrame, FrameManager)): x0 != null
    //#post(FrameManager access$502(MainFrame, FrameManager)): return_value == x1
    //#post(FrameManager access$502(MainFrame, FrameManager)): init'ed(return_value)
    //#post(FrameManager access$502(MainFrame, FrameManager)): x0.mainFrameManager == return_value
    //#MainFrame.java:68: end of method: FrameManager com.dmdirc.addons.ui_swing.MainFrame.access$502(MainFrame, FrameManager)
    //#MainFrame.java:68: method: FrameManager com.dmdirc.addons.ui_swing.MainFrame.access$500(MainFrame)
    //#input(FrameManager access$500(MainFrame)): x0
    //#input(FrameManager access$500(MainFrame)): x0.mainFrameManager
    //#output(FrameManager access$500(MainFrame)): return_value
    //#pre[1] (FrameManager access$500(MainFrame)): x0 != null
    //#pre[2] (FrameManager access$500(MainFrame)): init'ed(x0.mainFrameManager)
    //#post(FrameManager access$500(MainFrame)): return_value == x0.mainFrameManager
    //#post(FrameManager access$500(MainFrame)): init'ed(return_value)
    //#MainFrame.java:68: end of method: FrameManager com.dmdirc.addons.ui_swing.MainFrame.access$500(MainFrame)
        MainWindow, ConfigChangeListener, FrameManager {

    /** Logger to use. */
    private static final java.util.logging.Logger LOGGER =
    //#MainFrame.java:72: method: com.dmdirc.addons.ui_swing.MainFrame.com.dmdirc.addons.ui_swing.MainFrame__static_init
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): LOGGER
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame]
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;I)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.canPositionHorizontally()Z
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.canPositionVertically()Z
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getActiveFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getDesktopPane()Ljavax/swing/JDesktopPane;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getFrameManagerSize()I
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getIcon()Ljavax/swing/ImageIcon;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getMaximised()Z
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getStatusBar()Lcom/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getTitlePrefix()Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initFrameManagers()V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initSplitPane()Ljavax/swing/JSplitPane;
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.quit()V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.quit(I)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setMaximised(Z)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowActivated(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowClosed(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowClosing(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowDeactivated(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowDeiconified(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowIconified(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowOpened(Ljava/awt/event/WindowEvent;)V
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): init'ed(LOGGER)
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;I)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.addWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &addWindow
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.canPositionHorizontally()Z == &canPositionHorizontally
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.canPositionVertically()Z == &canPositionVertically
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V == &configChanged
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.delWindow(Lcom/dmdirc/FrameContainer;Lcom/dmdirc/FrameContainer;)V == &delWindow
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getActiveFrame()Lcom/dmdirc/ui/interfaces/Window; == &getActiveFrame
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getDesktopPane()Ljavax/swing/JDesktopPane; == &getDesktopPane
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getFrameManagerSize()I == &getFrameManagerSize
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getIcon()Ljavax/swing/ImageIcon; == &getIcon
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getMaximised()Z == &getMaximised
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getStatusBar()Lcom/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar; == &getStatusBar
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.getTitlePrefix()Ljava/lang/String; == &getTitlePrefix
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initFrameManagers()V == &initFrameManagers
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.initSplitPane()Ljavax/swing/JSplitPane; == &initSplitPane
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.quit()V == &quit
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.quit(I)V == &quit
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setMaximised(Z)V == &setMaximised
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setParent(Ljavax/swing/JComponent;)V == &setParent
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.setTitle(Ljava/lang/String;)V == &setTitle
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowActivated(Ljava/awt/event/WindowEvent;)V == &windowActivated
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowClosed(Ljava/awt/event/WindowEvent;)V == &windowClosed
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowClosing(Ljava/awt/event/WindowEvent;)V == &windowClosing
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowDeactivated(Ljava/awt/event/WindowEvent;)V == &windowDeactivated
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowDeiconified(Ljava/awt/event/WindowEvent;)V == &windowDeiconified
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowIconified(Ljava/awt/event/WindowEvent;)V == &windowIconified
    //#post(com.dmdirc.addons.ui_swing.MainFrame__static_init): __Dispatch_Table.windowOpened(Ljava/awt/event/WindowEvent;)V == &windowOpened
    //#MainFrame.java:72: end of method: com.dmdirc.addons.ui_swing.MainFrame.com.dmdirc.addons.ui_swing.MainFrame__static_init
            java.util.logging.Logger.getLogger(MainFrame.class.getName());
    /**
     * 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 = 9;
    /** Whether the internal frames are maximised or not. */
    private boolean maximised;
    /** The main application icon. */
    private ImageIcon imageIcon;
    /** The frame manager that's being used. */
    private FrameManager mainFrameManager;
    /** Dekstop pane. */
    private DMDircDesktopPane desktopPane;
    /** Main panel. */
    private JPanel frameManagerPanel;
    /** Frame manager position. */
    private FramemanagerPosition position;
    /** Show version? */
    private boolean showVersion;
    /** Menu bar. */
    private MenuBar menu;
    /** Exit code. */
    private int exitCode = 0;
    /** Swing Controller. */
    private SwingController controller;
    /** Status bar. */
    private SwingStatusBar statusBar;

    /**
     * Creates new form MainFrame.
     * 
     * @param controller Swing controller
     */
    protected MainFrame(final SwingController controller) {
        super();
    //#MainFrame.java:109: method: void com.dmdirc.addons.ui_swing.MainFrame.com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): " - "._tainted
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): "DMDirc "._tainted
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): "DMDirc"._tainted
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): controller
    //#input(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): new ImageIcon(MainFrame#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.controller
    //#output(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.exitCode
    //#output(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.imageIcon
    //#output(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.showVersion
    //#new obj(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): new ImageIcon(MainFrame#1)
    //#presumption(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@125 != null
    //#presumption(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@127 != null
    //#presumption(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@129 != null
    //#presumption(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@131 != null
    //#presumption(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): com.dmdirc.ui.IconManager:getIconManager(...)@115 != null
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.controller == controller
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): init'ed(this.controller)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): init'ed(this.exitCode)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): this.imageIcon == &new ImageIcon(MainFrame#1)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): init'ed(this.showVersion)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): new ImageIcon(MainFrame#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:com.dmdirc.ui.interfaces.Window:isMaximum
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame(SwingController)): Effects-of-calling:javax.swing.JFrame:setTitle

        this.controller = controller;

        initComponents();
    //#MainFrame.java:113: Warning: call too complex - analysis skipped
    //#    call on void initComponents()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void initComponents()

        imageIcon =
    //#MainFrame.java:115: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#MainFrame.java:115: Warning: method not available - call not analyzed
    //#    call on Image com.dmdirc.ui.IconManager:getImage(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: Image com.dmdirc.ui.IconManager:getImage(String)
                new ImageIcon(IconManager.getIconManager().getImage("icon"));
        setIconImage(imageIcon.getImage());
    //#MainFrame.java:117: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setIconImage(Image)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setIconImage(Image)

        CoreUIUtils.centreWindow(this);
    //#MainFrame.java:119: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.CoreUIUtils:centreWindow(Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.ui.CoreUIUtils:centreWindow(Window)

        setVisible(true);
    //#MainFrame.java:121: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setVisible(bool)

        addWindowListener(this);
    //#MainFrame.java:123: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:addWindowListener(WindowListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:addWindowListener(WindowListener)

        showVersion = IdentityManager.getGlobalConfig().getOptionBool("ui",
    //#MainFrame.java:125: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:125: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
                "showversion");
        IdentityManager.getGlobalConfig().addChangeListener("ui", "lookandfeel",
    //#MainFrame.java:127: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:127: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
                this);
        IdentityManager.getGlobalConfig().addChangeListener("ui", "showversion",
    //#MainFrame.java:129: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:129: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
                this);
        IdentityManager.getGlobalConfig().addChangeListener("icon", "icon", this);
    //#MainFrame.java:131: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:131: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)


        addWindowFocusListener(new WindowFocusListener() {
    //#MainFrame.java:134: method: void com.dmdirc.addons.ui_swing.MainFrame$1.com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:134: end of method: void com.dmdirc.addons.ui_swing.MainFrame$1.com.dmdirc.addons.ui_swing.MainFrame$1(MainFrame)
    //#MainFrame.java:134: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:addWindowFocusListener(WindowFocusListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame(SwingController)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:addWindowFocusListener(WindowFocusListener)

            /** {@inheritDoc} */
            @Override
            public void windowGainedFocus(WindowEvent e) {
                //Ignore
            }
    //#MainFrame.java:140: method: void com.dmdirc.addons.ui_swing.MainFrame$1.windowGainedFocus(WindowEvent)
    //#MainFrame.java:140: end of method: void com.dmdirc.addons.ui_swing.MainFrame$1.windowGainedFocus(WindowEvent)

            /** {@inheritDoc} */
            @Override
            public void windowLostFocus(WindowEvent e) {
                //TODO: Remove me when we switch to java7
                MenuSelectionManager.defaultManager().clearSelectedPath();
    //#MainFrame.java:146: method: void com.dmdirc.addons.ui_swing.MainFrame$1.windowLostFocus(WindowEvent)
    //#presumption(void windowLostFocus(WindowEvent)): javax.swing.MenuSelectionManager:defaultManager(...)@146 != null
            }
    //#MainFrame.java:147: end of method: void com.dmdirc.addons.ui_swing.MainFrame$1.windowLostFocus(WindowEvent)
        });

        setTitle(getTitlePrefix());
    }
    //#MainFrame.java:151: end of method: void com.dmdirc.addons.ui_swing.MainFrame.com.dmdirc.addons.ui_swing.MainFrame(SwingController)

    /**
     * Returns the status bar for this frame.
     * 
     * @return Status bar
     */
    public SwingStatusBar getStatusBar() {
        return statusBar;
    //#MainFrame.java:159: method: SwingStatusBar com.dmdirc.addons.ui_swing.MainFrame.getStatusBar()
    //#input(SwingStatusBar getStatusBar()): this
    //#input(SwingStatusBar getStatusBar()): this.statusBar
    //#output(SwingStatusBar getStatusBar()): return_value
    //#pre[2] (SwingStatusBar getStatusBar()): init'ed(this.statusBar)
    //#post(SwingStatusBar getStatusBar()): return_value == this.statusBar
    //#post(SwingStatusBar getStatusBar()): init'ed(return_value)
    //#MainFrame.java:159: end of method: SwingStatusBar com.dmdirc.addons.ui_swing.MainFrame.getStatusBar()
    }

    /**
     * Returns the size of the frame manager.
     *
     * @return Frame manager size.
     */
    public int getFrameManagerSize() {
        return UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
    //#MainFrame.java:168: method: void com.dmdirc.addons.ui_swing.MainFrame$2.com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)
    //#MainFrame.java:168: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$2
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:168: end of method: void com.dmdirc.addons.ui_swing.MainFrame$2.com.dmdirc.addons.ui_swing.MainFrame$2(MainFrame)
    //#MainFrame.java:168: method: int com.dmdirc.addons.ui_swing.MainFrame.getFrameManagerSize()
    //#input(int getFrameManagerSize()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(int getFrameManagerSize()): this
    //#output(int getFrameManagerSize()): return_value
    //#presumption(int getFrameManagerSize()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#post(int getFrameManagerSize()): init'ed(return_value)
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(int getFrameManagerSize()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#MainFrame.java:168: end of method: int com.dmdirc.addons.ui_swing.MainFrame.getFrameManagerSize()

            /** {@inheritDoc} */
            @Override
            public void run() {
                if (position == FramemanagerPosition.LEFT ||
    //#MainFrame.java:173: method: void com.dmdirc.addons.ui_swing.MainFrame$2.run()
    //#input(void run()): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT
    //#input(void run()): com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.frameManagerPanel
    //#input(void run()): this.this$0.position
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.frameManagerPanel != null
    //#pre[4] (void run()): init'ed(this.position)
    //#presumption(void run()): init'ed(com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT)
    //#presumption(void run()): init'ed(com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT)
                        position == FramemanagerPosition.RIGHT) {
                    setObject(frameManagerPanel.getWidth());
    //#MainFrame.java:175: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$2:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$2:setObject(Object)
                } else {
                    setObject(frameManagerPanel.getHeight());
    //#MainFrame.java:177: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$2:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$2:setObject(Object)
                }
            }
    //#MainFrame.java:179: end of method: void com.dmdirc.addons.ui_swing.MainFrame$2.run()
        });
    }

    /** {@inheritDoc}. */
    @Override
    public ImageIcon getIcon() {
        return UIUtilities.invokeAndWait(new ReturnableThread<ImageIcon>() {
    //#MainFrame.java:186: method: void com.dmdirc.addons.ui_swing.MainFrame$3.com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)
    //#MainFrame.java:186: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$3
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:186: end of method: void com.dmdirc.addons.ui_swing.MainFrame$3.com.dmdirc.addons.ui_swing.MainFrame$3(MainFrame)
    //#MainFrame.java:186: method: ImageIcon com.dmdirc.addons.ui_swing.MainFrame.getIcon()
    //#input(ImageIcon getIcon()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(ImageIcon getIcon()): this
    //#output(ImageIcon getIcon()): return_value
    //#post(ImageIcon getIcon()): init'ed(return_value)
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(ImageIcon getIcon()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#MainFrame.java:186: end of method: ImageIcon com.dmdirc.addons.ui_swing.MainFrame.getIcon()

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(imageIcon);
    //#MainFrame.java:191: method: void com.dmdirc.addons.ui_swing.MainFrame$3.run()
    //#MainFrame.java:191: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$3:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$3:setObject(Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.imageIcon
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.imageIcon)
            }
    //#MainFrame.java:192: end of method: void com.dmdirc.addons.ui_swing.MainFrame$3.run()
        });
    }

    /**
     * Returns the window that is currently active.
     *
     * @return The active window
     */
    public Window getActiveFrame() {
        return UIUtilities.invokeAndWait(new ReturnableThread<Window>() {
    //#MainFrame.java:202: method: void com.dmdirc.addons.ui_swing.MainFrame$4.com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)
    //#MainFrame.java:202: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$4
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:202: end of method: void com.dmdirc.addons.ui_swing.MainFrame$4.com.dmdirc.addons.ui_swing.MainFrame$4(MainFrame)
    //#MainFrame.java:202: method: Window com.dmdirc.addons.ui_swing.MainFrame.getActiveFrame()
    //#input(Window getActiveFrame()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(Window getActiveFrame()): this
    //#output(Window getActiveFrame()): return_value
    //#post(Window getActiveFrame()): init'ed(return_value)
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(Window getActiveFrame()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#MainFrame.java:202: end of method: Window com.dmdirc.addons.ui_swing.MainFrame.getActiveFrame()

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(desktopPane.getSelectedWindow());
    //#MainFrame.java:207: method: void com.dmdirc.addons.ui_swing.MainFrame$4.run()
    //#MainFrame.java:207: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$4:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$4
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$4:setObject(Object)
    //#input(void run()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Dispatch_Table.getSelectedWindow()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.desktopPane
    //#input(void run()): this.this$0.desktopPane.__Tag
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.desktopPane != null
    //#pre[4] (void run()): this.desktopPane.__Tag == com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
            }
    //#MainFrame.java:208: end of method: void com.dmdirc.addons.ui_swing.MainFrame$4.run()
        });
    }

    /** {@inheritDoc}. */
    @Override
    public void setMaximised(final boolean max) {
        //Ignore
    }
    //#MainFrame.java:216: method: void com.dmdirc.addons.ui_swing.MainFrame.setMaximised(bool)
    //#MainFrame.java:216: end of method: void com.dmdirc.addons.ui_swing.MainFrame.setMaximised(bool)

    /** {@inheritDoc}. */
    @Override
    public void setTitle(final String title) {
        if (title != null && getActiveFrame() != null && getActiveFrame().isMaximum()) {
    //#MainFrame.java:221: method: void com.dmdirc.addons.ui_swing.MainFrame.setTitle(String)
    //#MainFrame.java:221: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.interfaces.Window:isMaximum()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void setTitle(String)
    //#    unanalyzed callee: bool com.dmdirc.ui.interfaces.Window:isMaximum()
    //#input(void setTitle(String)): " - "._tainted
    //#input(void setTitle(String)): "DMDirc "._tainted
    //#input(void setTitle(String)): "DMDirc"._tainted
    //#input(void setTitle(String)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void setTitle(String)): this
    //#input(void setTitle(String)): this.showVersion
    //#input(void setTitle(String)): title
    //#input(void setTitle(String)): title._tainted
    //#pre[2] (void setTitle(String)): init'ed(this.showVersion)
    //#presumption(void setTitle(String)): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#unanalyzed(void setTitle(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void setTitle(String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void setTitle(String)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void setTitle(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void setTitle(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void setTitle(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void setTitle(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#test_vector(void setTitle(String)): title: Addr_Set{null}, Inverse{null}
    //#test_vector(void setTitle(String)): com.dmdirc.ui.interfaces.Window:isMaximum(...)@221: {0}, {1}
    //#test_vector(void setTitle(String)): com.dmdirc.util.ReturnableThread:getObject(...)@203: Addr_Set{null}, Inverse{null}
            super.setTitle(getTitlePrefix() + " - " + title);
        } else {
            super.setTitle(getTitlePrefix());
        }
    }
    //#MainFrame.java:226: end of method: void com.dmdirc.addons.ui_swing.MainFrame.setTitle(String)

    /** {@inheritDoc}. */
    @Override
    public String getTitlePrefix() {
        if (showVersion) {
    //#MainFrame.java:231: method: String com.dmdirc.addons.ui_swing.MainFrame.getTitlePrefix()
    //#input(String getTitlePrefix()): "DMDirc "._tainted
    //#input(String getTitlePrefix()): this
    //#input(String getTitlePrefix()): this.showVersion
    //#output(String getTitlePrefix()): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getTitlePrefix()): return_value
    //#new obj(String getTitlePrefix()): java.lang.StringBuilder:toString(...)
    //#pre[2] (String getTitlePrefix()): init'ed(this.showVersion)
    //#presumption(String getTitlePrefix()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@232 != null
    //#post(String getTitlePrefix()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(String getTitlePrefix()): return_value in Addr_Set{&"DMDirc",&java.lang.StringBuilder:toString(...)}
    //#test_vector(String getTitlePrefix()): this.showVersion: {0}, {1}
            return "DMDirc " + IdentityManager.getGlobalConfig().getOption(
    //#MainFrame.java:232: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: String getTitlePrefix()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:232: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: String getTitlePrefix()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
                    "version", "version");
        } else {
            return "DMDirc";
    //#MainFrame.java:235: end of method: String com.dmdirc.addons.ui_swing.MainFrame.getTitlePrefix()
        }
    }

    /** {@inheritDoc}. */
    @Override
    public boolean getMaximised() {
        return UIUtilities.invokeAndWait(new ReturnableThread<Boolean>() {
    //#MainFrame.java:242: method: void com.dmdirc.addons.ui_swing.MainFrame$5.com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)
    //#MainFrame.java:242: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#    method: void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:242: end of method: void com.dmdirc.addons.ui_swing.MainFrame$5.com.dmdirc.addons.ui_swing.MainFrame$5(MainFrame)
    //#MainFrame.java:242: method: bool com.dmdirc.addons.ui_swing.MainFrame.getMaximised()
    //#input(bool getMaximised()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(bool getMaximised()): this
    //#output(bool getMaximised()): return_value
    //#presumption(bool getMaximised()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#post(bool getMaximised()): init'ed(return_value)
    //#unanalyzed(bool getMaximised()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool getMaximised()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(bool getMaximised()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(bool getMaximised()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(bool getMaximised()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(bool getMaximised()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(bool getMaximised()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#MainFrame.java:242: end of method: bool com.dmdirc.addons.ui_swing.MainFrame.getMaximised()

            /** {@inheritDoc}. */
            @Override
            public void run() {
                final Window window = getActiveFrame();
    //#MainFrame.java:247: method: void com.dmdirc.addons.ui_swing.MainFrame$5.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#pre[2] (void run()): this.this$0 != null
    //#presumption(void run()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#presumption(void run()): getActiveFrame(...)@251 init'ed
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#test_vector(void run()): com.dmdirc.util.ReturnableThread:getObject(...)@203: Inverse{null}, Addr_Set{null}
                if (window == null) {
                    setObject(false);
    //#MainFrame.java:249: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$5:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$5:setObject(Object)
                } else {
                    setObject(getActiveFrame().isMaximum());
    //#MainFrame.java:251: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.interfaces.Window:isMaximum()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#    method: void run()
    //#    unanalyzed callee: bool com.dmdirc.ui.interfaces.Window:isMaximum()
    //#MainFrame.java:251: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$5:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$5:setObject(Object)
                }
            }
    //#MainFrame.java:253: end of method: void com.dmdirc.addons.ui_swing.MainFrame$5.run()
        });
    }

    /**
     * Returns the desktop pane for the frame.
     * 
     * @return JDesktopPane for the frame
     */
    public JDesktopPane getDesktopPane() {
        return desktopPane;
    //#MainFrame.java:263: method: JDesktopPane com.dmdirc.addons.ui_swing.MainFrame.getDesktopPane()
    //#input(JDesktopPane getDesktopPane()): this
    //#input(JDesktopPane getDesktopPane()): this.desktopPane
    //#output(JDesktopPane getDesktopPane()): return_value
    //#pre[2] (JDesktopPane getDesktopPane()): init'ed(this.desktopPane)
    //#post(JDesktopPane getDesktopPane()): return_value == this.desktopPane
    //#post(JDesktopPane getDesktopPane()): init'ed(return_value)
    //#MainFrame.java:263: end of method: JDesktopPane com.dmdirc.addons.ui_swing.MainFrame.getDesktopPane()
    }

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowOpened(final WindowEvent windowEvent) {
        //ignore
    }
    //#MainFrame.java:274: method: void com.dmdirc.addons.ui_swing.MainFrame.windowOpened(WindowEvent)
    //#MainFrame.java:274: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowOpened(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowClosing(final WindowEvent windowEvent) {
        quit(exitCode);
    //#MainFrame.java:283: method: void com.dmdirc.addons.ui_swing.MainFrame.windowClosing(WindowEvent)
    //#input(void windowClosing(WindowEvent)): this
    //#input(void windowClosing(WindowEvent)): this.exitCode
    //#output(void windowClosing(WindowEvent)): this.exitCode
    //#pre[1] (void windowClosing(WindowEvent)): init'ed(this.exitCode)
    //#post(void windowClosing(WindowEvent)): this.exitCode == old this.exitCode
    //#post(void windowClosing(WindowEvent)): init'ed(this.exitCode)
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:javax.swing.JOptionPane:showConfirmDialog
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.LoggingSwingWorker
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame$8:execute
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:javax.swing.SwingWorker
    }
    //#MainFrame.java:284: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowClosing(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowClosed(final WindowEvent windowEvent) {
        new Thread(new Runnable() {
    //#MainFrame.java:293: method: void com.dmdirc.addons.ui_swing.MainFrame$6.com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:293: end of method: void com.dmdirc.addons.ui_swing.MainFrame$6.com.dmdirc.addons.ui_swing.MainFrame$6(MainFrame)
    //#MainFrame.java:293: method: void com.dmdirc.addons.ui_swing.MainFrame.windowClosed(WindowEvent)
    //#input(void windowClosed(WindowEvent)): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                Main.quit(exitCode);
    //#MainFrame.java:298: method: void com.dmdirc.addons.ui_swing.MainFrame$6.run()
    //#MainFrame.java:298: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Main:quit(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$6
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.Main:quit(int)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.exitCode
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.exitCode)
            }
    //#MainFrame.java:299: end of method: void com.dmdirc.addons.ui_swing.MainFrame$6.run()
        }, "Quit thread").start();
    }
    //#MainFrame.java:301: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowClosed(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowIconified(final WindowEvent windowEvent) {
        ActionManager.processEvent(CoreActionType.CLIENT_MINIMISED, null);
    //#MainFrame.java:310: method: void com.dmdirc.addons.ui_swing.MainFrame.windowIconified(WindowEvent)
    //#MainFrame.java:310: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void windowIconified(WindowEvent)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#input(void windowIconified(WindowEvent)): com.dmdirc.actions.CoreActionType.CLIENT_MINIMISED
    //#presumption(void windowIconified(WindowEvent)): init'ed(com.dmdirc.actions.CoreActionType.CLIENT_MINIMISED)
    }
    //#MainFrame.java:311: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowIconified(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowDeiconified(final WindowEvent windowEvent) {
        ActionManager.processEvent(CoreActionType.CLIENT_UNMINIMISED, null);
    //#MainFrame.java:320: method: void com.dmdirc.addons.ui_swing.MainFrame.windowDeiconified(WindowEvent)
    //#MainFrame.java:320: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void windowDeiconified(WindowEvent)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#input(void windowDeiconified(WindowEvent)): com.dmdirc.actions.CoreActionType.CLIENT_UNMINIMISED
    //#presumption(void windowDeiconified(WindowEvent)): init'ed(com.dmdirc.actions.CoreActionType.CLIENT_UNMINIMISED)
    }
    //#MainFrame.java:321: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowDeiconified(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowActivated(final WindowEvent windowEvent) {
        //ignore
    }
    //#MainFrame.java:331: method: void com.dmdirc.addons.ui_swing.MainFrame.windowActivated(WindowEvent)
    //#MainFrame.java:331: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowActivated(WindowEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param windowEvent Window event
     */
    @Override
    public void windowDeactivated(final WindowEvent windowEvent) {
        //ignore
    }
    //#MainFrame.java:341: method: void com.dmdirc.addons.ui_swing.MainFrame.windowDeactivated(WindowEvent)
    //#MainFrame.java:341: end of method: void com.dmdirc.addons.ui_swing.MainFrame.windowDeactivated(WindowEvent)

    /** Initialiases the frame managers. */
    private void initFrameManagers() {
        UIUtilities.invokeAndWait(new Runnable() {
    //#MainFrame.java:345: method: void com.dmdirc.addons.ui_swing.MainFrame$7.com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)): init'ed(this.this$0)
    //#MainFrame.java:345: end of method: void com.dmdirc.addons.ui_swing.MainFrame$7.com.dmdirc.addons.ui_swing.MainFrame$7(MainFrame)
    //#MainFrame.java:345: method: void com.dmdirc.addons.ui_swing.MainFrame.initFrameManagers()
    //#input(void initFrameManagers()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void initFrameManagers()): this
    //#unanalyzed(void initFrameManagers()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initFrameManagers()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void initFrameManagers()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void initFrameManagers()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void initFrameManagers()): Effects-of-calling:com.dmdirc.logger.Logger:appError

            /** {@inheritDoc} */
            @Override
            public void run() {
                final String manager = IdentityManager.getGlobalConfig().
    //#MainFrame.java:350: method: void com.dmdirc.addons.ui_swing.MainFrame$7.run()
    //#MainFrame.java:350: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:350: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.frameManagerPanel
    //#output(void run()): new TreeFrameManager(run#3) num objects
    //#output(void run()): this.this$0.mainFrameManager
    //#new obj(void run()): new TreeFrameManager(run#3)
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.frameManagerPanel)
    //#presumption(void run()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@350 != null
    //#presumption(void run()): java.lang.Class:forName(...)@355 != null
    //#presumption(void run()): java.lang.Class:getConstructor(...)@355 != null
    //#presumption(void run()): java.lang.reflect.Constructor:newInstance(...)@355 != null
    //#post(void run()): this.this$0.mainFrameManager != null
    //#post(void run()): new TreeFrameManager(run#3) num objects <= 1
                        getOption("ui",
                        "framemanager");

                try {
                    mainFrameManager = (FrameManager) Class.forName(manager).
                            getConstructor().newInstance();
                } catch (Exception ex) {
                    // Throws craploads of exceptions and we want to handle them all
                    // the same way, so we might as well catch Exception
                    mainFrameManager = new TreeFrameManager();
    //#MainFrame.java:360: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.framemanager.tree.TreeFrameManager()
                }


                WindowManager.addFrameManager(mainFrameManager);
    //#MainFrame.java:364: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
                mainFrameManager.setParent(frameManagerPanel);
    //#MainFrame.java:365: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.FrameManager:setParent(JComponent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.FrameManager:setParent(JComponent)

                WindowManager.addFrameManager(MainFrame.this);
    //#MainFrame.java:367: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.ui.WindowManager:addFrameManager(FrameManager)
            }
    //#MainFrame.java:368: end of method: void com.dmdirc.addons.ui_swing.MainFrame$7.run()
        });
    }
    //#MainFrame.java:370: end of method: void com.dmdirc.addons.ui_swing.MainFrame.initFrameManagers()

    /**
     * Initialises the components for this frame.
     */
    private void initComponents() {
        statusBar = new SwingStatusBar(controller, this);
    //#MainFrame.java:376: method: void com.dmdirc.addons.ui_swing.MainFrame.initComponents()
    //#MainFrame.java:376: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#input(void initComponents()): com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1).length
    //#input(void initComponents()): com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1)[0..4_294_967_295]
    //#input(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition.BOTTOM
    //#input(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT
    //#input(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT
    //#input(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition.TOP
    //#input(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition.UNKNOWN
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.actions.CoreActionType.CLIENT_OPENED
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/MainFrame$12.$SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SnappingJSplitPane$Orientation.HORIZONTAL
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[others]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Dispatch_Table.setUI(Ljavax/swing/plaf/DesktopPaneUI;)V
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/desktopPane/ProxyDesktopPaneUI.__Descendant_Table[com/dmdirc/addons/ui_swing/components/desktopPane/ProxyDesktopPaneUI]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/desktopPane/ProxyDesktopPaneUI.__Descendant_Table[others]
    //#input(void initComponents()): this
    //#input(void initComponents()): this.controller
    //#input(void initComponents()): this.mainFrameManager
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar
    //#output(void initComponents()): new Apple(getApple#1) num objects
    //#output(void initComponents()): new Apple(getApple#1).__Tag
    //#output(void initComponents()): new Apple(getApple#1).addresses
    //#output(void initComponents()): new Apple(getApple#1).clientOpened
    //#output(void initComponents()): new Apple(getApple#1).isListener
    //#output(void initComponents()): new Apple(getApple#1).menuBar
    //#output(void initComponents()): new ArrayList(Apple#1) num objects
    //#output(void initComponents()): new AtomicBoolean(DMDircDesktopPane#1) num objects
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8) num objects
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).__Tag
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).model
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).rootNode
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).rootVisible
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).selectionModel
    //#output(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).this$0
    //#output(void initComponents()): new DMDircDesktopPane(initComponents#3) num objects
    //#output(void initComponents()): this.desktopPane.__Tag
    //#output(void initComponents()): this.desktopPane.changing
    //#output(void initComponents()): this.desktopPane.mainFrame
    //#output(void initComponents()): this.desktopPane.model
    //#output(void initComponents()): this.desktopPane.nodes
    //#output(void initComponents()): this.desktopPane.selectionModel
    //#output(void initComponents()): this.desktopPane.treeScroller
    //#output(void initComponents()): new DefaultTreeSelectionModel(DMDircDesktopPane#7) num objects
    //#output(void initComponents()): new HashMap(DMDircDesktopPane#4) num objects
    //#output(void initComponents()): new JMenuItem(initChannelMenu#2) num objects
    //#output(void initComponents()): new JMenuItem(initChannelMenu#3) num objects
    //#output(void initComponents()): new JMenuItem(initServerMenu#3) num objects
    //#output(void initComponents()): new JMenuItem(initServerMenu#4) num objects
    //#output(void initComponents()): new JPanel(initComponents#2) num objects
    //#output(void initComponents()): new MenuBar(initComponents#4) num objects
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.__Tag
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.controller
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.csd
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.disconnect
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.join
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.mainFrame
    //#output(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.ssd
    //#output(void initComponents()): new SwingStatusBar(initComponents#1) num objects
    //#output(void initComponents()): new TreeViewModel(DMDircDesktopPane#5) num objects
    //#output(void initComponents()): this.desktopPane
    //#output(void initComponents()): this.frameManagerPanel
    //#output(void initComponents()): this.menu
    //#output(void initComponents()): this.position
    //#output(void initComponents()): this.statusBar
    //#new obj(void initComponents()): new Apple(getApple#1)
    //#new obj(void initComponents()): new ArrayList(Apple#1)
    //#new obj(void initComponents()): new AtomicBoolean(DMDircDesktopPane#1)
    //#new obj(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8)
    //#new obj(void initComponents()): new DMDircDesktopPane(initComponents#3)
    //#new obj(void initComponents()): new DefaultTreeSelectionModel(DMDircDesktopPane#7)
    //#new obj(void initComponents()): new HashMap(DMDircDesktopPane#4)
    //#new obj(void initComponents()): new JMenuItem(initChannelMenu#2)
    //#new obj(void initComponents()): new JMenuItem(initChannelMenu#3)
    //#new obj(void initComponents()): new JMenuItem(initServerMenu#3)
    //#new obj(void initComponents()): new JMenuItem(initServerMenu#4)
    //#new obj(void initComponents()): new JPanel(initComponents#2)
    //#new obj(void initComponents()): new MenuBar(initComponents#4)
    //#new obj(void initComponents()): new SwingStatusBar(initComponents#1)
    //#new obj(void initComponents()): new TreeViewModel(DMDircDesktopPane#5)
    //#pre[2] (void initComponents()): init'ed(com/dmdirc/addons/ui_swing/Apple.me)
    //#pre[5] (void initComponents()): init'ed(this.controller)
    //#pre[6] (void initComponents()): this.mainFrameManager != null
    //#pre[1] (void initComponents()): (soft) init'ed(com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1)[0..4_294_967_295])
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.MainFrame:getContentPane(...)@388 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.MainFrame:getContentPane(...)@390 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.MainFrame:getContentPane(...)@391 != null
    //#presumption(void initComponents()): com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length >= 1
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me == One-of{old com/dmdirc/addons/ui_swing/Apple.me, &new Apple(getApple#1)}
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me != null
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar == &new MenuBar(initComponents#4)
    //#post(void initComponents()): this.menu == &new MenuBar(initComponents#4)
    //#post(void initComponents()): this.desktopPane == &new DMDircDesktopPane(initComponents#3)
    //#post(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).this$0 == &new DMDircDesktopPane(initComponents#3)
    //#post(void initComponents()): this.frameManagerPanel == &new JPanel(initComponents#2)
    //#post(void initComponents()): this.position != null
    //#post(void initComponents()): this.statusBar == &new SwingStatusBar(initComponents#1)
    //#post(void initComponents()): new Apple(getApple#1) num objects <= 1
    //#post(void initComponents()): new ArrayList(Apple#1) num objects == new Apple(getApple#1) num objects
    //#post(void initComponents()): new Apple(getApple#1).__Tag == com/dmdirc/addons/ui_swing/Apple
    //#post(void initComponents()): new Apple(getApple#1).addresses == &new ArrayList(Apple#1)
    //#post(void initComponents()): new Apple(getApple#1).clientOpened == 0
    //#post(void initComponents()): new Apple(getApple#1).isListener == 0
    //#post(void initComponents()): new Apple(getApple#1).menuBar == &new MenuBar(initComponents#4)
    //#post(void initComponents()): new AtomicBoolean(DMDircDesktopPane#1) num objects == 1
    //#post(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8) num objects == 1
    //#post(void initComponents()): new DMDircDesktopPane(initComponents#3) num objects == 1
    //#post(void initComponents()): new DefaultTreeSelectionModel(DMDircDesktopPane#7) num objects == 1
    //#post(void initComponents()): new HashMap(DMDircDesktopPane#4) num objects == 1
    //#post(void initComponents()): new JMenuItem(initChannelMenu#2) num objects == 1
    //#post(void initComponents()): new JMenuItem(initChannelMenu#3) num objects == 1
    //#post(void initComponents()): new JMenuItem(initServerMenu#3) num objects == 1
    //#post(void initComponents()): new JMenuItem(initServerMenu#4) num objects == 1
    //#post(void initComponents()): new JPanel(initComponents#2) num objects == 1
    //#post(void initComponents()): new MenuBar(initComponents#4) num objects == 1
    //#post(void initComponents()): new SwingStatusBar(initComponents#1) num objects == 1
    //#post(void initComponents()): new TreeViewModel(DMDircDesktopPane#5) num objects == 1
    //#post(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).__Tag == com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane$1
    //#post(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).model == &new TreeViewModel(DMDircDesktopPane#5)
    //#post(void initComponents()): this.desktopPane.model == &new TreeViewModel(DMDircDesktopPane#5)
    //#post(void initComponents()): init'ed(new DMDircDesktopPane$1(DMDircDesktopPane#8).rootNode)
    //#post(void initComponents()): init'ed(new DMDircDesktopPane$1(DMDircDesktopPane#8).rootVisible)
    //#post(void initComponents()): new DMDircDesktopPane$1(DMDircDesktopPane#8).selectionModel == &new DefaultTreeSelectionModel(DMDircDesktopPane#7)
    //#post(void initComponents()): this.desktopPane.selectionModel == &new DefaultTreeSelectionModel(DMDircDesktopPane#7)
    //#post(void initComponents()): this.desktopPane.__Tag == com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane
    //#post(void initComponents()): this.desktopPane.changing == &new AtomicBoolean(DMDircDesktopPane#1)
    //#post(void initComponents()): this.desktopPane.mainFrame == this
    //#post(void initComponents()): this.desktopPane.mainFrame != null
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.mainFrame == this.desktopPane.mainFrame
    //#post(void initComponents()): this.desktopPane.nodes == &new HashMap(DMDircDesktopPane#4)
    //#post(void initComponents()): this.desktopPane.treeScroller == &new DMDircDesktopPane$1(DMDircDesktopPane#8)
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.__Tag == com/dmdirc/addons/ui_swing/components/MenuBar
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.controller == this.controller
    //#post(void initComponents()): init'ed(com/dmdirc/addons/ui_swing/Apple.me.menuBar.controller)
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.csd == &new JMenuItem(initChannelMenu#3)
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.disconnect == &new JMenuItem(initServerMenu#3)
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.join == &new JMenuItem(initChannelMenu#2)
    //#post(void initComponents()): com/dmdirc/addons/ui_swing/Apple.me.menuBar.ssd == &new JMenuItem(initServerMenu#4)
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane$Orientation:equals
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setOneTouchExpandable
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setContinuousLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:setParent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:clear
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.interfaces.FramemanagerPosition:getPosition
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.interfaces.FrameManager:canPositionVertically
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.interfaces.FrameManager:canPositionHorizontally
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setTopComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setBottomComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setResizeWeight
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setOrientation
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setLeftComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane:setRightComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JDesktopPane:setUI
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.InputMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.plaf.DesktopPaneUI
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.tree.DefaultTreeModel:getRoot
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JDesktopPane
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.concurrent.atomic.AtomicBoolean
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.Color
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:setBackground
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.BorderFactory:createEtchedBorder
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:setBorder
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:getUI
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewNode
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.tree.TreeViewModel
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.tree.DefaultTreeSelectionModel
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.WindowManager:addFrameManager
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu:setMnemonic
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu:addMenuListener
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MenuBar:add
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuItem
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuItem:setText
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuItem:setMnemonic
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuItem:setActionCommand
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuItem:addActionListener
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu:add
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenuBar
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MenuBar:setLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.framemanager.windowmenu.WindowMenuFrameManager
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.Box:createHorizontalGlue
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getScaledIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:setBorder
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:setContentAreaFilled
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:setFocusPainted
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:setMargin
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:setFocusable
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MDIBar:setOpaque
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MDIBar:setLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MDIBar:add
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.WindowManager:addSelectionListener
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NoFocusButton:addActionListener
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getPanelInsets
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.layout.UnitValue:getUnit
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.Box:createHorizontalStrut
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MenuBar:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.System:loadLibrary
    //#unanalyzed(void initComponents()): Effects-of-calling:registerOpenURLCallback
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.actions.ActionManager:addListener
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MenuBar:getMenuCount
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.MenuBar:getMenu
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu:getItemCount
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JMenu:getItem
        frameManagerPanel = new JPanel();
        desktopPane = new DMDircDesktopPane(this);

        initFrameManagers();

        menu = new MenuBar(controller, this);
        Apple.getApple().setMenuBar(menu);
        setJMenuBar(menu);
    //#MainFrame.java:384: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setJMenuBar(JMenuBar)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setJMenuBar(JMenuBar)

        setPreferredSize(new Dimension(800, 600));
    //#MainFrame.java:386: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setPreferredSize(Dimension)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setPreferredSize(Dimension)

        getContentPane().setLayout(new MigLayout(
    //#MainFrame.java:388: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
    //#MainFrame.java:388: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
                "fill, ins rel, wrap 1, hidemode 2"));
        getContentPane().add(initSplitPane(), "grow, push");
    //#MainFrame.java:390: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
        getContentPane().add(statusBar,
    //#MainFrame.java:391: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.MainFrame:getContentPane()
                "hmax 20, wmax 100%-2*rel, wmin 100%-2*rel");

        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    //#MainFrame.java:394: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setDefaultCloseOperation(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setDefaultCloseOperation(int)

        pack();
    //#MainFrame.java:396: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:pack()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:pack()
    }
    //#MainFrame.java:397: end of method: void com.dmdirc.addons.ui_swing.MainFrame.initComponents()

    /**
     * Initialises the split pane.
     * 
     * @return Returns the initialised split pane
     */
    private JSplitPane initSplitPane() {
        final JSplitPane mainSplitPane =
    //#MainFrame.java:405: method: JSplitPane com.dmdirc.addons.ui_swing.MainFrame.initSplitPane()
    //#input(JSplitPane initSplitPane()): com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1).length
    //#input(JSplitPane initSplitPane()): com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1)[0..4_294_967_295]
    //#input(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.BOTTOM
    //#input(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT
    //#input(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT
    //#input(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.TOP
    //#input(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.UNKNOWN
    //#input(JSplitPane initSplitPane()): com/dmdirc/addons/ui_swing/MainFrame$12.$SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition
    //#input(JSplitPane initSplitPane()): com/dmdirc/addons/ui_swing/components/SnappingJSplitPane$Orientation.HORIZONTAL
    //#input(JSplitPane initSplitPane()): this
    //#input(JSplitPane initSplitPane()): this.desktopPane
    //#input(JSplitPane initSplitPane()): this.frameManagerPanel
    //#input(JSplitPane initSplitPane()): this.mainFrameManager
    //#output(JSplitPane initSplitPane()): new SnappingJSplitPane(initSplitPane#1) num objects
    //#output(JSplitPane initSplitPane()): return_value.__Tag
    //#output(JSplitPane initSplitPane()): return_value.config
    //#output(JSplitPane initSplitPane()): return_value.leftComponentSnap
    //#output(JSplitPane initSplitPane()): return_value.snapDistance
    //#output(JSplitPane initSplitPane()): return_value.useOneTouchExpandable
    //#output(JSplitPane initSplitPane()): return_value
    //#output(JSplitPane initSplitPane()): this.position
    //#new obj(JSplitPane initSplitPane()): new SnappingJSplitPane(initSplitPane#1)
    //#pre[5] (JSplitPane initSplitPane()): this.mainFrameManager != null
    //#pre[1] (JSplitPane initSplitPane()): (soft) init'ed(com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1)[0..4_294_967_295])
    //#pre[3] (JSplitPane initSplitPane()): (soft) init'ed(this.desktopPane)
    //#pre[4] (JSplitPane initSplitPane()): (soft) this.frameManagerPanel != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@229 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@407 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@432 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@442 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@451 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@461 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.BOTTOM != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT != null
    //#presumption(JSplitPane initSplitPane()): init'ed(com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT)
    //#presumption(JSplitPane initSplitPane()): init'ed(com.dmdirc.ui.interfaces.FramemanagerPosition.TOP)
    //#presumption(JSplitPane initSplitPane()): init'ed(com.dmdirc.ui.interfaces.FramemanagerPosition.UNKNOWN)
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition:getPosition(...)@407 != null
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 >= 0
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length >= 1
    //#presumption(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 < com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length
    //#post(JSplitPane initSplitPane()): return_value == &new SnappingJSplitPane(initSplitPane#1)
    //#post(JSplitPane initSplitPane()): this.position != null
    //#post(JSplitPane initSplitPane()): new SnappingJSplitPane(initSplitPane#1) num objects == 1
    //#post(JSplitPane initSplitPane()): return_value.leftComponentSnap == 1
    //#post(JSplitPane initSplitPane()): return_value.__Tag == com/dmdirc/addons/ui_swing/components/SnappingJSplitPane
    //#post(JSplitPane initSplitPane()): return_value.config != null
    //#post(JSplitPane initSplitPane()): return_value.snapDistance == 10
    //#post(JSplitPane initSplitPane()): init'ed(return_value.useOneTouchExpandable)
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane$Orientation:equals
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:javax.swing.JSplitPane
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setOneTouchExpandable
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setContinuousLayout
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:getActionMap
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:javax.swing.ActionMap:setParent
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:javax.swing.ActionMap:clear
    //#unanalyzed(JSplitPane initSplitPane()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#test_vector(JSplitPane initSplitPane()): com.dmdirc.addons.ui_swing.MainFrame$12__static_init.new int[](MainFrame$12__static_init#1)[0..4_294_967_295]: {1}, {2}, {3}, {4}, {-2_147_483_648..0, 5..4_294_967_295}
    //#test_vector(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FrameManager:canPositionHorizontally(...)@420: {1}, {0}
    //#test_vector(JSplitPane initSplitPane()): com.dmdirc.ui.interfaces.FrameManager:canPositionVertically(...)@415: {1}, {0}
                new SnappingJSplitPane(SnappingJSplitPane.Orientation.HORIZONTAL);
        position =
    //#MainFrame.java:407: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:407: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#MainFrame.java:407: Warning: method not available - call not analyzed
    //#    call on FramemanagerPosition com.dmdirc.ui.interfaces.FramemanagerPosition:getPosition(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: FramemanagerPosition com.dmdirc.ui.interfaces.FramemanagerPosition:getPosition(String)
                FramemanagerPosition.getPosition(IdentityManager.getGlobalConfig().
                getOption("ui", "framemanagerPosition"));

        if (position == FramemanagerPosition.UNKNOWN) {
            position = FramemanagerPosition.LEFT;
        }

        if (!mainFrameManager.canPositionVertically() &&
    //#MainFrame.java:415: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.interfaces.FrameManager:canPositionVertically()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: bool com.dmdirc.ui.interfaces.FrameManager:canPositionVertically()
                (position == FramemanagerPosition.LEFT ||
                position == FramemanagerPosition.RIGHT)) {
            position = FramemanagerPosition.BOTTOM;
        }
        if (!mainFrameManager.canPositionHorizontally() &&
    //#MainFrame.java:420: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.interfaces.FrameManager:canPositionHorizontally()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: bool com.dmdirc.ui.interfaces.FrameManager:canPositionHorizontally()
                (position == FramemanagerPosition.TOP ||
                position == FramemanagerPosition.BOTTOM)) {
            position = FramemanagerPosition.LEFT;
        }

        switch (position) {
    //#MainFrame.java:426: method: com.dmdirc.addons.ui_swing.MainFrame$12.com.dmdirc.addons.ui_swing.MainFrame$12__static_init
    //#MainFrame.java:426: Warning: method not available - call not analyzed
    //#    call on FramemanagerPosition[] com.dmdirc.ui.interfaces.FramemanagerPosition:values()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$12
    //#    method: com.dmdirc.addons.ui_swing.MainFrame$12__static_init
    //#    unanalyzed callee: FramemanagerPosition[] com.dmdirc.ui.interfaces.FramemanagerPosition:values()
    //#MainFrame.java:426: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$12
    //#    method: com.dmdirc.addons.ui_swing.MainFrame$12__static_init
    //#    unanalyzed callee: int com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal()
    //#input(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.BOTTOM
    //#input(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT
    //#input(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT
    //#input(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.TOP
    //#output(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition
    //#output(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$12]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): new int[](MainFrame$12__static_init#1) num objects
    //#output(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition.length
    //#output(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition[0..4_294_967_295]
    //#new obj(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): new int[](MainFrame$12__static_init#1)
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.BOTTOM != null
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.LEFT != null
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.RIGHT != null
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition.TOP != null
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 < com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length@426
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 < com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length@426
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 < com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length@426
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal(...)@426 < com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length@426
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:values(...).length@426 >= 1
    //#presumption(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): com.dmdirc.ui.interfaces.FramemanagerPosition:values(...)@426 != null
    //#post(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition == &new int[](MainFrame$12__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$12] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): new int[](MainFrame$12__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition.length >= 1
    //#post(com.dmdirc.addons.ui_swing.MainFrame$12__static_init): $SwitchMap$com$dmdirc$ui$interfaces$FramemanagerPosition[0..4_294_967_295] in {0..4}, if init'ed
    //#MainFrame.java:426: end of method: com.dmdirc.addons.ui_swing.MainFrame$12.com.dmdirc.addons.ui_swing.MainFrame$12__static_init
    //#MainFrame.java:426: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: int com.dmdirc.ui.interfaces.FramemanagerPosition:ordinal()
            case TOP:
                mainSplitPane.setTopComponent(frameManagerPanel);
                mainSplitPane.setBottomComponent(desktopPane);
                mainSplitPane.setResizeWeight(0.0);
                mainSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
                frameManagerPanel.setPreferredSize(new Dimension(
    //#MainFrame.java:432: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:432: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                        Integer.MAX_VALUE,
                        IdentityManager.getGlobalConfig().
                        getOptionInt("ui", "frameManagerSize")));
                break;
            case LEFT:
                mainSplitPane.setLeftComponent(frameManagerPanel);
                mainSplitPane.setRightComponent(desktopPane);
                mainSplitPane.setResizeWeight(0.0);
                mainSplitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
                frameManagerPanel.setPreferredSize(new Dimension(
    //#MainFrame.java:442: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:442: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                        IdentityManager.getGlobalConfig().getOptionInt("ui",
                        "frameManagerSize"), Integer.MAX_VALUE));
                break;
            case BOTTOM:
                mainSplitPane.setTopComponent(desktopPane);
                mainSplitPane.setBottomComponent(frameManagerPanel);
                mainSplitPane.setResizeWeight(1.0);
                mainSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
                frameManagerPanel.setPreferredSize(new Dimension(
    //#MainFrame.java:451: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:451: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                        Integer.MAX_VALUE,
                        IdentityManager.getGlobalConfig().
                        getOptionInt("ui", "frameManagerSize")));
                break;
            case RIGHT:
                mainSplitPane.setLeftComponent(desktopPane);
                mainSplitPane.setRightComponent(frameManagerPanel);
                mainSplitPane.setResizeWeight(1.0);
                mainSplitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
                frameManagerPanel.setPreferredSize(new Dimension(
    //#MainFrame.java:461: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:461: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: JSplitPane initSplitPane()
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                        IdentityManager.getGlobalConfig().getOptionInt("ui",
                        "frameManagerSize"), Integer.MAX_VALUE));
                break;
            default:
                break;
        }

        return mainSplitPane;
    //#MainFrame.java:469: end of method: JSplitPane com.dmdirc.addons.ui_swing.MainFrame.initSplitPane()
    }

    /** {@inheritDoc}. */
    @Override
    public void quit() {
        quit(0);
    //#MainFrame.java:475: method: void com.dmdirc.addons.ui_swing.MainFrame.quit()
    //#input(void quit()): this
    //#output(void quit()): this.exitCode
    //#post(void quit()): this.exitCode == One-of{old this.exitCode, 0}
    //#unanalyzed(void quit()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void quit()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void quit()): Effects-of-calling:javax.swing.JOptionPane:showConfirmDialog
    //#unanalyzed(void quit()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.LoggingSwingWorker
    //#unanalyzed(void quit()): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame$8:execute
    //#unanalyzed(void quit()): Effects-of-calling:javax.swing.SwingWorker
    }
    //#MainFrame.java:476: end of method: void com.dmdirc.addons.ui_swing.MainFrame.quit()

    /** 
     * Exit code call to quit. 
     * 
     * @param exitCode Exit code
     */
    public void quit(final int exitCode) {
        if (exitCode == 0 && IdentityManager.getGlobalConfig().getOptionBool(
    //#MainFrame.java:484: method: void com.dmdirc.addons.ui_swing.MainFrame.quit(int)
    //#MainFrame.java:484: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void quit(int)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:484: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void quit(int)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#input(void quit(int)): exitCode
    //#input(void quit(int)): this
    //#output(void quit(int)): this.exitCode
    //#presumption(void quit(int)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@484 != null
    //#post(void quit(int)): this.exitCode == One-of{old this.exitCode, exitCode}
    //#unanalyzed(void quit(int)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.LoggingSwingWorker
    //#unanalyzed(void quit(int)): Effects-of-calling:javax.swing.SwingWorker
    //#test_vector(void quit(int)): exitCode: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void quit(int)): com.dmdirc.config.ConfigManager:getOptionBool(...)@484: {0}, {1}
    //#test_vector(void quit(int)): javax.swing.JOptionPane:showConfirmDialog(...)@484: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
                "ui", "confirmQuit") && JOptionPane.showConfirmDialog(this,
                "You are about to quit DMDirc, are you sure?", "Quit confirm",
                JOptionPane.YES_NO_OPTION,
                JOptionPane.WARNING_MESSAGE) !=
                JOptionPane.YES_OPTION) {
            return;
        }

        this.exitCode = exitCode;

        new LoggingSwingWorker() {
    //#MainFrame.java:495: method: void com.dmdirc.addons.ui_swing.MainFrame$8.com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): init'ed(this.this$0)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)): Effects-of-calling:javax.swing.SwingWorker
    //#MainFrame.java:495: end of method: void com.dmdirc.addons.ui_swing.MainFrame$8.com.dmdirc.addons.ui_swing.MainFrame$8(MainFrame)
    //#MainFrame.java:495: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame$8:execute()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void quit(int)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame$8:execute()

            /** {@inheritDoc} */
            @Override
            protected Object doInBackground() throws Exception {
                ActionManager.processEvent(CoreActionType.CLIENT_CLOSING, null);
    //#MainFrame.java:500: method: Object com.dmdirc.addons.ui_swing.MainFrame$8.doInBackground()
    //#MainFrame.java:500: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#input(Object doInBackground()): com.dmdirc.actions.CoreActionType.CLIENT_CLOSING
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(Object doInBackground()): this
    //#input(Object doInBackground()): this.this$0
    //#output(Object doInBackground()): return_value
    //#pre[2] (Object doInBackground()): this.this$0 != null
    //#presumption(Object doInBackground()): com.dmdirc.ServerManager:getServerManager(...)@501 != null
    //#presumption(Object doInBackground()): init'ed(com.dmdirc.actions.CoreActionType.CLIENT_CLOSING)
    //#presumption(Object doInBackground()): com.dmdirc.config.IdentityManager:getConfigIdentity(...)@503 != null
    //#presumption(Object doInBackground()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@501 != null
    //#post(Object doInBackground()): return_value == null
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.Integer:intValue
                ServerManager.getServerManager().closeAll(IdentityManager.
    //#MainFrame.java:501: Warning: method not available - call not analyzed
    //#    call on ServerManager com.dmdirc.ServerManager:getServerManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: ServerManager com.dmdirc.ServerManager:getServerManager()
    //#MainFrame.java:501: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:501: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#MainFrame.java:501: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ServerManager:closeAll(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: void com.dmdirc.ServerManager:closeAll(String)
                        getGlobalConfig().getOption("general", "closemessage"));
                IdentityManager.getConfigIdentity().setOption("ui",
    //#MainFrame.java:503: Warning: method not available - call not analyzed
    //#    call on Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#MainFrame.java:503: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: Object doInBackground()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, String)
                        "frameManagerSize",
                        String.valueOf(getFrameManagerSize()));
                return null;
    //#MainFrame.java:506: end of method: Object com.dmdirc.addons.ui_swing.MainFrame$8.doInBackground()
            }

            /** {@inheritDoc} */
            @Override
            protected void done() {
                super.done();
    //#MainFrame.java:512: method: void com.dmdirc.addons.ui_swing.MainFrame$8.done()
    //#input(void done()): com/dmdirc/addons/ui_swing/components/LoggingSwingWorker.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void done()): this
    //#input(void done()): this.this$0
    //#pre[2] (void done()): this.this$0 != null
    //#unanalyzed(void done()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.LoggingSwingWorker:isCancelled
    //#unanalyzed(void done()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.LoggingSwingWorker:get
    //#unanalyzed(void done()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void done()): Effects-of-calling:java.util.concurrent.ExecutionException:getMessage
    //#unanalyzed(void done()): Effects-of-calling:com.dmdirc.logger.Logger:appError
                dispose();
    //#MainFrame.java:513: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:dispose()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#    method: void done()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:dispose()
            }
    //#MainFrame.java:514: end of method: void com.dmdirc.addons.ui_swing.MainFrame$8.done()
        }.execute();
    }
    //#MainFrame.java:516: end of method: void com.dmdirc.addons.ui_swing.MainFrame.quit(int)

    /** {@inheritDoc} */
    @Override
    public void configChanged(final String domain, final String key) {
        if ("ui".equals(domain)) {
    //#MainFrame.java:521: method: void com.dmdirc.addons.ui_swing.MainFrame.configChanged(String, String)
    //#input(void configChanged(String, String)): "Unable to change Look and Feel: "._tainted
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/SwingController.com.dmdirc.logger.ErrorLevel.LOW
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void configChanged(String, String)): domain
    //#input(void configChanged(String, String)): key
    //#input(void configChanged(String, String)): this
    //#input(void configChanged(String, String)): this.controller
    //#input(void configChanged(String, String)): this.controller.windows
    //#output(void configChanged(String, String)): new ImageIcon(configChanged#1) num objects
    //#output(void configChanged(String, String)): this.imageIcon
    //#output(void configChanged(String, String)): this.showVersion
    //#new obj(void configChanged(String, String)): new ImageIcon(configChanged#1)
    //#pre[6] (void configChanged(String, String)): (soft) this.controller != null
    //#pre[7] (void configChanged(String, String)): (soft) this.controller.windows != null
    //#presumption(void configChanged(String, String)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@525 != null
    //#presumption(void configChanged(String, String)): com.dmdirc.ui.IconManager:getIconManager(...)@530 != null
    //#post(void configChanged(String, String)): this.imageIcon == One-of{old this.imageIcon, &new ImageIcon(configChanged#1)}
    //#post(void configChanged(String, String)): possibly_updated(this.showVersion)
    //#post(void configChanged(String, String)): new ImageIcon(configChanged#1) num objects <= 1
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:invokeLater
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:invokeAndWait
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:getLookAndFeel
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UIManager:setLookAndFeel
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.ClassNotFoundException:getMessage
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.InstantiationException:getMessage
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.IllegalAccessException:getMessage
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UnsupportedLookAndFeelException:getMessage
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UIManager:getSystemLookAndFeelClassName
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UIManager:getInstalledLookAndFeels
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getName
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getClassName
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@521: {0}, {1}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@522: {0}, {1}
            if ("lookandfeel".equals(key)) {
                controller.updateLookAndFeel();
            } else {
                showVersion = IdentityManager.getGlobalConfig().getOptionBool(
    //#MainFrame.java:525: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#MainFrame.java:525: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
                        "ui",
                        "showversion");
            }
        } else {
            imageIcon = new ImageIcon(IconManager.getIconManager().getImage(
    //#MainFrame.java:530: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#MainFrame.java:530: Warning: method not available - call not analyzed
    //#    call on Image com.dmdirc.ui.IconManager:getImage(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Image com.dmdirc.ui.IconManager:getImage(String)
                    "icon"));
            setIconImage(imageIcon.getImage());
    //#MainFrame.java:532: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setIconImage(Image)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setIconImage(Image)
        }
    }
    //#MainFrame.java:534: end of method: void com.dmdirc.addons.ui_swing.MainFrame.configChanged(String, String)

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

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

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

    /** {@inheritDoc}. */
    @Override
    public void addWindow(final FrameContainer window) {
        UIUtilities.invokeAndWait(new Runnable() {
    //#MainFrame.java:557: method: void com.dmdirc.addons.ui_swing.MainFrame$9.com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)): init'ed(this.val$window)
    //#MainFrame.java:557: end of method: void com.dmdirc.addons.ui_swing.MainFrame$9.com.dmdirc.addons.ui_swing.MainFrame$9(MainFrame, FrameContainer)
    //#MainFrame.java:557: method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer)
    //#input(void addWindow(FrameContainer)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void addWindow(FrameContainer)): this
    //#input(void addWindow(FrameContainer)): window
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void addWindow(FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:appError

            /** {@inheritDoc} */
            @Override
            public void run() {
                addWindow(window, desktopPane.getAllFrames().length - 1);
    //#MainFrame.java:562: method: void com.dmdirc.addons.ui_swing.MainFrame$9.run()
    //#MainFrame.java:562: Warning: method not available - call not analyzed
    //#    call on JInternalFrame[] com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:getAllFrames()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$9
    //#    method: void run()
    //#    unanalyzed callee: JInternalFrame[] com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:getAllFrames()
    //#input(void run()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.desktopPane
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.desktopPane != null
    //#presumption(void run()): com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:getAllFrames(...).length@562 <= 4_294_967_296
    //#presumption(void run()): com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:getAllFrames(...)@562 != null
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:appError
            }
    //#MainFrame.java:563: end of method: void com.dmdirc.addons.ui_swing.MainFrame$9.run()
        });
    }
    //#MainFrame.java:565: end of method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer)

    /**
     * Adds a window to this frame manager.
     * 
     * @param window The server to be added
     * @param index Index of the window to be added
     */
    public void addWindow(final FrameContainer window, final int index) {
        UIUtilities.invokeAndWait(new Runnable() {
    //#MainFrame.java:574: method: void com.dmdirc.addons.ui_swing.MainFrame$10.com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.val$index
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.val$index == Param_3
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): init'ed(this.val$index)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)): init'ed(this.val$window)
    //#MainFrame.java:574: end of method: void com.dmdirc.addons.ui_swing.MainFrame$10.com.dmdirc.addons.ui_swing.MainFrame$10(MainFrame, FrameContainer, int)
    //#MainFrame.java:574: method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer, int)
    //#input(void addWindow(FrameContainer, int)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void addWindow(FrameContainer, int)): index
    //#input(void addWindow(FrameContainer, int)): this
    //#input(void addWindow(FrameContainer, int)): window
    //#unanalyzed(void addWindow(FrameContainer, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void addWindow(FrameContainer, int)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void addWindow(FrameContainer, int)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void addWindow(FrameContainer, int)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void addWindow(FrameContainer, int)): Effects-of-calling:com.dmdirc.logger.Logger:appError

            /** {@inheritDoc} */
            @Override
            public void run() {
                final JInternalFrame frame = (JInternalFrame) window.getFrame();
    //#MainFrame.java:579: method: void com.dmdirc.addons.ui_swing.MainFrame$10.run()
    //#MainFrame.java:579: Warning: method not available - call not analyzed
    //#    call on Window com.dmdirc.FrameContainer:getFrame()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$10
    //#    method: void run()
    //#    unanalyzed callee: Window com.dmdirc.FrameContainer:getFrame()
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane.__Dispatch_Table.add(Ljavax/swing/JComponent;I)V
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.desktopPane
    //#input(void run()): this.this$0.desktopPane.__Tag
    //#input(void run()): this.val$index
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.desktopPane != null
    //#pre[4] (void run()): this.desktopPane.__Tag == com/dmdirc/addons/ui_swing/components/desktopPane/DMDircDesktopPane
    //#pre[6] (void run()): this.val$window != null
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

                // Add the frame
                desktopPane.add(frame, index);
            }
    //#MainFrame.java:583: end of method: void com.dmdirc.addons.ui_swing.MainFrame$10.run()
        });
    }
    //#MainFrame.java:585: end of method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer, int)

    /** {@inheritDoc}. */
    @Override
    public void delWindow(final FrameContainer window) {
        UIUtilities.invokeAndWait(new Runnable() {
    //#MainFrame.java:590: method: void com.dmdirc.addons.ui_swing.MainFrame$11.com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): this
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)): init'ed(this.val$window)
    //#MainFrame.java:590: end of method: void com.dmdirc.addons.ui_swing.MainFrame$11.com.dmdirc.addons.ui_swing.MainFrame$11(MainFrame, FrameContainer)
    //#MainFrame.java:590: method: void com.dmdirc.addons.ui_swing.MainFrame.delWindow(FrameContainer)
    //#input(void delWindow(FrameContainer)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void delWindow(FrameContainer)): this
    //#input(void delWindow(FrameContainer)): window
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void delWindow(FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:appError

            /** {@inheritDoc} */
            @Override
            public void run() {
                final JInternalFrame frame = (JInternalFrame) window.getFrame();
    //#MainFrame.java:595: method: void com.dmdirc.addons.ui_swing.MainFrame$11.run()
    //#MainFrame.java:595: Warning: method not available - call not analyzed
    //#    call on Window com.dmdirc.FrameContainer:getFrame()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$11
    //#    method: void run()
    //#    unanalyzed callee: Window com.dmdirc.FrameContainer:getFrame()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.desktopPane
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.desktopPane != null
    //#pre[4] (void run()): this.val$window != null

                desktopPane.remove(frame);
    //#MainFrame.java:597: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:remove(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.MainFrame$11
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.desktopPane.DMDircDesktopPane:remove(Component)
            }
    //#MainFrame.java:598: end of method: void com.dmdirc.addons.ui_swing.MainFrame$11.run()
        });
    }
    //#MainFrame.java:600: end of method: void com.dmdirc.addons.ui_swing.MainFrame.delWindow(FrameContainer)

    /** {@inheritDoc}. */
    @Override
    public void addWindow(final FrameContainer parent,
            final FrameContainer window) {
        addWindow(window);
    //#MainFrame.java:606: method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer, FrameContainer)
    //#input(void addWindow(FrameContainer, FrameContainer)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void addWindow(FrameContainer, FrameContainer)): this
    //#input(void addWindow(FrameContainer, FrameContainer)): window
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void addWindow(FrameContainer, FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    }
    //#MainFrame.java:607: end of method: void com.dmdirc.addons.ui_swing.MainFrame.addWindow(FrameContainer, FrameContainer)

    /** {@inheritDoc}. */
    @Override
    public void delWindow(final FrameContainer parent,
            final FrameContainer window) {
        delWindow(window);
    //#MainFrame.java:613: method: void com.dmdirc.addons.ui_swing.MainFrame.delWindow(FrameContainer, FrameContainer)
    //#input(void delWindow(FrameContainer, FrameContainer)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void delWindow(FrameContainer, FrameContainer)): this
    //#input(void delWindow(FrameContainer, FrameContainer)): window
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void delWindow(FrameContainer, FrameContainer)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    }
    //#MainFrame.java:614: end of method: void com.dmdirc.addons.ui_swing.MainFrame.delWindow(FrameContainer, FrameContainer)
}
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$12
    //#output(com.dmdirc.addons.ui_swing.MainFrame$11__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$11]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$11__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$11__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$11] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$11__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$11.com.dmdirc.addons.ui_swing.MainFrame$11__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$11
    //#output(com.dmdirc.addons.ui_swing.MainFrame$10__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$10]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$10__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$10__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$10] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$10__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$10.com.dmdirc.addons.ui_swing.MainFrame$10__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$10
    //#output(com.dmdirc.addons.ui_swing.MainFrame$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$9]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$9__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$9] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$9__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$9.com.dmdirc.addons.ui_swing.MainFrame$9__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$9
    //#output(com.dmdirc.addons.ui_swing.MainFrame$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$7]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$7__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$7] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$7__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$7.com.dmdirc.addons.ui_swing.MainFrame$7__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$7
    //#output(com.dmdirc.addons.ui_swing.MainFrame$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$6]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$6__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$6] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$6__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$6.com.dmdirc.addons.ui_swing.MainFrame$6__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$6
    //#output(com.dmdirc.addons.ui_swing.MainFrame$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$5]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$5__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$5__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$5.com.dmdirc.addons.ui_swing.MainFrame$5__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$5
    //#output(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$8]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Dispatch_Table.doInBackground()Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Dispatch_Table.done()V
    //#output(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): com/dmdirc/addons/ui_swing/components/LoggingSwingWorker.__Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$8]
    //#post(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$8] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): com/dmdirc/addons/ui_swing/components/LoggingSwingWorker.__Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$8] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Dispatch_Table.doInBackground()Ljava/lang/Object; == &doInBackground
    //#post(com.dmdirc.addons.ui_swing.MainFrame$8__static_init): __Dispatch_Table.done()V == &done
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$8.com.dmdirc.addons.ui_swing.MainFrame$8__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$8
    //#output(com.dmdirc.addons.ui_swing.MainFrame$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$4]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$4__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$4__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$4.com.dmdirc.addons.ui_swing.MainFrame$4__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$4
    //#output(com.dmdirc.addons.ui_swing.MainFrame$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$3]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$3__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$3__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$3.com.dmdirc.addons.ui_swing.MainFrame$3__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$3
    //#output(com.dmdirc.addons.ui_swing.MainFrame$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$2]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$2__static_init): __Dispatch_Table.run()V == &run
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$2.com.dmdirc.addons.ui_swing.MainFrame$2__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$2
    //#output(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$1]
    //#output(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Dispatch_Table.windowGainedFocus(Ljava/awt/event/WindowEvent;)V
    //#output(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Dispatch_Table.windowLostFocus(Ljava/awt/event/WindowEvent;)V
    //#post(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/MainFrame$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Dispatch_Table.windowGainedFocus(Ljava/awt/event/WindowEvent;)V == &windowGainedFocus
    //#post(com.dmdirc.addons.ui_swing.MainFrame$1__static_init): __Dispatch_Table.windowLostFocus(Ljava/awt/event/WindowEvent;)V == &windowLostFocus
    //#MainFrame.java:: end of method: com.dmdirc.addons.ui_swing.MainFrame$1.com.dmdirc.addons.ui_swing.MainFrame$1__static_init
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame$1
    //#MainFrame.java:: end of class: com.dmdirc.addons.ui_swing.MainFrame
