//# 0 errors, 497 messages
//#
/*
    //#SwingStatusBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2
    //#SwingStatusBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init
    //#SwingStatusBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#SwingStatusBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init
    //#SwingStatusBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#SwingStatusBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init
 * Copyright (c) 2006-2008 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.components.statusbar;

import com.dmdirc.addons.ui_swing.MainFrame;
import com.dmdirc.addons.ui_swing.SwingController;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.ui.interfaces.StatusBar;
import com.dmdirc.ui.interfaces.StatusBarComponent;
import com.dmdirc.ui.interfaces.StatusMessageNotifier;

import java.awt.Component;
import java.util.Arrays;

import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import net.miginfocom.swing.MigLayout;

/** Status bar, shows message and info on the gui. */
public final class SwingStatusBar extends JPanel implements StatusBar {
    //#SwingStatusBar.java:42: method: UpdaterLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$000(SwingStatusBar)
    //#input(UpdaterLabel access$000(SwingStatusBar)): x0
    //#input(UpdaterLabel access$000(SwingStatusBar)): x0.updateLabel
    //#output(UpdaterLabel access$000(SwingStatusBar)): return_value
    //#pre[1] (UpdaterLabel access$000(SwingStatusBar)): x0 != null
    //#post(UpdaterLabel access$000(SwingStatusBar)): return_value == x0.updateLabel
    //#post(UpdaterLabel access$000(SwingStatusBar)): init'ed(return_value)
    //#SwingStatusBar.java:42: end of method: UpdaterLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$000(SwingStatusBar)
    //#SwingStatusBar.java:42: method: ErrorPanel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$100(SwingStatusBar)
    //#input(ErrorPanel access$100(SwingStatusBar)): x0
    //#input(ErrorPanel access$100(SwingStatusBar)): x0.errorPanel
    //#output(ErrorPanel access$100(SwingStatusBar)): return_value
    //#pre[1] (ErrorPanel access$100(SwingStatusBar)): x0 != null
    //#post(ErrorPanel access$100(SwingStatusBar)): return_value == x0.errorPanel
    //#post(ErrorPanel access$100(SwingStatusBar)): init'ed(return_value)
    //#SwingStatusBar.java:42: end of method: ErrorPanel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$100(SwingStatusBar)
    //#SwingStatusBar.java:42: method: InviteLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$200(SwingStatusBar)
    //#input(InviteLabel access$200(SwingStatusBar)): x0
    //#input(InviteLabel access$200(SwingStatusBar)): x0.inviteLabel
    //#output(InviteLabel access$200(SwingStatusBar)): return_value
    //#pre[1] (InviteLabel access$200(SwingStatusBar)): x0 != null
    //#post(InviteLabel access$200(SwingStatusBar)): return_value == x0.inviteLabel
    //#post(InviteLabel access$200(SwingStatusBar)): init'ed(return_value)
    //#SwingStatusBar.java:42: end of method: InviteLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.access$200(SwingStatusBar)

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 5;
    /** message label. */
    private final MessageLabel messageLabel;
    /** error panel. */
    private final ErrorPanel errorPanel;
    /** update label. */
    private final UpdaterLabel updateLabel;
    /** Invite label. */
    private final InviteLabel inviteLabel;
    /** Swing controller. */
    private SwingController controller;
    /** Main frame. */
    private MainFrame mainFrame;

