//# 0 errors, 1,569 messages
//#
/*
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$18
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$18.com.dmdirc.addons.ui_swing.SwingController$18__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$17
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$17.com.dmdirc.addons.ui_swing.SwingController$17__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$16
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$16.com.dmdirc.addons.ui_swing.SwingController$16__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$15
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$15.com.dmdirc.addons.ui_swing.SwingController$15__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$14
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$14.com.dmdirc.addons.ui_swing.SwingController$14__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$13
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$13.com.dmdirc.addons.ui_swing.SwingController$13__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$12
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$12.com.dmdirc.addons.ui_swing.SwingController$12__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$11
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$11.com.dmdirc.addons.ui_swing.SwingController$11__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$10
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$10.com.dmdirc.addons.ui_swing.SwingController$10__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$9
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$9.com.dmdirc.addons.ui_swing.SwingController$9__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$8
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$8.com.dmdirc.addons.ui_swing.SwingController$8__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$7$1
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$7$1.com.dmdirc.addons.ui_swing.SwingController$7$1__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$7
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$7.com.dmdirc.addons.ui_swing.SwingController$7__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$6
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$6.com.dmdirc.addons.ui_swing.SwingController$6__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$5
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$5.com.dmdirc.addons.ui_swing.SwingController$5__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$4
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$4.com.dmdirc.addons.ui_swing.SwingController$4__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$3
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$3.com.dmdirc.addons.ui_swing.SwingController$3__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$2
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$2.com.dmdirc.addons.ui_swing.SwingController$2__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController$1
    //#SwingController.java:1:1: method: com.dmdirc.addons.ui_swing.SwingController$1.com.dmdirc.addons.ui_swing.SwingController$1__static_init
    //#SwingController.java:1:1: class: com.dmdirc.addons.ui_swing.SwingController
 * 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.frames.ServerFrame;
import com.dmdirc.addons.ui_swing.components.frames.CustomFrame;
import com.dmdirc.addons.ui_swing.components.frames.QueryFrame;
import com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame;
import com.dmdirc.addons.ui_swing.components.frames.ChannelFrame;
import com.dmdirc.Channel;
import com.dmdirc.FrameContainer;
import com.dmdirc.Main;
import com.dmdirc.config.prefs.PreferencesInterface;
import com.dmdirc.ui.IconManager;
import com.dmdirc.Query;
import com.dmdirc.Server;
import com.dmdirc.WritableFrameContainer;
import com.dmdirc.commandparser.parsers.CommandParser;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.ui.core.dialogs.sslcertificate.SSLCertificateDialogModel;
import com.dmdirc.ui.interfaces.ChannelWindow;
import com.dmdirc.ui.interfaces.InputWindow;
import com.dmdirc.ui.interfaces.QueryWindow;
import com.dmdirc.ui.interfaces.ServerWindow;
import com.dmdirc.ui.interfaces.StatusBar;
import com.dmdirc.ui.interfaces.UIController;
import com.dmdirc.ui.interfaces.Window;
import com.dmdirc.addons.ui_swing.components.pluginpanel.PluginPanel;
import com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag;
import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
import com.dmdirc.addons.ui_swing.components.themepanel.ThemePanel;
import com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog;
import com.dmdirc.addons.ui_swing.dialogs.url.URLDialog;
import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
import com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog;
import com.dmdirc.addons.ui_swing.dialogs.prefs.URLConfigPanel;
import com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel;
import com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard;
import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
import com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog;
import com.dmdirc.addons.ui_swing.wizard.WizardListener;
import com.dmdirc.plugins.Plugin;
import com.dmdirc.updater.Update;
import com.dmdirc.util.ReturnableThread;

import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Semaphore;

import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import net.miginfocom.layout.PlatformDefaults;

/**
 * Controls the main swing UI.
 */
public final class SwingController extends Plugin implements UIController {
    //#SwingController.java:87: method: UpdaterDialog com.dmdirc.addons.ui_swing.SwingController.getUpdaterDialog(List)
    //#input(UpdaterDialog getUpdaterDialog(List)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(UpdaterDialog getUpdaterDialog(List)): this
    //#input(UpdaterDialog getUpdaterDialog(List)): x0
    //#output(UpdaterDialog getUpdaterDialog(List)): return_value
    //#post(UpdaterDialog getUpdaterDialog(List)): init'ed(return_value)
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:invokeAndWait
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(UpdaterDialog getUpdaterDialog(List)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#SwingController.java:87: end of method: UpdaterDialog com.dmdirc.addons.ui_swing.SwingController.getUpdaterDialog(List)
    //#SwingController.java:87: method: MainWindow com.dmdirc.addons.ui_swing.SwingController.getMainWindow()
    //#input(MainWindow getMainWindow()): this
    //#input(MainWindow getMainWindow()): this.me
    //#output(MainWindow getMainWindow()): return_value
    //#pre[2] (MainWindow getMainWindow()): init'ed(this.me)
    //#post(MainWindow getMainWindow()): return_value == this.me
    //#post(MainWindow getMainWindow()): init'ed(return_value)
    //#SwingController.java:87: end of method: MainWindow com.dmdirc.addons.ui_swing.SwingController.getMainWindow()
    //#SwingController.java:87: method: Logger com.dmdirc.addons.ui_swing.SwingController.access$000()
    //#input(Logger access$000()): LOGGER
    //#output(Logger access$000()): return_value
    //#post(Logger access$000()): init'ed(return_value)
    //#SwingController.java:87: end of method: Logger com.dmdirc.addons.ui_swing.SwingController.access$000()
    //#SwingController.java:87: method: MainFrame com.dmdirc.addons.ui_swing.SwingController.access$100(SwingController)
    //#input(MainFrame access$100(SwingController)): x0
    //#input(MainFrame access$100(SwingController)): x0.me
    //#output(MainFrame access$100(SwingController)): return_value
    //#pre[1] (MainFrame access$100(SwingController)): x0 != null
    //#pre[2] (MainFrame access$100(SwingController)): init'ed(x0.me)
    //#post(MainFrame access$100(SwingController)): return_value == x0.me
    //#post(MainFrame access$100(SwingController)): init'ed(return_value)
    //#SwingController.java:87: end of method: MainFrame com.dmdirc.addons.ui_swing.SwingController.access$100(SwingController)
    //#SwingController.java:87: method: ErrorListDialog com.dmdirc.addons.ui_swing.SwingController.access$200(SwingController)
    //#input(ErrorListDialog access$200(SwingController)): x0
    //#input(ErrorListDialog access$200(SwingController)): x0.errorDialog
    //#output(ErrorListDialog access$200(SwingController)): return_value
    //#pre[1] (ErrorListDialog access$200(SwingController)): x0 != null
    //#pre[2] (ErrorListDialog access$200(SwingController)): init'ed(x0.errorDialog)
    //#post(ErrorListDialog access$200(SwingController)): return_value == x0.errorDialog
    //#post(ErrorListDialog access$200(SwingController)): init'ed(return_value)
    //#SwingController.java:87: end of method: ErrorListDialog com.dmdirc.addons.ui_swing.SwingController.access$200(SwingController)
    //#SwingController.java:87: method: MainFrame com.dmdirc.addons.ui_swing.SwingController.access$102(SwingController, MainFrame)
    //#input(MainFrame access$102(SwingController, MainFrame)): x0
    //#input(MainFrame access$102(SwingController, MainFrame)): x1
    //#output(MainFrame access$102(SwingController, MainFrame)): return_value
    //#output(MainFrame access$102(SwingController, MainFrame)): x0.me
    //#pre[1] (MainFrame access$102(SwingController, MainFrame)): x0 != null
    //#post(MainFrame access$102(SwingController, MainFrame)): return_value == x1
    //#post(MainFrame access$102(SwingController, MainFrame)): init'ed(return_value)
    //#post(MainFrame access$102(SwingController, MainFrame)): x0.me == return_value
    //#SwingController.java:87: end of method: MainFrame com.dmdirc.addons.ui_swing.SwingController.access$102(SwingController, MainFrame)
    //#SwingController.java:87: method: AtomicBoolean com.dmdirc.addons.ui_swing.SwingController.access$300(SwingController)
    //#input(AtomicBoolean access$300(SwingController)): x0
    //#input(AtomicBoolean access$300(SwingController)): x0.mainFrameCreated
    //#output(AtomicBoolean access$300(SwingController)): return_value
    //#pre[1] (AtomicBoolean access$300(SwingController)): x0 != null
    //#pre[2] (AtomicBoolean access$300(SwingController)): init'ed(x0.mainFrameCreated)
    //#post(AtomicBoolean access$300(SwingController)): return_value == x0.mainFrameCreated
    //#post(AtomicBoolean access$300(SwingController)): init'ed(return_value)
    //#SwingController.java:87: end of method: AtomicBoolean com.dmdirc.addons.ui_swing.SwingController.access$300(SwingController)
    //#SwingController.java:87: method: SwingStatusBar com.dmdirc.addons.ui_swing.SwingController.access$402(SwingController, SwingStatusBar)
    //#input(SwingStatusBar access$402(SwingController, SwingStatusBar)): x0
    //#input(SwingStatusBar access$402(SwingController, SwingStatusBar)): x1
    //#output(SwingStatusBar access$402(SwingController, SwingStatusBar)): return_value
    //#output(SwingStatusBar access$402(SwingController, SwingStatusBar)): x0.statusBar
    //#pre[1] (SwingStatusBar access$402(SwingController, SwingStatusBar)): x0 != null
    //#post(SwingStatusBar access$402(SwingController, SwingStatusBar)): return_value == x1
    //#post(SwingStatusBar access$402(SwingController, SwingStatusBar)): init'ed(return_value)
    //#post(SwingStatusBar access$402(SwingController, SwingStatusBar)): x0.statusBar == return_value
    //#SwingController.java:87: end of method: SwingStatusBar com.dmdirc.addons.ui_swing.SwingController.access$402(SwingController, SwingStatusBar)
    //#SwingController.java:87: method: ErrorListDialog com.dmdirc.addons.ui_swing.SwingController.access$202(SwingController, ErrorListDialog)
    //#input(ErrorListDialog access$202(SwingController, ErrorListDialog)): x0
    //#input(ErrorListDialog access$202(SwingController, ErrorListDialog)): x1
    //#output(ErrorListDialog access$202(SwingController, ErrorListDialog)): return_value
    //#output(ErrorListDialog access$202(SwingController, ErrorListDialog)): x0.errorDialog
    //#pre[1] (ErrorListDialog access$202(SwingController, ErrorListDialog)): x0 != null
    //#post(ErrorListDialog access$202(SwingController, ErrorListDialog)): return_value == x1
    //#post(ErrorListDialog access$202(SwingController, ErrorListDialog)): init'ed(return_value)
    //#post(ErrorListDialog access$202(SwingController, ErrorListDialog)): x0.errorDialog == return_value
    //#SwingController.java:87: end of method: ErrorListDialog com.dmdirc.addons.ui_swing.SwingController.access$202(SwingController, ErrorListDialog)

    /** Logger to use. */
    private static final java.util.logging.Logger LOGGER =
    //#SwingController.java:90: method: com.dmdirc.addons.ui_swing.SwingController.com.dmdirc.addons.ui_swing.SwingController__static_init
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): LOGGER
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController]
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.addTopLevelWindow(Ljava/awt/Window;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.delTopLevelWindow(Ljava/awt/Window;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getActiveServer()Lcom/dmdirc/Server;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getActiveWindow()Lcom/dmdirc/ui/interfaces/Window;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getChannel(Lcom/dmdirc/Channel;)Lcom/dmdirc/ui/interfaces/ChannelWindow;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getInputWindow(Lcom/dmdirc/WritableFrameContainer;Lcom/dmdirc/commandparser/parsers/CommandParser;)Lcom/dmdirc/ui/interfaces/InputWindow;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainFrame()Lcom/dmdirc/addons/ui_swing/MainFrame;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainWindow()Lcom/dmdirc/addons/ui_swing/MainFrame;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainWindow()Lcom/dmdirc/ui/interfaces/MainWindow;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getPluginPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getQuery(Lcom/dmdirc/Query;)Lcom/dmdirc/ui/interfaces/QueryWindow;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getServer(Lcom/dmdirc/Server;)Lcom/dmdirc/ui/interfaces/ServerWindow;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getStatusBar()Lcom/dmdirc/ui/interfaces/StatusBar;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getSwingStatusBar()Lcom/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getThemesPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getTopLevelWindows()Ljava/util/List;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdaterDialog(Ljava/util/List;)Lcom/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdaterDialog(Ljava/util/List;)Lcom/dmdirc/ui/interfaces/UpdaterDialog;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdatesPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUrlHandlersPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUserInput(Ljava/lang/String;)Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getWindow(Lcom/dmdirc/FrameContainer;)Lcom/dmdirc/ui/interfaces/Window;
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.hasMainFrame()Z
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.initUISettings()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.onLoad()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.onUnload()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showChannelSettingsDialog(Lcom/dmdirc/Channel;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showErrorDialog()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFeedbackNag()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFirstRunWizard()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFirstRunWizard(Z)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showMessageDialog(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showMigrationWizard()V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showSSLCertificateDialog(Lcom/dmdirc/ui/core/dialogs/sslcertificate/SSLCertificateDialogModel;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showServerSettingsDialog(Lcom/dmdirc/Server;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showURLDialog(Ljava/net/URI;)V
    //#output(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.updateLookAndFeel()V
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): init'ed(LOGGER)
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.addTopLevelWindow(Ljava/awt/Window;)V == &addTopLevelWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.delTopLevelWindow(Ljava/awt/Window;)V == &delTopLevelWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getActiveServer()Lcom/dmdirc/Server; == &getActiveServer
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getActiveWindow()Lcom/dmdirc/ui/interfaces/Window; == &getActiveWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getChannel(Lcom/dmdirc/Channel;)Lcom/dmdirc/ui/interfaces/ChannelWindow; == &getChannel
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getInputWindow(Lcom/dmdirc/WritableFrameContainer;Lcom/dmdirc/commandparser/parsers/CommandParser;)Lcom/dmdirc/ui/interfaces/InputWindow; == &getInputWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainFrame()Lcom/dmdirc/addons/ui_swing/MainFrame; == &getMainFrame
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainWindow()Lcom/dmdirc/addons/ui_swing/MainFrame; == &getMainWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getMainWindow()Lcom/dmdirc/ui/interfaces/MainWindow; == &getMainWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getPluginPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface; == &getPluginPrefsPanel
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getQuery(Lcom/dmdirc/Query;)Lcom/dmdirc/ui/interfaces/QueryWindow; == &getQuery
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getServer(Lcom/dmdirc/Server;)Lcom/dmdirc/ui/interfaces/ServerWindow; == &getServer
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getStatusBar()Lcom/dmdirc/ui/interfaces/StatusBar; == &getStatusBar
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getSwingStatusBar()Lcom/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar; == &getSwingStatusBar
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getThemesPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface; == &getThemesPrefsPanel
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getTopLevelWindows()Ljava/util/List; == &getTopLevelWindows
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdaterDialog(Ljava/util/List;)Lcom/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog; == &getUpdaterDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdaterDialog(Ljava/util/List;)Lcom/dmdirc/ui/interfaces/UpdaterDialog; == &getUpdaterDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUpdatesPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface; == &getUpdatesPrefsPanel
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUrlHandlersPrefsPanel()Lcom/dmdirc/config/prefs/PreferencesInterface; == &getUrlHandlersPrefsPanel
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getUserInput(Ljava/lang/String;)Ljava/lang/String; == &getUserInput
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.getWindow(Lcom/dmdirc/FrameContainer;)Lcom/dmdirc/ui/interfaces/Window; == &getWindow
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.hasMainFrame()Z == &hasMainFrame
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.initUISettings()V == &initUISettings
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.onLoad()V == &onLoad
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.onUnload()V == &onUnload
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showChannelSettingsDialog(Lcom/dmdirc/Channel;)V == &showChannelSettingsDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showErrorDialog()V == &showErrorDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFeedbackNag()V == &showFeedbackNag
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFirstRunWizard()V == &showFirstRunWizard
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showFirstRunWizard(Z)V == &showFirstRunWizard
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showMessageDialog(Ljava/lang/String;Ljava/lang/String;)V == &showMessageDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showMigrationWizard()V == &showMigrationWizard
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showSSLCertificateDialog(Lcom/dmdirc/ui/core/dialogs/sslcertificate/SSLCertificateDialogModel;)V == &showSSLCertificateDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showServerSettingsDialog(Lcom/dmdirc/Server;)V == &showServerSettingsDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.showURLDialog(Ljava/net/URI;)V == &showURLDialog
    //#post(com.dmdirc.addons.ui_swing.SwingController__static_init): __Dispatch_Table.updateLookAndFeel()V == &updateLookAndFeel
    //#SwingController.java:90: end of method: com.dmdirc.addons.ui_swing.SwingController.com.dmdirc.addons.ui_swing.SwingController__static_init
            java.util.logging.Logger.getLogger(SwingController.class.getName());
    /** Singleton instance of MainFrame. */
    private MainFrame me;
    /** Status bar. */
    private SwingStatusBar statusBar;
    /** Top level window list. */
    private final List<java.awt.Window> windows;
    /** Waiting on mainframe creation. */
    private AtomicBoolean mainFrameCreated = new AtomicBoolean(false);
    /** Error dialog. */
    private ErrorListDialog errorDialog;

    /** Instantiates a new SwingController. */
    public SwingController() {
    //#SwingController.java:104: method: void com.dmdirc.addons.ui_swing.SwingController.com.dmdirc.addons.ui_swing.SwingController()
    //#SwingController.java:104: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.plugins.Plugin()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void com.dmdirc.addons.ui_swing.SwingController()
    //#    unanalyzed callee: void com.dmdirc.plugins.Plugin()
    //#input(void com.dmdirc.addons.ui_swing.SwingController()): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController()): new ArrayList(SwingController#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.SwingController()): new AtomicBoolean(SwingController#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.SwingController()): this.mainFrameCreated
    //#output(void com.dmdirc.addons.ui_swing.SwingController()): this.windows
    //#new obj(void com.dmdirc.addons.ui_swing.SwingController()): new ArrayList(SwingController#2)
    //#new obj(void com.dmdirc.addons.ui_swing.SwingController()): new AtomicBoolean(SwingController#1)
    //#post(void com.dmdirc.addons.ui_swing.SwingController()): this.mainFrameCreated == &new AtomicBoolean(SwingController#1)
    //#post(void com.dmdirc.addons.ui_swing.SwingController()): this.windows == &new ArrayList(SwingController#2)
    //#post(void com.dmdirc.addons.ui_swing.SwingController()): new ArrayList(SwingController#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.SwingController()): new AtomicBoolean(SwingController#1) num objects == 1
        windows = new ArrayList<java.awt.Window>();
    }
    //#SwingController.java:106: end of method: void com.dmdirc.addons.ui_swing.SwingController.com.dmdirc.addons.ui_swing.SwingController()

    /**
     * Does the main frame exist?
     *
     * @return true iif mainframe exists
     */
    protected boolean hasMainFrame() {
        return mainFrameCreated.get();
    //#SwingController.java:114: method: bool com.dmdirc.addons.ui_swing.SwingController.hasMainFrame()
    //#input(bool hasMainFrame()): this
    //#input(bool hasMainFrame()): this.mainFrameCreated
    //#output(bool hasMainFrame()): return_value
    //#pre[2] (bool hasMainFrame()): this.mainFrameCreated != null
    //#post(bool hasMainFrame()): init'ed(return_value)
    //#SwingController.java:114: end of method: bool com.dmdirc.addons.ui_swing.SwingController.hasMainFrame()
    }

    /** {@inheritDoc} */
    @Override
    public MainFrame getMainWindow() {
        return getMainFrame();
    //#SwingController.java:120: method: MainFrame com.dmdirc.addons.ui_swing.SwingController.getMainWindow()
    //#input(MainFrame getMainWindow()): this
    //#input(MainFrame getMainWindow()): this.me
    //#output(MainFrame getMainWindow()): return_value
    //#pre[2] (MainFrame getMainWindow()): init'ed(this.me)
    //#post(MainFrame getMainWindow()): return_value == this.me
    //#post(MainFrame getMainWindow()): init'ed(return_value)
    //#SwingController.java:120: end of method: MainFrame com.dmdirc.addons.ui_swing.SwingController.getMainWindow()
    }

    /**
     * Retrieves the main window used by this UI.
     *
     * @return This UI's main window
     */
    public MainFrame getMainFrame() {
        return me;
    //#SwingController.java:129: method: MainFrame com.dmdirc.addons.ui_swing.SwingController.getMainFrame()
    //#input(MainFrame getMainFrame()): this
    //#input(MainFrame getMainFrame()): this.me
    //#output(MainFrame getMainFrame()): return_value
    //#pre[2] (MainFrame getMainFrame()): init'ed(this.me)
    //#post(MainFrame getMainFrame()): return_value == this.me
    //#post(MainFrame getMainFrame()): init'ed(return_value)
    //#SwingController.java:129: end of method: MainFrame com.dmdirc.addons.ui_swing.SwingController.getMainFrame()
    }

    /** {@inheritDoc} */
    @Override
    public StatusBar getStatusBar() {
        return getSwingStatusBar();
    //#SwingController.java:135: method: StatusBar com.dmdirc.addons.ui_swing.SwingController.getStatusBar()
    //#input(StatusBar getStatusBar()): this
    //#input(StatusBar getStatusBar()): this.statusBar
    //#output(StatusBar getStatusBar()): return_value
    //#pre[2] (StatusBar getStatusBar()): init'ed(this.statusBar)
    //#post(StatusBar getStatusBar()): return_value == this.statusBar
    //#post(StatusBar getStatusBar()): init'ed(return_value)
    //#SwingController.java:135: end of method: StatusBar com.dmdirc.addons.ui_swing.SwingController.getStatusBar()
    }

    /**
     * Retrieves the Swing Status Bar used by this UI.
     * 
     * @return This UI's status bar
     */
    public SwingStatusBar getSwingStatusBar() {
        return statusBar;
    //#SwingController.java:144: method: SwingStatusBar com.dmdirc.addons.ui_swing.SwingController.getSwingStatusBar()
    //#input(SwingStatusBar getSwingStatusBar()): this
    //#input(SwingStatusBar getSwingStatusBar()): this.statusBar
    //#output(SwingStatusBar getSwingStatusBar()): return_value
    //#pre[2] (SwingStatusBar getSwingStatusBar()): init'ed(this.statusBar)
    //#post(SwingStatusBar getSwingStatusBar()): return_value == this.statusBar
    //#post(SwingStatusBar getSwingStatusBar()): init'ed(return_value)
    //#SwingController.java:144: end of method: SwingStatusBar com.dmdirc.addons.ui_swing.SwingController.getSwingStatusBar()
    }

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

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(new ChannelFrame(channel, SwingController.this));
    //#SwingController.java:155: method: void com.dmdirc.addons.ui_swing.SwingController$1.run()
    //#SwingController.java:155: Warning: call too complex - analysis skipped
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#SwingController.java:155: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$1:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$1:setObject(Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$channel
            }
    //#SwingController.java:156: end of method: void com.dmdirc.addons.ui_swing.SwingController$1.run()
        });
    }

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

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(new ServerFrame(server, SwingController.this));
    //#SwingController.java:168: method: void com.dmdirc.addons.ui_swing.SwingController$2.run()
    //#SwingController.java:168: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$2:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$2: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/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$server
    //#pre[3] (void run()): this.val$server != null
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JMenuItem
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JMenuItem:addActionListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ServerFrame:setTitle
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ServerFrame:getContentPane
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ServerFrame:getTextPane
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ServerFrame:getSearchBar
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ServerFrame:pack
    //#unanalyzed(void run()): Effects-of-calling:getContainer
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.commandparser.parsers.ServerCommandParser
    //#unanalyzed(void run()): Effects-of-calling:getInputField
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler
    //#unanalyzed(void run()): Effects-of-calling:setInputHandler
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void run()): Effects-of-calling: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:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionColour
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void run()): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getConfigManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.Server:addAwayStateListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler:addValidationListener
            }
    //#SwingController.java:169: end of method: void com.dmdirc.addons.ui_swing.SwingController$2.run()
        });
    }

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

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(new QueryFrame(query, SwingController.this));
    //#SwingController.java:181: method: void com.dmdirc.addons.ui_swing.SwingController$3.run()
    //#SwingController.java:181: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$3:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$3
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$3: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/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$query
    //#pre[3] (void run()): this.val$query != null
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.QueryFrame:setTitle
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.QueryFrame:getContentPane
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.QueryFrame:getTextPane
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.QueryFrame:getSearchBar
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.QueryFrame:pack
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#unanalyzed(void run()): Effects-of-calling:getContainer
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.Query:getServer
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.commandparser.parsers.QueryCommandParser
    //#unanalyzed(void run()): Effects-of-calling:getInputField
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler
    //#unanalyzed(void run()): Effects-of-calling:setInputHandler
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void run()): Effects-of-calling: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:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionColour
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void run()): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getConfigManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.Server:addAwayStateListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler:addValidationListener
            }
    //#SwingController.java:182: end of method: void com.dmdirc.addons.ui_swing.SwingController$3.run()
        });
    }

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

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(new CustomFrame(owner, SwingController.this));
    //#SwingController.java:194: method: void com.dmdirc.addons.ui_swing.SwingController$4.run()
    //#SwingController.java:194: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$4:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$4
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$4:setObject(Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$owner
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:setTitle
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:getContentPane
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:getTextPane
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:getSearchBar
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:pack
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomFrame:addKeyListener
            }
    //#SwingController.java:195: end of method: void com.dmdirc.addons.ui_swing.SwingController$4.run()
        });
    }

    /** {@inheritDoc} */
    @Override
    public InputWindow getInputWindow(final WritableFrameContainer owner,
            final CommandParser commandParser) {
        LOGGER.finest("getInputWindow()");
    //#SwingController.java:203: method: InputWindow com.dmdirc.addons.ui_swing.SwingController.getInputWindow(WritableFrameContainer, CommandParser)
    //#input(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): LOGGER
    //#input(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): commandParser
    //#input(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): owner
    //#input(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): this
    //#output(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): return_value
    //#presumption(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): java.util.logging.Logger:getLogger(...)@90 != null
    //#post(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): init'ed(return_value)
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(InputWindow getInputWindow(WritableFrameContainer, CommandParser)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject

        return UIUtilities.invokeAndWait(new ReturnableThread<CustomInputFrame>() {
    //#SwingController.java:205: method: void com.dmdirc.addons.ui_swing.SwingController$5.com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)
    //#SwingController.java:205: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$5
    //#    method: void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.val$commandParser
    //#output(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.val$owner
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.val$commandParser == Param_3
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): init'ed(this.val$commandParser)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): this.val$owner == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)): init'ed(this.val$owner)
    //#SwingController.java:205: end of method: void com.dmdirc.addons.ui_swing.SwingController$5.com.dmdirc.addons.ui_swing.SwingController$5(SwingController, WritableFrameContainer, CommandParser)
    //#SwingController.java:205: end of method: InputWindow com.dmdirc.addons.ui_swing.SwingController.getInputWindow(WritableFrameContainer, CommandParser)

            /** {@inheritDoc} */
            @Override
            public void run() {
                LOGGER.finest("getInputWindow(): run");
    //#SwingController.java:210: method: void com.dmdirc.addons.ui_swing.SwingController$5.run()
    //#input(void run()): "getInputWindow(): object set: "._tainted
    //#input(void run()): com/dmdirc/addons/ui_swing/SwingController.LOGGER
    //#input(void run()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$commandParser
    //#input(void run()): this.val$owner
    //#pre[4] (void run()): this.val$owner != null
    //#presumption(void run()): java.util.logging.Logger:getLogger(...)@90 != null
    //#presumption(void run()): java.util.logging.Logger:getLogger(...)@90 != null
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame:setTitle
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame:getContentPane
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame:getTextPane
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame:getSearchBar
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.CustomInputFrame:pack
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#unanalyzed(void run()): Effects-of-calling:getInputField
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler
    //#unanalyzed(void run()): Effects-of-calling:setInputHandler
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void run()): Effects-of-calling: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:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionColour
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void run()): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getConfigManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.Server:addAwayStateListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.input.InputHandler:addValidationListener
                setObject(new CustomInputFrame(owner, commandParser,
    //#SwingController.java:211: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$5:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$5
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$5:setObject(Object)
                        SwingController.this));
                LOGGER.finest("getInputWindow(): object set: " + getObject());
    //#SwingController.java:213: Warning: method not available - call not analyzed
    //#    call on Object com.dmdirc.addons.ui_swing.SwingController$5:getObject()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$5
    //#    method: void run()
    //#    unanalyzed callee: Object com.dmdirc.addons.ui_swing.SwingController$5:getObject()
            }
    //#SwingController.java:214: end of method: void com.dmdirc.addons.ui_swing.SwingController$5.run()
        });
    }

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

            /** {@inheritDoc} */
            @Override
            public void run() {
                setObject(SwingUpdaterDialog.getSwingUpdaterDialog(updates, me));
    //#SwingController.java:226: method: void com.dmdirc.addons.ui_swing.SwingController$6.run()
    //#SwingController.java:226: Warning: method not available - call not analyzed
    //#    call on SwingUpdaterDialog com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog:getSwingUpdaterDialog(List, MainFrame)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$6
    //#    method: void run()
    //#    unanalyzed callee: SwingUpdaterDialog com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog:getSwingUpdaterDialog(List, MainFrame)
    //#SwingController.java:226: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$6:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$6
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$6:setObject(Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$updates
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)
            }
    //#SwingController.java:227: end of method: void com.dmdirc.addons.ui_swing.SwingController$6.run()
        });
    }

    /** {@inheritDoc} */
    @Override
    public void showFirstRunWizard() {
        showFirstRunWizard(true);
    //#SwingController.java:234: method: void com.dmdirc.addons.ui_swing.SwingController.showFirstRunWizard()
    //#input(void showFirstRunWizard()): this
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:java.util.concurrent.Semaphore
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:invokeLater
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:java.util.concurrent.Semaphore:acquireUninterruptibly
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showFirstRunWizard()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SwingController.java:235: end of method: void com.dmdirc.addons.ui_swing.SwingController.showFirstRunWizard()

    /** {@inheritDoc} */
    @Override
    public void showMigrationWizard() {
        showFirstRunWizard(false);
    //#SwingController.java:240: method: void com.dmdirc.addons.ui_swing.SwingController.showMigrationWizard()
    //#input(void showMigrationWizard()): this
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:java.util.concurrent.Semaphore
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:invokeLater
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:java.util.concurrent.Semaphore:acquireUninterruptibly
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showMigrationWizard()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SwingController.java:241: end of method: void com.dmdirc.addons.ui_swing.SwingController.showMigrationWizard()

    /**
     * Shows a first run wizard, or a migration wizard.
     * 
     * @param firstRun First run?
     */
    private synchronized void showFirstRunWizard(final boolean firstRun) {
        final Semaphore semaphore = new Semaphore(0);
    //#SwingController.java:249: method: void com.dmdirc.addons.ui_swing.SwingController.showFirstRunWizard(bool)
    //#input(void showFirstRunWizard(bool)): firstRun
    //#input(void showFirstRunWizard(bool)): this
    //#unanalyzed(void showFirstRunWizard(bool)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showFirstRunWizard(bool)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showFirstRunWizard(bool)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:250: method: void com.dmdirc.addons.ui_swing.SwingController$7.com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.val$firstRun
    //#output(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.val$semaphore
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.val$firstRun == Param_3
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): init'ed(this.val$firstRun)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): this.val$semaphore == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)): init'ed(this.val$semaphore)
    //#SwingController.java:250: end of method: void com.dmdirc.addons.ui_swing.SwingController$7.com.dmdirc.addons.ui_swing.SwingController$7(SwingController, Semaphore, bool)

            /** {@inheritDoc} */
            @Override
            public void run() {
                final WizardListener listener = new WizardListener() {
    //#SwingController.java:255: method: void com.dmdirc.addons.ui_swing.SwingController$7$1.com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)): this.this$1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)): this.this$1 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)): init'ed(this.this$1)
    //#SwingController.java:255: end of method: void com.dmdirc.addons.ui_swing.SwingController$7$1.com.dmdirc.addons.ui_swing.SwingController$7$1(SwingController$7)
    //#SwingController.java:255: method: void com.dmdirc.addons.ui_swing.SwingController$7.run()
    //#input(void run()): this
    //#input(void run()): this.val$firstRun
    //#presumption(void run()): com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard:getWizardDialog(...)@271 != null

                    /** {@inheritDoc} */
                    @Override
                    public void wizardFinished() {
                        semaphore.release();
    //#SwingController.java:260: method: void com.dmdirc.addons.ui_swing.SwingController$7$1.wizardFinished()
    //#input(void wizardFinished()): this
    //#input(void wizardFinished()): this.this$1
    //#input(void wizardFinished()): this.this$1.val$semaphore
    //#pre[2] (void wizardFinished()): this.this$1 != null
    //#pre[3] (void wizardFinished()): this.val$semaphore != null
                    }
    //#SwingController.java:261: end of method: void com.dmdirc.addons.ui_swing.SwingController$7$1.wizardFinished()

                    /** {@inheritDoc} */
                    @Override
                    public void wizardCancelled() {
                        semaphore.release();
    //#SwingController.java:266: method: void com.dmdirc.addons.ui_swing.SwingController$7$1.wizardCancelled()
    //#input(void wizardCancelled()): this
    //#input(void wizardCancelled()): this.this$1
    //#input(void wizardCancelled()): this.this$1.val$semaphore
    //#pre[2] (void wizardCancelled()): this.this$1 != null
    //#pre[3] (void wizardCancelled()): this.val$semaphore != null
                    }
    //#SwingController.java:267: end of method: void com.dmdirc.addons.ui_swing.SwingController$7$1.wizardCancelled()
                };
                final SwingFirstRunWizard wizard =
    //#SwingController.java:269: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard(bool)
                        new SwingFirstRunWizard(firstRun);
                wizard.getWizardDialog().addWizardListener(listener);
    //#SwingController.java:271: Warning: method not available - call not analyzed
    //#    call on WizardDialog com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard:getWizardDialog()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$7
    //#    method: void run()
    //#    unanalyzed callee: WizardDialog com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard:getWizardDialog()
    //#SwingController.java:271: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.wizard.WizardDialog:addWizardListener(WizardListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.wizard.WizardDialog:addWizardListener(WizardListener)
                wizard.display();
    //#SwingController.java:272: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard:display()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$7
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard:display()
            }
    //#SwingController.java:273: end of method: void com.dmdirc.addons.ui_swing.SwingController$7.run()
        });
        semaphore.acquireUninterruptibly();
    }
    //#SwingController.java:276: end of method: void com.dmdirc.addons.ui_swing.SwingController.showFirstRunWizard(bool)

    /** {@inheritDoc} */
    @Override
    public void showChannelSettingsDialog(final Channel channel) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:281: method: void com.dmdirc.addons.ui_swing.SwingController$8.com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): this.val$channel
    //#post(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): this.val$channel == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)): init'ed(this.val$channel)
    //#SwingController.java:281: end of method: void com.dmdirc.addons.ui_swing.SwingController$8.com.dmdirc.addons.ui_swing.SwingController$8(SwingController, Channel)
    //#SwingController.java:281: method: void com.dmdirc.addons.ui_swing.SwingController.showChannelSettingsDialog(Channel)
    //#input(void showChannelSettingsDialog(Channel)): channel
    //#input(void showChannelSettingsDialog(Channel)): this
    //#unanalyzed(void showChannelSettingsDialog(Channel)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showChannelSettingsDialog(Channel)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showChannelSettingsDialog(Channel)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                ChannelSettingsDialog.showChannelSettingsDialog(channel, me);
    //#SwingController.java:286: method: void com.dmdirc.addons.ui_swing.SwingController$8.run()
    //#SwingController.java:286: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog:showChannelSettingsDialog(Channel, Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$8
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog:showChannelSettingsDialog(Channel, Window)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$channel
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)
            }
    //#SwingController.java:287: end of method: void com.dmdirc.addons.ui_swing.SwingController$8.run()
        });
    }
    //#SwingController.java:289: end of method: void com.dmdirc.addons.ui_swing.SwingController.showChannelSettingsDialog(Channel)

    /** {@inheritDoc} */
    @Override
    public void showServerSettingsDialog(final Server server) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:294: method: void com.dmdirc.addons.ui_swing.SwingController$9.com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): this.val$server
    //#post(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): this.val$server == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)): init'ed(this.val$server)
    //#SwingController.java:294: end of method: void com.dmdirc.addons.ui_swing.SwingController$9.com.dmdirc.addons.ui_swing.SwingController$9(SwingController, Server)
    //#SwingController.java:294: method: void com.dmdirc.addons.ui_swing.SwingController.showServerSettingsDialog(Server)
    //#input(void showServerSettingsDialog(Server)): server
    //#input(void showServerSettingsDialog(Server)): this
    //#unanalyzed(void showServerSettingsDialog(Server)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showServerSettingsDialog(Server)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showServerSettingsDialog(Server)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                ServerSettingsDialog.showServerSettingsDialog(server, me);
    //#SwingController.java:299: method: void com.dmdirc.addons.ui_swing.SwingController$9.run()
    //#SwingController.java:299: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog:showServerSettingsDialog(Server, Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$9
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog:showServerSettingsDialog(Server, Window)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$server
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)
            }
    //#SwingController.java:300: end of method: void com.dmdirc.addons.ui_swing.SwingController$9.run()
        });
    }
    //#SwingController.java:302: end of method: void com.dmdirc.addons.ui_swing.SwingController.showServerSettingsDialog(Server)

    /**
     * Updates the look and feel to the current config setting.
     */
    void updateLookAndFeel() {
        try {
            UIManager.setLookAndFeel(UIUtilities.getLookAndFeel(IdentityManager.
    //#SwingController.java:309: method: void com.dmdirc.addons.ui_swing.SwingController.updateLookAndFeel()
    //#SwingController.java:309: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#SwingController.java:309: 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.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#input(void updateLookAndFeel()): "Unable to change Look and Feel: "._tainted
    //#input(void updateLookAndFeel()): com.dmdirc.logger.ErrorLevel.LOW
    //#input(void updateLookAndFeel()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void updateLookAndFeel()): this
    //#input(void updateLookAndFeel()): this.windows
    //#pre[2] (void updateLookAndFeel()): (soft) this.windows != null
    //#presumption(void updateLookAndFeel()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@309 != null
    //#presumption(void updateLookAndFeel()): init'ed(com.dmdirc.logger.ErrorLevel.LOW)
    //#presumption(void updateLookAndFeel()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#presumption(void updateLookAndFeel()): invokeAndWait(...)@311 init'ed
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.UIManager:getSystemLookAndFeelClassName
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.UIManager:getInstalledLookAndFeels
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getName
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getClassName
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void updateLookAndFeel()): Effects-of-calling:java.lang.StringBuilder:toString
    //#test_vector(void updateLookAndFeel()): java.util.Iterator:hasNext(...)@327: {0}, {1}
                    getGlobalConfig().getOption("ui", "lookandfeel")));
            final int state = UIUtilities.invokeAndWait(new ReturnableThread<Integer>() {
    //#SwingController.java:311: method: void com.dmdirc.addons.ui_swing.SwingController$10.com.dmdirc.addons.ui_swing.SwingController$10(SwingController)
    //#SwingController.java:311: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ReturnableThread()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$10
    //#    method: void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)
    //#    unanalyzed callee: void com.dmdirc.util.ReturnableThread()
    //#input(void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$10(SwingController)): init'ed(this.this$0)
    //#SwingController.java:311: end of method: void com.dmdirc.addons.ui_swing.SwingController$10.com.dmdirc.addons.ui_swing.SwingController$10(SwingController)

                /** {@inheritDoc} */
                @Override
                public void run() {
                    setObject(me.getExtendedState());
    //#SwingController.java:316: method: void com.dmdirc.addons.ui_swing.SwingController$10.run()
    //#SwingController.java:316: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.MainFrame:getExtendedState()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$10
    //#    method: void run()
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.MainFrame:getExtendedState()
    //#SwingController.java:316: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController$10:setObject(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$10
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController$10:setObject(Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.me != null
                }
    //#SwingController.java:317: end of method: void com.dmdirc.addons.ui_swing.SwingController$10.run()
            });
            UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:319: method: void com.dmdirc.addons.ui_swing.SwingController$11.com.dmdirc.addons.ui_swing.SwingController$11(SwingController)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$11(SwingController)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$11(SwingController)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$11(SwingController)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.SwingController$11(SwingController)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$11(SwingController)): init'ed(this.this$0)
    //#SwingController.java:319: end of method: void com.dmdirc.addons.ui_swing.SwingController$11.com.dmdirc.addons.ui_swing.SwingController$11(SwingController)

                /** {@inheritDoc} */
                @Override
                public void run() {
                    SwingUtilities.updateComponentTreeUI(errorDialog);
    //#SwingController.java:324: method: void com.dmdirc.addons.ui_swing.SwingController$11.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.errorDialog
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.errorDialog)
                }
    //#SwingController.java:325: end of method: void com.dmdirc.addons.ui_swing.SwingController$11.run()
            });
            for (final java.awt.Window window : getTopLevelWindows()) {
                UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:328: method: void com.dmdirc.addons.ui_swing.SwingController$12.com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): this.val$window
    //#post(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): this.val$window == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)): init'ed(this.val$window)
    //#SwingController.java:328: end of method: void com.dmdirc.addons.ui_swing.SwingController$12.com.dmdirc.addons.ui_swing.SwingController$12(SwingController, Window)

                    /** {@inheritDoc} */
                    @Override
                    public void run() {
                        SwingUtilities.updateComponentTreeUI(window);
    //#SwingController.java:333: method: void com.dmdirc.addons.ui_swing.SwingController$12.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$window
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)
    //#pre[4] (void run()): (soft) this.val$window != null
    //#test_vector(void run()): this.val$window == this.me: {1}, {0}
                        if (window != me) {
                            window.pack();
                        }
                    }
    //#SwingController.java:337: end of method: void com.dmdirc.addons.ui_swing.SwingController$12.run()
                });
            }
            UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:340: method: void com.dmdirc.addons.ui_swing.SwingController$13.com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): this.val$state
    //#post(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): this.val$state == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)): init'ed(this.val$state)
    //#SwingController.java:340: end of method: void com.dmdirc.addons.ui_swing.SwingController$13.com.dmdirc.addons.ui_swing.SwingController$13(SwingController, int)

                /** {@inheritDoc} */
                @Override
                public void run() {
                    me.setExtendedState(state);
    //#SwingController.java:345: method: void com.dmdirc.addons.ui_swing.SwingController$13.run()
    //#SwingController.java:345: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.MainFrame:setExtendedState(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$13
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.MainFrame:setExtendedState(int)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$state
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.me != null
                }
    //#SwingController.java:346: end of method: void com.dmdirc.addons.ui_swing.SwingController$13.run()
            });
        } catch (ClassNotFoundException ex) {
            Logger.userError(ErrorLevel.LOW,
    //#SwingController.java:349: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
                    "Unable to change Look and Feel: " +
                    ex.getMessage());
        } catch (InstantiationException ex) {
            Logger.userError(ErrorLevel.LOW,
    //#SwingController.java:353: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
                    "Unable to change Look and Feel: " +
                    ex.getMessage());
        } catch (IllegalAccessException ex) {
            Logger.userError(ErrorLevel.LOW,
    //#SwingController.java:357: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
                    "Unable to change Look and Feel: " +
                    ex.getMessage());
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.userError(ErrorLevel.LOW,
    //#SwingController.java:361: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void updateLookAndFeel()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
                    "Unable to change Look and Feel: " +
                    ex.getMessage());
        }
    }
    //#SwingController.java:365: end of method: void com.dmdirc.addons.ui_swing.SwingController.updateLookAndFeel()

    /** {@inheritDoc} */
    @Override
    public void initUISettings() {
        // For this to work it *HAS* to be before anything else UI related.
        final boolean aaSetting = IdentityManager.getGlobalConfig().
    //#SwingController.java:371: method: void com.dmdirc.addons.ui_swing.SwingController.initUISettings()
    //#SwingController.java:371: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#SwingController.java:371: 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.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#input(void initUISettings()): com.dmdirc.logger.ErrorLevel.LOW
    //#input(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.actions.CoreActionType.CLIENT_OPENED
    //#input(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.java.lang.Boolean.TRUE
    //#input(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.java.lang.Boolean.TYPE
    //#input(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.me
    //#output(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.application
    //#output(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.me
    //#output(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.me.isListener
    //#output(void initUISettings()): new Apple(getApple#1) num objects
    //#output(void initUISettings()): new Apple(getApple#1).__Tag
    //#output(void initUISettings()): new Apple(getApple#1).addresses
    //#output(void initUISettings()): new Apple(getApple#1).clientOpened
    //#output(void initUISettings()): new Apple(getApple#1).isListener
    //#output(void initUISettings()): new Apple(getApple#1).menuBar
    //#output(void initUISettings()): new ArrayList(Apple#1) num objects
    //#new obj(void initUISettings()): new Apple(getApple#1)
    //#new obj(void initUISettings()): new ArrayList(Apple#1)
    //#pre[2] (void initUISettings()): (soft) init'ed(com/dmdirc/addons/ui_swing/Apple.me)
    //#presumption(void initUISettings()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@371 != null
    //#presumption(void initUISettings()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@401 != null
    //#presumption(void initUISettings()): init'ed(com.dmdirc.logger.ErrorLevel.LOW)
    //#presumption(void initUISettings()): com.dmdirc.ui.IconManager:getIconManager(...)@394 != null
    //#presumption(void initUISettings()): com.dmdirc.ui.IconManager:getIconManager(...)@396 != null
    //#presumption(void initUISettings()): javax.swing.UIManager:getLookAndFeel(...)@416 != null
    //#post(void initUISettings()): possibly_updated(com/dmdirc/addons/ui_swing/Apple.application)
    //#post(void initUISettings()): com/dmdirc/addons/ui_swing/Apple.me == One-of{old com/dmdirc/addons/ui_swing/Apple.me, &new Apple(getApple#1)}
    //#post(void initUISettings()): init'ed(com/dmdirc/addons/ui_swing/Apple.me)
    //#post(void initUISettings()): init'ed(com/dmdirc/addons/ui_swing/Apple.me.isListener)
    //#post(void initUISettings()): new Apple(getApple#1) num objects <= 1
    //#post(void initUISettings()): init'ed(new Apple(getApple#1).__Tag)
    //#post(void initUISettings()): init'ed(new Apple(getApple#1).addresses)
    //#post(void initUISettings()): new Apple(getApple#1).clientOpened == 0
    //#post(void initUISettings()): init'ed(new Apple(getApple#1).isListener)
    //#post(void initUISettings()): init'ed(new Apple(getApple#1).menuBar)
    //#post(void initUISettings()): new ArrayList(Apple#1) num objects <= 1
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager:getSystemLookAndFeelClassName
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager:getInstalledLookAndFeels
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getName
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getClassName
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.System:loadLibrary
    //#unanalyzed(void initUISettings()): Effects-of-calling:registerOpenURLCallback
    //#unanalyzed(void initUISettings()): Effects-of-calling:com.dmdirc.actions.ActionManager:addListener
    //#unanalyzed(void initUISettings()): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void initUISettings()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void initUISettings()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.System:setProperty
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Class:getMethod
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.reflect.Method:invoke
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Class:getClassLoader
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.reflect.Proxy:newProxyInstance
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager:setLookAndFeel
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.UIManager:put
    //#unanalyzed(void initUISettings()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void initUISettings()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getPanelInsets
    //#unanalyzed(void initUISettings()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void initUISettings()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:setDefaultRowAlignmentBaseline
    //#unanalyzed(void initUISettings()): Effects-of-calling:java.lang.UnsupportedOperationException
    //#test_vector(void initUISettings()): java.lang.String:equals(...)@416: {0}, {1}
    //#test_vector(void initUISettings()): javax.swing.UIManager:getFont(...)@387: Inverse{null}, Addr_Set{null}
    //#test_vector(void initUISettings()): javax.swing.UIManager:getFont(...)@390: Inverse{null}, Addr_Set{null}
                getOptionBool("ui", "antialias");
        System.setProperty("awt.useSystemAAFontSettings",
                Boolean.toString(aaSetting));
        System.setProperty("swing.aatext", Boolean.toString(aaSetting));

        // This will do nothing on non OS X Systems
        if (Apple.isApple()) {
            final Apple apple = Apple.getApple();

            apple.setUISettings();
            apple.setListener();
        }

        final Font defaultFont = new Font(Font.DIALOG, Font.TRUETYPE_FONT,
                12);
        if (UIManager.getFont("TextField.font") == null) {
            UIManager.put("TextField.font", defaultFont);
        }
        if (UIManager.getFont("TextPane.font") == null) {
            UIManager.put("TextPane.font", defaultFont);
        }

        UIManager.put("Tree.collapsedIcon",
    //#SwingController.java:394: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#SwingController.java:394: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                IconManager.getIconManager().getIcon("nothing"));
        UIManager.put("Tree.expandedIcon",
    //#SwingController.java:396: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#SwingController.java:396: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
                IconManager.getIconManager().getIcon("nothing"));

        try {
            UIUtilities.initUISettings();
            UIManager.setLookAndFeel(UIUtilities.getLookAndFeel(IdentityManager.
    //#SwingController.java:401: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#SwingController.java:401: 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.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
                    getGlobalConfig().getOption("ui", "lookandfeel")));

        } catch (UnsupportedOperationException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to set UI Settings");
    //#SwingController.java:405: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to set UI Settings");
    //#SwingController.java:407: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        } catch (IllegalAccessException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to set UI Settings");
    //#SwingController.java:409: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        } catch (InstantiationException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to set UI Settings");
    //#SwingController.java:411: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        } catch (ClassNotFoundException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to set UI Settings");
    //#SwingController.java:413: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        }

        if ("Metal".equals(UIManager.getLookAndFeel().getName())) {
            PlatformDefaults.setPlatform(PlatformDefaults.WINDOWS_XP);
    //#SwingController.java:417: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.layout.PlatformDefaults:setPlatform(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void initUISettings()
    //#    unanalyzed callee: void net.miginfocom.layout.PlatformDefaults:setPlatform(int)
        }
        
        //Toolkit.getDefaultToolkit().getSystemEventQueue().
        //        push(new TracingEventQueue());
    }
    //#SwingController.java:422: end of method: void com.dmdirc.addons.ui_swing.SwingController.initUISettings()

    /** {@inheritDoc} */
    @Override
    public Window getActiveWindow() {
        return me.getActiveFrame();
    //#SwingController.java:427: method: Window com.dmdirc.addons.ui_swing.SwingController.getActiveWindow()
    //#input(Window getActiveWindow()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(Window getActiveWindow()): this
    //#input(Window getActiveWindow()): this.me
    //#output(Window getActiveWindow()): return_value
    //#pre[2] (Window getActiveWindow()): this.me != null
    //#post(Window getActiveWindow()): init'ed(return_value)
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(Window getActiveWindow()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#SwingController.java:427: end of method: Window com.dmdirc.addons.ui_swing.SwingController.getActiveWindow()
    }

    /** {@inheritDoc} */
    @Override
    public Server getActiveServer() {
        if (!mainFrameCreated.get()) {
    //#SwingController.java:433: method: Server com.dmdirc.addons.ui_swing.SwingController.getActiveServer()
    //#input(Server getActiveServer()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(Server getActiveServer()): this
    //#input(Server getActiveServer()): this.mainFrameCreated
    //#input(Server getActiveServer()): this.me
    //#output(Server getActiveServer()): return_value
    //#pre[2] (Server getActiveServer()): this.mainFrameCreated != null
    //#pre[3] (Server getActiveServer()): (soft) this.me != null
    //#presumption(Server getActiveServer()): com.dmdirc.ui.interfaces.Window:getContainer(...)@440 != null
    //#presumption(Server getActiveServer()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#post(Server getActiveServer()): init'ed(return_value)
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:getActiveFrame
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(Server getActiveServer()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#test_vector(Server getActiveServer()): com.dmdirc.util.ReturnableThread:getObject(...)@203: Inverse{null}, Addr_Set{null}
    //#test_vector(Server getActiveServer()): java.util.concurrent.atomic.AtomicBoolean:get(...)@433: {1}, {0}
            return null;
        }

        if (getActiveWindow() == null) {
            return null;
        } else {
            return getActiveWindow().getContainer().getServer();
    //#SwingController.java:440: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: Server getActiveServer()
    //#    unanalyzed callee: FrameContainer com.dmdirc.ui.interfaces.Window:getContainer()
    //#SwingController.java:440: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.FrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: Server getActiveServer()
    //#    unanalyzed callee: Server com.dmdirc.FrameContainer:getServer()
    //#SwingController.java:440: end of method: Server com.dmdirc.addons.ui_swing.SwingController.getActiveServer()
        }

    }

    /** {@inheritDoc} */
    @Override
    public void showURLDialog(final URI url) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:448: method: void com.dmdirc.addons.ui_swing.SwingController$14.com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): this.val$url
    //#post(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): this.val$url == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)): init'ed(this.val$url)
    //#SwingController.java:448: end of method: void com.dmdirc.addons.ui_swing.SwingController$14.com.dmdirc.addons.ui_swing.SwingController$14(SwingController, URI)
    //#SwingController.java:448: method: void com.dmdirc.addons.ui_swing.SwingController.showURLDialog(URI)
    //#input(void showURLDialog(URI)): this
    //#input(void showURLDialog(URI)): url
    //#unanalyzed(void showURLDialog(URI)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showURLDialog(URI)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showURLDialog(URI)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                URLDialog.showURLDialog(url, me);
    //#SwingController.java:453: method: void com.dmdirc.addons.ui_swing.SwingController$14.run()
    //#SwingController.java:453: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.url.URLDialog:showURLDialog(URI, Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$14
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.url.URLDialog:showURLDialog(URI, Window)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$url
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)

            }
    //#SwingController.java:455: end of method: void com.dmdirc.addons.ui_swing.SwingController$14.run()
        });
    }
    //#SwingController.java:457: end of method: void com.dmdirc.addons.ui_swing.SwingController.showURLDialog(URI)

    /** {@inheritDoc} */
    @Override
    public void showSSLCertificateDialog(final SSLCertificateDialogModel model) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:462: method: void com.dmdirc.addons.ui_swing.SwingController$15.com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): this.val$model
    //#post(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): this.val$model == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)): init'ed(this.val$model)
    //#SwingController.java:462: end of method: void com.dmdirc.addons.ui_swing.SwingController$15.com.dmdirc.addons.ui_swing.SwingController$15(SwingController, SSLCertificateDialogModel)
    //#SwingController.java:462: method: void com.dmdirc.addons.ui_swing.SwingController.showSSLCertificateDialog(SSLCertificateDialogModel)
    //#input(void showSSLCertificateDialog(SSLCertificateDialogModel)): model
    //#input(void showSSLCertificateDialog(SSLCertificateDialogModel)): this
    //#unanalyzed(void showSSLCertificateDialog(SSLCertificateDialogModel)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showSSLCertificateDialog(SSLCertificateDialogModel)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showSSLCertificateDialog(SSLCertificateDialogModel)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                new SSLCertificateDialog(me, model).setVisible(true);
    //#SwingController.java:467: method: void com.dmdirc.addons.ui_swing.SwingController$15.run()
    //#SwingController.java:467: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog(Window, SSLCertificateDialogModel)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$15
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog(Window, SSLCertificateDialogModel)
    //#SwingController.java:467: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$15
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog:setVisible(bool)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.me
    //#input(void run()): this.val$model
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): init'ed(this.me)
            }
    //#SwingController.java:468: end of method: void com.dmdirc.addons.ui_swing.SwingController$15.run()
        });
    }
    //#SwingController.java:470: end of method: void com.dmdirc.addons.ui_swing.SwingController.showSSLCertificateDialog(SSLCertificateDialogModel)

    /** {@inheritDoc} */
    @Override
    public void showFeedbackNag() {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:475: method: void com.dmdirc.addons.ui_swing.SwingController$16.com.dmdirc.addons.ui_swing.SwingController$16(SwingController)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$16(SwingController)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$16(SwingController)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$16(SwingController)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.SwingController$16(SwingController)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$16(SwingController)): init'ed(this.this$0)
    //#SwingController.java:475: end of method: void com.dmdirc.addons.ui_swing.SwingController$16.com.dmdirc.addons.ui_swing.SwingController$16(SwingController)
    //#SwingController.java:475: method: void com.dmdirc.addons.ui_swing.SwingController.showFeedbackNag()
    //#input(void showFeedbackNag()): this
    //#unanalyzed(void showFeedbackNag()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showFeedbackNag()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showFeedbackNag()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                new FeedbackNag(SwingController.this);
    //#SwingController.java:480: method: void com.dmdirc.addons.ui_swing.SwingController$16.run()
    //#SwingController.java:480: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag(SwingController)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$16
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag(SwingController)
    //#input(void run()): this
    //#input(void run()): this.this$0
            }
    //#SwingController.java:481: end of method: void com.dmdirc.addons.ui_swing.SwingController$16.run()
        });
    }
    //#SwingController.java:483: end of method: void com.dmdirc.addons.ui_swing.SwingController.showFeedbackNag()

    /** {@inheritDoc} */
    @Override
    public void showMessageDialog(final String title, final String message) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingController.java:488: method: void com.dmdirc.addons.ui_swing.SwingController$17.com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): Param_3
    //#input(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.val$message
    //#output(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.val$title
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.val$message == Param_2
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): init'ed(this.val$message)
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): this.val$title == Param_3
    //#post(void com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)): init'ed(this.val$title)
    //#SwingController.java:488: end of method: void com.dmdirc.addons.ui_swing.SwingController$17.com.dmdirc.addons.ui_swing.SwingController$17(SwingController, String, String)
    //#SwingController.java:488: method: void com.dmdirc.addons.ui_swing.SwingController.showMessageDialog(String, String)
    //#input(void showMessageDialog(String, String)): message
    //#input(void showMessageDialog(String, String)): this
    //#input(void showMessageDialog(String, String)): title
    //#unanalyzed(void showMessageDialog(String, String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void showMessageDialog(String, String)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void showMessageDialog(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                JOptionPane.showMessageDialog(null, message, title,
    //#SwingController.java:493: method: void com.dmdirc.addons.ui_swing.SwingController$17.run()
    //#input(void run()): this
    //#input(void run()): this.val$message
    //#input(void run()): this.val$title
                        JOptionPane.PLAIN_MESSAGE);
            }
    //#SwingController.java:495: end of method: void com.dmdirc.addons.ui_swing.SwingController$17.run()
        });
    }
    //#SwingController.java:497: end of method: void com.dmdirc.addons.ui_swing.SwingController.showMessageDialog(String, String)

    /**
     * Shows the error dialog.
     */
    public void showErrorDialog() {
        errorDialog.display();
    //#SwingController.java:503: method: void com.dmdirc.addons.ui_swing.SwingController.showErrorDialog()
    //#SwingController.java:503: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:display()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void showErrorDialog()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:display()
    //#input(void showErrorDialog()): this
    //#input(void showErrorDialog()): this.errorDialog
    //#pre[2] (void showErrorDialog()): this.errorDialog != null
    }
    //#SwingController.java:504: end of method: void com.dmdirc.addons.ui_swing.SwingController.showErrorDialog()

    /** {@inheritDoc} */
    @Override
    public String getUserInput(final String prompt) {
        return JOptionPane.showInputDialog(prompt);
    //#SwingController.java:509: method: String com.dmdirc.addons.ui_swing.SwingController.getUserInput(String)
    //#input(String getUserInput(String)): prompt
    //#output(String getUserInput(String)): return_value
    //#post(String getUserInput(String)): init'ed(return_value)
    //#SwingController.java:509: end of method: String com.dmdirc.addons.ui_swing.SwingController.getUserInput(String)
    }

    /** {@inheritDoc} */
    @Override
    public PreferencesInterface getPluginPrefsPanel() {
        return new PluginPanel();
    //#SwingController.java:515: method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getPluginPrefsPanel()
    //#SwingController.java:515: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.pluginpanel.PluginPanel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: PreferencesInterface getPluginPrefsPanel()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.pluginpanel.PluginPanel()
    //#output(PreferencesInterface getPluginPrefsPanel()): new PluginPanel(getPluginPrefsPanel#1) num objects
    //#output(PreferencesInterface getPluginPrefsPanel()): return_value
    //#new obj(PreferencesInterface getPluginPrefsPanel()): new PluginPanel(getPluginPrefsPanel#1)
    //#post(PreferencesInterface getPluginPrefsPanel()): return_value == &new PluginPanel(getPluginPrefsPanel#1)
    //#post(PreferencesInterface getPluginPrefsPanel()): new PluginPanel(getPluginPrefsPanel#1) num objects == 1
    //#SwingController.java:515: end of method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getPluginPrefsPanel()
    }

    /** {@inheritDoc} */
    @Override
    public PreferencesInterface getUpdatesPrefsPanel() {
        return new UpdateConfigPanel();
    //#SwingController.java:521: method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getUpdatesPrefsPanel()
    //#SwingController.java:521: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: PreferencesInterface getUpdatesPrefsPanel()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()
    //#output(PreferencesInterface getUpdatesPrefsPanel()): new UpdateConfigPanel(getUpdatesPrefsPanel#1) num objects
    //#output(PreferencesInterface getUpdatesPrefsPanel()): return_value
    //#new obj(PreferencesInterface getUpdatesPrefsPanel()): new UpdateConfigPanel(getUpdatesPrefsPanel#1)
    //#post(PreferencesInterface getUpdatesPrefsPanel()): return_value == &new UpdateConfigPanel(getUpdatesPrefsPanel#1)
    //#post(PreferencesInterface getUpdatesPrefsPanel()): new UpdateConfigPanel(getUpdatesPrefsPanel#1) num objects == 1
    //#SwingController.java:521: end of method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getUpdatesPrefsPanel()
    }

    /** {@inheritDoc} */
    @Override
    public PreferencesInterface getUrlHandlersPrefsPanel() {
        return new URLConfigPanel(me);
    //#SwingController.java:527: method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getUrlHandlersPrefsPanel()
    //#SwingController.java:527: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.URLConfigPanel(Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: PreferencesInterface getUrlHandlersPrefsPanel()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLConfigPanel(Window)
    //#input(PreferencesInterface getUrlHandlersPrefsPanel()): this
    //#input(PreferencesInterface getUrlHandlersPrefsPanel()): this.me
    //#output(PreferencesInterface getUrlHandlersPrefsPanel()): new URLConfigPanel(getUrlHandlersPrefsPanel#1) num objects
    //#output(PreferencesInterface getUrlHandlersPrefsPanel()): return_value
    //#new obj(PreferencesInterface getUrlHandlersPrefsPanel()): new URLConfigPanel(getUrlHandlersPrefsPanel#1)
    //#pre[2] (PreferencesInterface getUrlHandlersPrefsPanel()): init'ed(this.me)
    //#post(PreferencesInterface getUrlHandlersPrefsPanel()): return_value == &new URLConfigPanel(getUrlHandlersPrefsPanel#1)
    //#post(PreferencesInterface getUrlHandlersPrefsPanel()): new URLConfigPanel(getUrlHandlersPrefsPanel#1) num objects == 1
    //#SwingController.java:527: end of method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getUrlHandlersPrefsPanel()
    }

    /** {@inheritDoc} */
    @Override
    public PreferencesInterface getThemesPrefsPanel() {
        return new ThemePanel();
    //#SwingController.java:533: method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getThemesPrefsPanel()
    //#SwingController.java:533: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.themepanel.ThemePanel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: PreferencesInterface getThemesPrefsPanel()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.themepanel.ThemePanel()
    //#output(PreferencesInterface getThemesPrefsPanel()): new ThemePanel(getThemesPrefsPanel#1) num objects
    //#output(PreferencesInterface getThemesPrefsPanel()): return_value
    //#new obj(PreferencesInterface getThemesPrefsPanel()): new ThemePanel(getThemesPrefsPanel#1)
    //#post(PreferencesInterface getThemesPrefsPanel()): return_value == &new ThemePanel(getThemesPrefsPanel#1)
    //#post(PreferencesInterface getThemesPrefsPanel()): new ThemePanel(getThemesPrefsPanel#1) num objects == 1
    //#SwingController.java:533: end of method: PreferencesInterface com.dmdirc.addons.ui_swing.SwingController.getThemesPrefsPanel()
    }

    /**
     * Returns the current look and feel.
     * 
     * @return Current look and feel
     */
    public static String getLookAndFeel() {
        return UIManager.getLookAndFeel().getName();
    //#SwingController.java:542: method: String com.dmdirc.addons.ui_swing.SwingController.getLookAndFeel()
    //#output(String getLookAndFeel()): return_value
    //#presumption(String getLookAndFeel()): javax.swing.UIManager:getLookAndFeel(...)@542 != null
    //#post(String getLookAndFeel()): init'ed(return_value)
    //#SwingController.java:542: end of method: String com.dmdirc.addons.ui_swing.SwingController.getLookAndFeel()
    }

    /** {@inheritDoc} */
    @Override
    public void onLoad() {
        if (GraphicsEnvironment.isHeadless()) {
    //#SwingController.java:548: method: void com.dmdirc.addons.ui_swing.SwingController.onLoad()
    //#input(void onLoad()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void onLoad()): this
    //#input(void onLoad()): this.mainFrameCreated
    //#pre[2] (void onLoad()): this.mainFrameCreated != null
    //#presumption(void onLoad()): java.awt.GraphicsEnvironment:isHeadless(...)@548 == 0
    //#presumption(void onLoad()): java.awt.Toolkit:getDefaultToolkit(...)@553 != null
    //#presumption(void onLoad()): java.awt.Toolkit:getSystemEventQueue(...)@553 != null
    //#presumption(void onLoad()): java.util.concurrent.atomic.AtomicBoolean:get(...)@569 == 1
    //#unanalyzed(void onLoad()): Effects-of-calling:java.awt.EventQueue
    //#unanalyzed(void onLoad()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void onLoad()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void onLoad()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void onLoad()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void onLoad()): Effects-of-calling:java.lang.Runnable:run
            throw new IllegalStateException(
                    "Swing UI can't be run in a headless environment");
        }

        Toolkit.getDefaultToolkit().getSystemEventQueue().
                push(new DMDircEventQueue(this));
        
        UIUtilities.invokeAndWait(new Runnable() {
    //#SwingController.java:556: method: void com.dmdirc.addons.ui_swing.SwingController$18.com.dmdirc.addons.ui_swing.SwingController$18(SwingController)
    //#input(void com.dmdirc.addons.ui_swing.SwingController$18(SwingController)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.SwingController$18(SwingController)): this
    //#output(void com.dmdirc.addons.ui_swing.SwingController$18(SwingController)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.SwingController$18(SwingController)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.SwingController$18(SwingController)): init'ed(this.this$0)
    //#SwingController.java:556: end of method: void com.dmdirc.addons.ui_swing.SwingController$18.com.dmdirc.addons.ui_swing.SwingController$18(SwingController)

            /** {@inheritDoc} */
            @Override
            public void run() {
                initUISettings();
    //#SwingController.java:561: method: void com.dmdirc.addons.ui_swing.SwingController$18.run()
    //#input(void run()): " - "._tainted
    //#input(void run()): "DMDirc "._tainted
    //#input(void run()): "DMDirc"._tainted
    //#input(void run()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.actions.CoreActionType.CLIENT_OPENED
    //#input(void run()): com/dmdirc/addons/ui_swing/Apple.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void run()): com/dmdirc/addons/ui_swing/Apple.java.lang.Boolean.TRUE
    //#input(void run()): com/dmdirc/addons/ui_swing/Apple.java.lang.Boolean.TYPE
    //#input(void run()): com/dmdirc/addons/ui_swing/Apple.me
    //#input(void run()): com/dmdirc/addons/ui_swing/SwingController.com.dmdirc.logger.ErrorLevel.LOW
    //#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.mainFrameCreated
    //#input(void run()): this.this$0.me.statusBar
    //#output(void run()): com/dmdirc/addons/ui_swing/Apple.application
    //#output(void run()): com/dmdirc/addons/ui_swing/Apple.me
    //#output(void run()): com/dmdirc/addons/ui_swing/Apple.me.isListener
    //#output(void run()): new Apple(getApple#1) num objects
    //#output(void run()): new Apple(getApple#1).__Tag
    //#output(void run()): new Apple(getApple#1).addresses
    //#output(void run()): new Apple(getApple#1).clientOpened
    //#output(void run()): new Apple(getApple#1).isListener
    //#output(void run()): new Apple(getApple#1).menuBar
    //#output(void run()): new ArrayList(Apple#1) num objects
    //#output(void run()): new ErrorListDialog(run#2) num objects
    //#output(void run()): new ImageIcon(MainFrame#1) num objects
    //#output(void run()): new MainFrame(run#1) num objects
    //#output(void run()): this.this$0.me.__Tag
    //#output(void run()): this.this$0.me.controller
    //#output(void run()): this.this$0.me.exitCode
    //#output(void run()): this.this$0.me.imageIcon
    //#output(void run()): this.this$0.me.showVersion
    //#output(void run()): this.this$0.me.statusBar
    //#output(void run()): this.this$0.errorDialog
    //#output(void run()): this.this$0.me
    //#output(void run()): this.this$0.statusBar
    //#new obj(void run()): new Apple(getApple#1)
    //#new obj(void run()): new ArrayList(Apple#1)
    //#new obj(void run()): new ErrorListDialog(run#2)
    //#new obj(void run()): new ImageIcon(MainFrame#1)
    //#new obj(void run()): new MainFrame(run#1)
    //#pre[5] (void run()): this.this$0 != null
    //#pre[6] (void run()): this.mainFrameCreated != null
    //#pre[2] (void run()): (soft) init'ed(com/dmdirc/addons/ui_swing/Apple.me)
    //#post(void run()): possibly_updated(com/dmdirc/addons/ui_swing/Apple.application)
    //#post(void run()): com/dmdirc/addons/ui_swing/Apple.me == One-of{old com/dmdirc/addons/ui_swing/Apple.me, &new Apple(getApple#1)}
    //#post(void run()): init'ed(com/dmdirc/addons/ui_swing/Apple.me)
    //#post(void run()): init'ed(com/dmdirc/addons/ui_swing/Apple.me.isListener)
    //#post(void run()): this.this$0.errorDialog == &new ErrorListDialog(run#2)
    //#post(void run()): this.this$0.me == &new MainFrame(run#1)
    //#post(void run()): init'ed(this.statusBar)
    //#post(void run()): new Apple(getApple#1) num objects <= 1
    //#post(void run()): new ArrayList(Apple#1) num objects == new Apple(getApple#1) num objects
    //#post(void run()): init'ed(new Apple(getApple#1).__Tag)
    //#post(void run()): init'ed(new Apple(getApple#1).addresses)
    //#post(void run()): new Apple(getApple#1).clientOpened == 0
    //#post(void run()): init'ed(new Apple(getApple#1).isListener)
    //#post(void run()): init'ed(new Apple(getApple#1).menuBar)
    //#post(void run()): new ErrorListDialog(run#2) num objects == 1
    //#post(void run()): new ImageIcon(MainFrame#1) num objects == 1
    //#post(void run()): new MainFrame(run#1) num objects == 1
    //#post(void run()): this.this$0.me.__Tag == com/dmdirc/addons/ui_swing/MainFrame
    //#post(void run()): this.me.controller == this.this$0
    //#post(void run()): this.this$0.me.controller != null
    //#post(void run()): init'ed(this.me.exitCode)
    //#post(void run()): this.this$0.me.imageIcon == &new ImageIcon(MainFrame#1)
    //#post(void run()): init'ed(this.me.showVersion)
    //#post(void run()): init'ed(this.me.statusBar)
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void run()): Effects-of-calling:getLookAndFeel
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:setLookAndFeel
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Boolean:toString
    //#unanalyzed(void run()): Effects-of-calling:java.lang.System:setProperty
    //#unanalyzed(void run()): Effects-of-calling:isApple
    //#unanalyzed(void run()): Effects-of-calling:getApple
    //#unanalyzed(void run()): Effects-of-calling:setUISettings
    //#unanalyzed(void run()): Effects-of-calling:setListener
    //#unanalyzed(void run()): Effects-of-calling:java.awt.Font
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:put
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void run()): Effects-of-calling:initUISettings
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.LookAndFeel:getName
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:setPlatform
    //#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:java.lang.StringBuilder
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void run()): Effects-of-calling: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
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.interfaces.Window:isMaximum
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JFrame:setTitle
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JFrame
    //#unanalyzed(void run()): Effects-of-calling:initComponents
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.IconManager:getImage
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.ImageIcon:getImage
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame:setIconImage
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.ui.CoreUIUtils:centreWindow
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame:setVisible
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame:addWindowListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.MainFrame:addWindowFocusListener
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:getSystemLookAndFeelClassName
    //#unanalyzed(void run()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager:getInstalledLookAndFeels
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getName
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.UIManager$LookAndFeelInfo:getClassName
    //#unanalyzed(void run()): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void run()): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void run()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void run()): Effects-of-calling:java.lang.System:loadLibrary
    //#unanalyzed(void run()): Effects-of-calling:registerOpenURLCallback
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.actions.ActionManager:addListener
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Class:getMethod
    //#unanalyzed(void run()): Effects-of-calling:java.lang.reflect.Method:invoke
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Class:getClassLoader
    //#unanalyzed(void run()): Effects-of-calling:java.lang.reflect.Proxy:newProxyInstance
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getPanelInsets
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void run()): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:setDefaultRowAlignmentBaseline
    //#unanalyzed(void run()): Effects-of-calling:java.lang.UnsupportedOperationException
                me = new MainFrame(SwingController.this);
                mainFrameCreated.set(true);
                statusBar = me.getStatusBar();
                errorDialog = new ErrorListDialog(me);
    //#SwingController.java:565: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController$18
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
            }
    //#SwingController.java:566: end of method: void com.dmdirc.addons.ui_swing.SwingController$18.run()
        });

        if (!mainFrameCreated.get()) {
            throw new IllegalStateException(
                    "Main frame not created. Unable to continue.");
        }

        Main.setUI(this);
    //#SwingController.java:574: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Main:setUI(UIController)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.SwingController
    //#    method: void onLoad()
    //#    unanalyzed callee: void com.dmdirc.Main:setUI(UIController)
    }
    //#SwingController.java:575: end of method: void com.dmdirc.addons.ui_swing.SwingController.onLoad()

    /** {@inheritDoc} */
    @Override
    public void onUnload() {
        // Do nothing
    }
    //#SwingController.java:581: method: void com.dmdirc.addons.ui_swing.SwingController.onUnload()
    //#SwingController.java:581: end of method: void com.dmdirc.addons.ui_swing.SwingController.onUnload()

    /**
     * Adds a top level window to the window list.
     * 
     * @param source New window
     */
    protected void addTopLevelWindow(final java.awt.Window source) {
        synchronized (windows) {
    //#SwingController.java:589: method: void com.dmdirc.addons.ui_swing.SwingController.addTopLevelWindow(Window)
    //#input(void addTopLevelWindow(Window)): source
    //#input(void addTopLevelWindow(Window)): this
    //#input(void addTopLevelWindow(Window)): this.windows
    //#input(void addTopLevelWindow(Window)): this.windows.__Lock
    //#pre[3] (void addTopLevelWindow(Window)): this.windows != null
            windows.add(source);
        }
    }
    //#SwingController.java:592: end of method: void com.dmdirc.addons.ui_swing.SwingController.addTopLevelWindow(Window)

    /**
     * Deletes a top level window to the window list.
     * 
     * @param source Old window
     */
    protected void delTopLevelWindow(final java.awt.Window source) {
        synchronized (windows) {
    //#SwingController.java:600: method: void com.dmdirc.addons.ui_swing.SwingController.delTopLevelWindow(Window)
    //#input(void delTopLevelWindow(Window)): source
    //#input(void delTopLevelWindow(Window)): this
    //#input(void delTopLevelWindow(Window)): this.windows
    //#input(void delTopLevelWindow(Window)): this.windows.__Lock
    //#pre[3] (void delTopLevelWindow(Window)): this.windows != null
            windows.remove(source);
        }
    }
    //#SwingController.java:603: end of method: void com.dmdirc.addons.ui_swing.SwingController.delTopLevelWindow(Window)

    /**
     * Returns a list of top level windows.
     *
     * @return Top level window list
     */
    public List<java.awt.Window> getTopLevelWindows() {
        synchronized (windows) {
    //#SwingController.java:611: method: List com.dmdirc.addons.ui_swing.SwingController.getTopLevelWindows()
    //#input(List getTopLevelWindows()): this
    //#input(List getTopLevelWindows()): this.windows
    //#input(List getTopLevelWindows()): this.windows.__Lock
    //#output(List getTopLevelWindows()): return_value
    //#post(List getTopLevelWindows()): return_value == this.windows
    //#post(List getTopLevelWindows()): init'ed(return_value)
            return windows;
        }
    //#SwingController.java:613: end of method: List com.dmdirc.addons.ui_swing.SwingController.getTopLevelWindows()
    }
}
    //#output(com.dmdirc.addons.ui_swing.SwingController$18__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$18]
    //#output(com.dmdirc.addons.ui_swing.SwingController$18__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$18__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$18] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$18__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$18.com.dmdirc.addons.ui_swing.SwingController$18__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$18
    //#output(com.dmdirc.addons.ui_swing.SwingController$17__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$17]
    //#output(com.dmdirc.addons.ui_swing.SwingController$17__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$17__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$17] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$17__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$17.com.dmdirc.addons.ui_swing.SwingController$17__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$17
    //#output(com.dmdirc.addons.ui_swing.SwingController$16__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$16]
    //#output(com.dmdirc.addons.ui_swing.SwingController$16__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$16__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$16] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$16__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$16.com.dmdirc.addons.ui_swing.SwingController$16__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$16
    //#output(com.dmdirc.addons.ui_swing.SwingController$15__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$15]
    //#output(com.dmdirc.addons.ui_swing.SwingController$15__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$15__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$15] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$15__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$15.com.dmdirc.addons.ui_swing.SwingController$15__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$15
    //#output(com.dmdirc.addons.ui_swing.SwingController$14__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$14]
    //#output(com.dmdirc.addons.ui_swing.SwingController$14__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$14__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$14] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$14__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$14.com.dmdirc.addons.ui_swing.SwingController$14__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$14
    //#output(com.dmdirc.addons.ui_swing.SwingController$13__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$13]
    //#output(com.dmdirc.addons.ui_swing.SwingController$13__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$13__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$13] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$13__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$13.com.dmdirc.addons.ui_swing.SwingController$13__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$13
    //#output(com.dmdirc.addons.ui_swing.SwingController$12__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$12]
    //#output(com.dmdirc.addons.ui_swing.SwingController$12__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$12__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$12] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$12__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$12.com.dmdirc.addons.ui_swing.SwingController$12__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$12
    //#output(com.dmdirc.addons.ui_swing.SwingController$11__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$11]
    //#output(com.dmdirc.addons.ui_swing.SwingController$11__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$11__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$11] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$11__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$11.com.dmdirc.addons.ui_swing.SwingController$11__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$11
    //#output(com.dmdirc.addons.ui_swing.SwingController$10__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$10]
    //#output(com.dmdirc.addons.ui_swing.SwingController$10__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$10__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$10] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$10__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$10.com.dmdirc.addons.ui_swing.SwingController$10__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$10
    //#output(com.dmdirc.addons.ui_swing.SwingController$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$9]
    //#output(com.dmdirc.addons.ui_swing.SwingController$9__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$9] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$9__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$9.com.dmdirc.addons.ui_swing.SwingController$9__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$9
    //#output(com.dmdirc.addons.ui_swing.SwingController$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$8]
    //#output(com.dmdirc.addons.ui_swing.SwingController$8__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$8] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$8__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$8.com.dmdirc.addons.ui_swing.SwingController$8__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$8
    //#output(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$7$1]
    //#output(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Dispatch_Table.wizardCancelled()V
    //#output(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Dispatch_Table.wizardFinished()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$7$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Dispatch_Table.wizardCancelled()V == &wizardCancelled
    //#post(com.dmdirc.addons.ui_swing.SwingController$7$1__static_init): __Dispatch_Table.wizardFinished()V == &wizardFinished
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$7$1.com.dmdirc.addons.ui_swing.SwingController$7$1__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$7$1
    //#output(com.dmdirc.addons.ui_swing.SwingController$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$7]
    //#output(com.dmdirc.addons.ui_swing.SwingController$7__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$7] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$7__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$7.com.dmdirc.addons.ui_swing.SwingController$7__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$7
    //#output(com.dmdirc.addons.ui_swing.SwingController$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$6]
    //#output(com.dmdirc.addons.ui_swing.SwingController$6__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$6] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$6__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$6.com.dmdirc.addons.ui_swing.SwingController$6__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$6
    //#output(com.dmdirc.addons.ui_swing.SwingController$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$5]
    //#output(com.dmdirc.addons.ui_swing.SwingController$5__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$5__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$5.com.dmdirc.addons.ui_swing.SwingController$5__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$5
    //#output(com.dmdirc.addons.ui_swing.SwingController$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$4]
    //#output(com.dmdirc.addons.ui_swing.SwingController$4__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$4__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$4.com.dmdirc.addons.ui_swing.SwingController$4__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$4
    //#output(com.dmdirc.addons.ui_swing.SwingController$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$3]
    //#output(com.dmdirc.addons.ui_swing.SwingController$3__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$3__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$3.com.dmdirc.addons.ui_swing.SwingController$3__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$3
    //#output(com.dmdirc.addons.ui_swing.SwingController$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$2]
    //#output(com.dmdirc.addons.ui_swing.SwingController$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$2__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$2.com.dmdirc.addons.ui_swing.SwingController$2__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$2
    //#output(com.dmdirc.addons.ui_swing.SwingController$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$1]
    //#output(com.dmdirc.addons.ui_swing.SwingController$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.SwingController$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/SwingController$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.SwingController$1__static_init): __Dispatch_Table.run()V == &run
    //#SwingController.java:: end of method: com.dmdirc.addons.ui_swing.SwingController$1.com.dmdirc.addons.ui_swing.SwingController$1__static_init
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController$1
    //#SwingController.java:: end of class: com.dmdirc.addons.ui_swing.SwingController