    /**
     * Creates a new instance of SwingStatusBar.
     * 
     * @param controller Swing controller
     * @param mainFrame Main frame
     */
    public SwingStatusBar(final SwingController controller, final MainFrame mainFrame) {
        super();
    //#SwingStatusBar.java:70: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): " ago"._tainted
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.DEFAULT_ICON
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.setVisible(Z)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.com.dmdirc.actions.CoreActionType.CLIENT_FRAME_CHANGED
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.com.dmdirc.actions.CoreActionType.SERVER_CONNECTED
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.com.dmdirc.actions.CoreActionType.SERVER_CONNECTERROR
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.com.dmdirc.actions.CoreActionType.SERVER_DISCONNECTED
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.setVisible(Z)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup]
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup]
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow]
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.setVisible(Z)V
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): controller
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): mainFrame
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new ErrorPanel(SwingStatusBar#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.controller
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.dismiss
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.errorManager
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.label
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.mainFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.menu
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.show
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.statusBar
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new InviteLabel(SwingStatusBar#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.__Lock
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.accept
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.activeFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.activeServer
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.dialog
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.dismiss
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.inviteList
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.label
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.mainFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.menu
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(ErrorPanel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(InviteLabel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(ErrorPanel#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(InviteLabel#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MapList(InviteLabel#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MessageLabel(SwingStatusBar#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.messageLabel.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new UpdaterLabel(SwingStatusBar#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel.mainFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.controller
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.mainFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.messageLabel
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new ErrorPanel(SwingStatusBar#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new InviteLabel(SwingStatusBar#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(ErrorPanel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(InviteLabel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#6)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(ErrorPanel#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(InviteLabel#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MapList(InviteLabel#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MessageLabel(SwingStatusBar#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new UpdaterLabel(SwingStatusBar#3)
    //#presumption(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@71 != null
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.controller == controller
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.controller)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.controller == this.controller
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel == &new ErrorPanel(SwingStatusBar#2)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel == &new InviteLabel(SwingStatusBar#4)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.mainFrame == mainFrame
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.mainFrame)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.mainFrame == this.mainFrame
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.mainFrame == this.mainFrame
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel.mainFrame == this.mainFrame
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.messageLabel == &new MessageLabel(SwingStatusBar#1)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel == &new UpdaterLabel(SwingStatusBar#3)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new ErrorPanel(SwingStatusBar#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new InviteLabel(SwingStatusBar#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(ErrorPanel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JLabel(InviteLabel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(ErrorPanel#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JMenuItem(InviteLabel#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(ErrorPanel#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new JPopupMenu(InviteLabel#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MapList(InviteLabel#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new MessageLabel(SwingStatusBar#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): new UpdaterLabel(SwingStatusBar#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.dismiss == &new JMenuItem(ErrorPanel#3)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.errorManager != null
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.label == &new JLabel(ErrorPanel#1)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.menu == &new JPopupMenu(ErrorPanel#2)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.show == &new JMenuItem(ErrorPanel#4)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.statusBar == this
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.errorPanel.statusBar != null
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.inviteLabel.__Lock)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.accept == &new JMenuItem(InviteLabel#6)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.inviteLabel.activeFrame)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.inviteLabel.activeServer)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): init'ed(this.inviteLabel.dialog)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.dismiss == &new JMenuItem(InviteLabel#4)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.inviteList == &new MapList(InviteLabel#2)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.label == &new JLabel(InviteLabel#1)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.inviteLabel.menu == &new JPopupMenu(InviteLabel#3)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): this.updateLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/UpdaterLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.MessageLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.BorderFactory:createEtchedBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.MessageLabel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.MessageLabel:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.UpdaterLabel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.UpdaterLabel:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.updater.UpdateChecker:addListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.UpdaterLabel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JMenuItem
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorCount
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:addErrorListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JMenuItem:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.FrameContainer:getServer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.util.MapList:containsKey
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.Server:getInvites
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.util.MapList:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.Server:addInviteListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.util.MapList:get
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.InviteLabel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:closeDialog
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:refreshDialog
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.InviteLabel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.ServerManager:getServerManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.ServerManager:getServers
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.actions.ActionManager:addListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.UIManager:getColor
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:setForeground
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:initContent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.Invite:getChannel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.Invite:getSource
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.Invite:getTimestamp
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrors
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ProgramError:getLevel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ProgramError:getReportStatus
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JLabel:getFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JLabel:setFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:values
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.util.MapList:values
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.util.Collection:size
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JSeparator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:values
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setUndecorated
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusableWindowState
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setResizable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:pack
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:getLocationOnScreen
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:getWidth
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getWidth
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getHeight
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.awt.Point:translate
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.awt.Window:getLocationOnScreen
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.Math:max
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.Math:min
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setLocation
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.border.EtchedBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:dispose
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeLater
        
        this.controller = controller;
        this.mainFrame = mainFrame;

        messageLabel = new MessageLabel();
        errorPanel = new ErrorPanel(controller, mainFrame, this);
        updateLabel = new UpdaterLabel(mainFrame);
        inviteLabel = new InviteLabel(mainFrame);

        setLayout(new MigLayout("fill, ins 0, hidemode 3"));
    //#SwingStatusBar.java:80: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#SwingStatusBar.java:80: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:setLayout(LayoutManager)

        add(messageLabel, "growx, pushx, sgy components, hmax 20, hmin 20");
    //#SwingStatusBar.java:82: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
        add(updateLabel, "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
    //#SwingStatusBar.java:83: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
        add(errorPanel, "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
    //#SwingStatusBar.java:84: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
        add(inviteLabel, "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
    //#SwingStatusBar.java:85: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    }
    //#SwingStatusBar.java:86: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar(SwingController, MainFrame)

    /** {@inheritDoc} */
    @Override
    public void setMessage(final String newMessage) {
        messageLabel.setMessage(newMessage);
    //#SwingStatusBar.java:91: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String)
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;)V
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String)): newMessage
    //#input(void setMessage(String)): this
    //#input(void setMessage(String)): this.messageLabel
    //#input(void setMessage(String)): this.messageLabel.__Tag
    //#pre[3] (void setMessage(String)): this.messageLabel != null
    //#pre[5] (void setMessage(String)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void setMessage(String)): Effects-of-calling:setMessage
    //#unanalyzed(void setMessage(String)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void setMessage(String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    }
    //#SwingStatusBar.java:92: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String)

    /** {@inheritDoc} */
    @Override
    public void setMessage(final String newMessage,
            final StatusMessageNotifier newNotifier) {
        messageLabel.setMessage(newMessage, newNotifier);
    //#SwingStatusBar.java:98: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, StatusMessageNotifier)
    //#input(void setMessage(String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, StatusMessageNotifier)): newMessage
    //#input(void setMessage(String, StatusMessageNotifier)): newNotifier
    //#input(void setMessage(String, StatusMessageNotifier)): this
    //#input(void setMessage(String, StatusMessageNotifier)): this.messageLabel
    //#input(void setMessage(String, StatusMessageNotifier)): this.messageLabel.__Tag
    //#pre[4] (void setMessage(String, StatusMessageNotifier)): this.messageLabel != null
    //#pre[6] (void setMessage(String, StatusMessageNotifier)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:setMessage
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void setMessage(String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    }
    //#SwingStatusBar.java:99: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, StatusMessageNotifier)

    /** {@inheritDoc} */
    @Override
    public void setMessage(final String iconType, final String newMessage) {
        messageLabel.setMessage(iconType, newMessage);
    //#SwingStatusBar.java:104: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String)
    //#input(void setMessage(String, String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String, String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String, String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;)V
    //#input(void setMessage(String, String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String, String)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, String)): iconType
    //#input(void setMessage(String, String)): newMessage
    //#input(void setMessage(String, String)): this
    //#input(void setMessage(String, String)): this.messageLabel
    //#input(void setMessage(String, String)): this.messageLabel.__Tag
    //#pre[4] (void setMessage(String, String)): this.messageLabel != null
    //#pre[6] (void setMessage(String, String)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:setMessage
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void setMessage(String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    }
    //#SwingStatusBar.java:105: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String)

    /** {@inheritDoc} */
    @Override
    public void setMessage(final String iconType, final String newMessage,
            final StatusMessageNotifier newNotifier) {
        messageLabel.setMessage(iconType, newMessage, newNotifier);
    //#SwingStatusBar.java:111: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String, StatusMessageNotifier)
    //#input(void setMessage(String, String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String, String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String, String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void setMessage(String, String, StatusMessageNotifier)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, String, StatusMessageNotifier)): iconType
    //#input(void setMessage(String, String, StatusMessageNotifier)): newMessage
    //#input(void setMessage(String, String, StatusMessageNotifier)): newNotifier
    //#input(void setMessage(String, String, StatusMessageNotifier)): this
    //#input(void setMessage(String, String, StatusMessageNotifier)): this.messageLabel
    //#input(void setMessage(String, String, StatusMessageNotifier)): this.messageLabel.__Tag
    //#pre[5] (void setMessage(String, String, StatusMessageNotifier)): this.messageLabel != null
    //#pre[7] (void setMessage(String, String, StatusMessageNotifier)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    }
    //#SwingStatusBar.java:112: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String, StatusMessageNotifier)

    /** {@inheritDoc} */
    @Override
    public void setMessage(final String newMessage,
            final StatusMessageNotifier newNotifier, final int timeout) {
        messageLabel.setMessage(newMessage, newNotifier, timeout);
    //#SwingStatusBar.java:118: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, StatusMessageNotifier, int)
    //#input(void setMessage(String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, StatusMessageNotifier, int)): newMessage
    //#input(void setMessage(String, StatusMessageNotifier, int)): newNotifier
    //#input(void setMessage(String, StatusMessageNotifier, int)): this
    //#input(void setMessage(String, StatusMessageNotifier, int)): this.messageLabel
    //#input(void setMessage(String, StatusMessageNotifier, int)): this.messageLabel.__Tag
    //#input(void setMessage(String, StatusMessageNotifier, int)): timeout
    //#pre[4] (void setMessage(String, StatusMessageNotifier, int)): this.messageLabel != null
    //#pre[6] (void setMessage(String, StatusMessageNotifier, int)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String, StatusMessageNotifier, int)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String, StatusMessageNotifier, int)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String, StatusMessageNotifier, int)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SwingStatusBar.java:119: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, StatusMessageNotifier, int)

    /** {@inheritDoc} */
    @Override
    public synchronized void setMessage(final String iconType, 
            final String newMessage,
            final StatusMessageNotifier newNotifier, final int timeout) {
        messageLabel.setMessage(iconType, newMessage, newNotifier, timeout);
    //#SwingStatusBar.java:126: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String, StatusMessageNotifier, int)
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): iconType
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): newMessage
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): newNotifier
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): this
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): this.messageLabel
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): this.messageLabel.__Tag
    //#input(void setMessage(String, String, StatusMessageNotifier, int)): timeout
    //#pre[6] (void setMessage(String, String, StatusMessageNotifier, int)): this.messageLabel != null
    //#pre[8] (void setMessage(String, String, StatusMessageNotifier, int)): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier, int)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier, int)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void setMessage(String, String, StatusMessageNotifier, int)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SwingStatusBar.java:127: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.setMessage(String, String, StatusMessageNotifier, int)

    /** {@inheritDoc} */
    @Override
    public void clearMessage() {
        messageLabel.clearMessage();
    //#SwingStatusBar.java:132: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.clearMessage()
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel]
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Descendant_Table[others]
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.clearMessage()V
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;)V
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#input(void clearMessage()): com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.__Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#input(void clearMessage()): this
    //#input(void clearMessage()): this.messageLabel
    //#input(void clearMessage()): this.messageLabel.__Tag
    //#output(void clearMessage()): this.messageLabel.messageNotifier
    //#pre[2] (void clearMessage()): this.messageLabel != null
    //#pre[4] (void clearMessage()): this.messageLabel.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel
    //#post(void clearMessage()): this.messageLabel.messageNotifier == null
    //#unanalyzed(void clearMessage()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void clearMessage()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void clearMessage()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void clearMessage()): Effects-of-calling:setMessage
    //#unanalyzed(void clearMessage()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void clearMessage()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    }
    //#SwingStatusBar.java:133: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.clearMessage()

    /** {@inheritDoc} */
    @Override
    public void addComponent(final StatusBarComponent component) {
        if (!(component instanceof Component)) {
    //#SwingStatusBar.java:138: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.addComponent(StatusBarComponent)
    //#input(void addComponent(StatusBarComponent)): com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void addComponent(StatusBarComponent)): component
    //#input(void addComponent(StatusBarComponent)): this
    //#presumption(void addComponent(StatusBarComponent)): init'ed(com.dmdirc.logger.ErrorLevel.HIGH)
    //#presumption(void addComponent(StatusBarComponent)): java.util.Arrays:asList(...)@144 != null
    //#test_vector(void addComponent(StatusBarComponent)): java.util.List:contains(...)@144: {1}, {0}
            Logger.appError(ErrorLevel.HIGH, "Error adding status bar component", 
    //#SwingStatusBar.java:139: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void addComponent(StatusBarComponent)
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
                    new IllegalArgumentException("Component must be an " +
                    "instance of java.awt.component"));
            return;
        }
        if (!Arrays.asList(getComponents()).contains(component)) {
    //#SwingStatusBar.java:144: Warning: method not available - call not analyzed
    //#    call on Component[] com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:getComponents()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void addComponent(StatusBarComponent)
    //#    unanalyzed callee: Component[] com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:getComponents()
            SwingUtilities.invokeLater(new Runnable() {
    //#SwingStatusBar.java:145: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): this
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): this.val$component
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): this.val$component == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)): init'ed(this.val$component)
    //#SwingStatusBar.java:145: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1(SwingStatusBar, StatusBarComponent)

                /** {@inheritDoc} */
                @Override
                public void run() {
                    remove(updateLabel);
    //#SwingStatusBar.java:150: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.run()
    //#SwingStatusBar.java:150: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.errorPanel
    //#input(void run()): this.this$0.inviteLabel
    //#input(void run()): this.this$0.updateLabel
    //#input(void run()): this.val$component
    //#pre[2] (void run()): this.this$0 != null
                    remove(errorPanel);
    //#SwingStatusBar.java:151: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
                    remove(inviteLabel);
    //#SwingStatusBar.java:152: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
                    add((Component) component,
    //#SwingStatusBar.java:153: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
                            "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
                    add(updateLabel,
    //#SwingStatusBar.java:155: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
                            "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
                    add(inviteLabel,
    //#SwingStatusBar.java:157: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
                            "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
                    add(errorPanel,
    //#SwingStatusBar.java:159: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:add(Component, Object)
                            "sgy components, hmax 20, hmin 20, wmin 20, shrink 0");
                    validate();
    //#SwingStatusBar.java:161: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:validate()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:validate()
                }
    //#SwingStatusBar.java:162: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.run()
            });
        }
    }
    //#SwingStatusBar.java:165: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.addComponent(StatusBarComponent)

    /** {@inheritDoc} */
    @Override
    public void removeComponent(final StatusBarComponent component) {
        if (!(component instanceof Component)) {
    //#SwingStatusBar.java:170: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.removeComponent(StatusBarComponent)
    //#input(void removeComponent(StatusBarComponent)): com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void removeComponent(StatusBarComponent)): component
    //#input(void removeComponent(StatusBarComponent)): this
    //#presumption(void removeComponent(StatusBarComponent)): init'ed(com.dmdirc.logger.ErrorLevel.HIGH)
            Logger.appError(ErrorLevel.HIGH, "Error adding status bar component", 
    //#SwingStatusBar.java:171: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
    //#    method: void removeComponent(StatusBarComponent)
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
                    new IllegalArgumentException("Component must be an " +
                    "instance of java.awt.component"));
            return;
        }
        SwingUtilities.invokeLater(new Runnable() {
    //#SwingStatusBar.java:176: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): this
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): this.val$component
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): this.val$component == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)): init'ed(this.val$component)
    //#SwingStatusBar.java:176: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2(SwingStatusBar, StatusBarComponent)

            /** {@inheritDoc} */
            @Override
            public void run() {
                remove((Component) component);
    //#SwingStatusBar.java:181: method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.run()
    //#SwingStatusBar.java:181: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:remove(Component)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.val$component
    //#pre[2] (void run()): this.this$0 != null
                validate();
    //#SwingStatusBar.java:182: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:validate()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:validate()
            }
    //#SwingStatusBar.java:183: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.run()
            });
    }
    //#SwingStatusBar.java:185: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.removeComponent(StatusBarComponent)

    /**
     * Returns the message label for this status bar. This is intended to be used
     * for advanced plugins that wish to do compliated things with messages.
     *
     * @return Message label component
     */
    public MessageLabel getMessageComponent() {
        return messageLabel;
    //#SwingStatusBar.java:194: method: MessageLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.getMessageComponent()
    //#input(MessageLabel getMessageComponent()): this
    //#input(MessageLabel getMessageComponent()): this.messageLabel
    //#output(MessageLabel getMessageComponent()): return_value
    //#post(MessageLabel getMessageComponent()): return_value == this.messageLabel
    //#post(MessageLabel getMessageComponent()): init'ed(return_value)
    //#SwingStatusBar.java:194: end of method: MessageLabel com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.getMessageComponent()
    }
}
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar$2]
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init): __Dispatch_Table.run()V == &run
    //#SwingStatusBar.java:: end of method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2__static_init
    //#SwingStatusBar.java:: end of class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$2
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar$1]
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init): __Dispatch_Table.run()V == &run
    //#SwingStatusBar.java:: end of method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1__static_init
    //#SwingStatusBar.java:: end of class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar$1
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar]
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.addComponent(Lcom/dmdirc/ui/interfaces/StatusBarComponent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.clearMessage()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.getMessageComponent()Lcom/dmdirc/addons/ui_swing/components/statusbar/MessageLabel;
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.removeComponent(Lcom/dmdirc/ui/interfaces/StatusBarComponent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/SwingStatusBar] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.addComponent(Lcom/dmdirc/ui/interfaces/StatusBarComponent;)V == &addComponent
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.clearMessage()V == &clearMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.getMessageComponent()Lcom/dmdirc/addons/ui_swing/components/statusbar/MessageLabel; == &getMessageComponent
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.removeComponent(Lcom/dmdirc/ui/interfaces/StatusBarComponent;)V == &removeComponent
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;)V == &setMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V == &setMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V == &setMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;)V == &setMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;)V == &setMessage
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init): __Dispatch_Table.setMessage(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/ui/interfaces/StatusMessageNotifier;I)V == &setMessage
    //#SwingStatusBar.java:: end of method: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar.com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar__static_init
    //#SwingStatusBar.java:: end of class: com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar
