//# 0 errors, 1,119 messages
//#
/*
    //#ChannelFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4
    //#ChannelFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init
    //#ChannelFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3
    //#ChannelFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init
    //#ChannelFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2
    //#ChannelFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init
    //#ChannelFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1
    //#ChannelFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init
    //#ChannelFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#ChannelFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init
 * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package com.dmdirc.addons.ui_swing.components.frames;

import com.dmdirc.addons.ui_swing.components.NicklistListModel;
import com.dmdirc.Channel;
import com.dmdirc.ServerState;
import com.dmdirc.actions.ActionManager;
import com.dmdirc.actions.CoreActionType;
import com.dmdirc.actions.interfaces.ActionType;
import com.dmdirc.addons.ui_swing.SwingController;
import com.dmdirc.addons.ui_swing.components.SnappingJSplitPane;
import com.dmdirc.addons.ui_swing.components.SwingInputHandler;
import com.dmdirc.addons.ui_swing.components.renderers.NicklistRenderer;
import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
import com.dmdirc.addons.ui_swing.textpane.ClickType;
import com.dmdirc.commandparser.PopupType;
import com.dmdirc.commandparser.parsers.ChannelCommandParser;
import com.dmdirc.commandparser.parsers.CommandParser;
import com.dmdirc.config.Identity;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.parser.irc.ChannelClientInfo;
import com.dmdirc.ui.interfaces.ChannelWindow;

import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.List;

import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;

import net.miginfocom.swing.MigLayout;

/**
 * The channel frame is the GUI component that represents a channel to the user.
 */
public final class ChannelFrame extends InputTextFrame implements ActionListener,
    //#ChannelFrame.java:64: method: NicklistListModel com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.access$000(ChannelFrame)
    //#input(NicklistListModel access$000(ChannelFrame)): x0
    //#input(NicklistListModel access$000(ChannelFrame)): x0.nicklistModel
    //#output(NicklistListModel access$000(ChannelFrame)): return_value
    //#pre[1] (NicklistListModel access$000(ChannelFrame)): x0 != null
    //#pre[2] (NicklistListModel access$000(ChannelFrame)): init'ed(x0.nicklistModel)
    //#post(NicklistListModel access$000(ChannelFrame)): return_value == x0.nicklistModel
    //#post(NicklistListModel access$000(ChannelFrame)): init'ed(return_value)
    //#ChannelFrame.java:64: end of method: NicklistListModel com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.access$000(ChannelFrame)
        ChannelWindow, com.dmdirc.interfaces.ActionListener {

    /**
     * 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 = 10;
    /** The nick list model used for this channel's nickname list. */
    private NicklistListModel nicklistModel;
    /** This channel's command parser. */
    private final ChannelCommandParser commandParser;
    /** Nick list. */
    private JList nickList;
    /** split pane. */
    private JSplitPane splitPane;
    /** popup menu item. */
    private JMenuItem settingsMI;
    /** The channel object that owns this frame. */
    private final Channel parentChannel;
    /** Nick list scroll pane. */
    private JScrollPane nickScrollPane;
    /** Identity. */
    private Identity identity;

    /**
     * Creates a new instance of ChannelFrame. Sets up callbacks and handlers,
     * and default options for the form.
     * 
     * @param owner The Channel object that owns this frame
     * @param controller Swing controller
     */
    public ChannelFrame(final Channel owner, final SwingController controller) {
        super(owner, controller);
    //#ChannelFrame.java:98: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.actions.CoreActionType.CLIENT_CLOSING
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SnappingJSplitPane$Orientation.HORIZONTAL
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): controller
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): owner
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ChannelCommandParser(ChannelFrame#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JList(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JMenuItem(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPanel(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JScrollPane(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JTextField(SwingInputField#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ListenerList(SwingInputField#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).nicknames
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).sortByCase
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).sortByMode
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).config
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).leftComponentSnap
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).snapDistance
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).useOneTouchExpandable
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).errorIndicator
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).listeners
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).textField
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).wrapIndicator
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputHandler(ChannelFrame#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputHandler.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.awayLabel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.commandParser
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.identity
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputField
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputFieldPopup
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputHandler
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputPanel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickList
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickPopup
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickScrollPane
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nicklistModel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.parentChannel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.settingsMI
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.splitPane
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ChannelCommandParser(ChannelFrame#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JList(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JMenuItem(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPanel(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initPopupMenu#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JScrollPane(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JTextField(SwingInputField#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ListenerList(SwingInputField#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputHandler(ChannelFrame#5)
    //#pre[2] (void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.__Tag == com/dmdirc/addons/ui_swing/components/frames/ChannelFrame
    //#pre[3] (void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): owner != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.Channel:getChannelInfo(...)@129 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.Channel:getServer(...)@129 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(com.dmdirc.actions.CoreActionType.CLIENT_CLOSING)
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@104 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@107 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@111 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@113 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@114 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@116 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@117 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@119 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@229 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): java.util.Collections:synchronizedList(...)@67 != null
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.__Tag == com/dmdirc/addons/ui_swing/components/frames/ChannelFrame
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.awayLabel == &new JLabel(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.commandParser == &new ChannelCommandParser(ChannelFrame#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(this.identity)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputField == &new SwingInputField(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputFieldPopup == &new JPopupMenu(initPopupMenu#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputHandler == &new SwingInputHandler(ChannelFrame#5)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputPanel == &new JPanel(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickList == &new JList(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickPopup == &new JPopupMenu(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nickScrollPane == &new JScrollPane(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.nicklistModel == &new NicklistListModel(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.parentChannel == owner
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.parentChannel != null
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.settingsMI == &new JMenuItem(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.splitPane == &new SnappingJSplitPane(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ChannelCommandParser(ChannelFrame#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(SwingInputField#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JLabel(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JList(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JMenuItem(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPanel(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JPopupMenu(initPopupMenu#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JScrollPane(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new JTextField(SwingInputField#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new ListenerList(SwingInputField#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputHandler(ChannelFrame#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).__Tag == com/dmdirc/addons/ui_swing/components/NicklistListModel
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new NicklistListModel(initComponents#6).nicknames != null
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(new NicklistListModel(initComponents#6).sortByCase)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(new NicklistListModel(initComponents#6).sortByMode)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).__Tag == com/dmdirc/addons/ui_swing/components/SnappingJSplitPane
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).config != null
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(new SnappingJSplitPane(initComponents#2).leftComponentSnap)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SnappingJSplitPane(initComponents#2).snapDistance == 10
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): init'ed(new SnappingJSplitPane(initComponents#2).useOneTouchExpandable)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).errorIndicator == &new JLabel(SwingInputField#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).listeners == &new ListenerList(SwingInputField#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).textField == &new JTextField(SwingInputField#2)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): new SwingInputField(initComponents#1).wrapIndicator == &new JLabel(SwingInputField#3)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): this.inputHandler.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputHandler
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JMenuItem
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JMenuItem:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane$Orientation:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JSplitPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setOneTouchExpandable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setContinuousLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.ActionMap:setParent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.ActionMap:clear
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.Channel:getConfigManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.NicklistRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JList:setCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JList:setSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JList:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.AbstractListModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.util.Collections:synchronizedList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JList:setModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JScrollPane:setViewportView
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JScrollPane:setPreferredSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JScrollPane:setMinimumSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.awt.Container:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getSearchBar
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getTextPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JSplitPane:setLeftComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JSplitPane:setRightComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JSplitPane:setResizeWeight
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:pack
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.ui.input.InputHandler
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.WritableFrameContainer:getConfigManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.Server:addAwayStateListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)): Effects-of-calling:com.dmdirc.ui.input.InputHandler:addValidationListener

        parentChannel = owner;

        initComponents();

        nickList.setBackground(getConfigManager().getOptionColour(
    //#ChannelFrame.java:104: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:104: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                "ui", "nicklistbackgroundcolour",
                "ui", "backgroundcolour"));
        nickList.setForeground(getConfigManager().getOptionColour(
    //#ChannelFrame.java:107: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:107: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                "ui", "nicklistforegroundcolour",
                "ui", "foregroundcolour"));

        getConfigManager().addChangeListener("ui", "nicklistforegroundcolour",
    //#ChannelFrame.java:111: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:111: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
                this);
        getConfigManager().addChangeListener("ui", "foregroundcolour", this);
    //#ChannelFrame.java:113: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:113: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
        getConfigManager().addChangeListener("ui", "nicklistbackgroundcolour",
    //#ChannelFrame.java:114: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:114: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
                this);
        getConfigManager().addChangeListener("ui", "backgroundcolour", this);
    //#ChannelFrame.java:116: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:116: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
        getConfigManager().addChangeListener("ui", "nickListAltBackgroundColour",
    //#ChannelFrame.java:117: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:117: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
                this);
        getConfigManager().addChangeListener("ui", "channelSplitPanePosition", this);
    //#ChannelFrame.java:119: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:119: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
        ActionManager.addListener(this, CoreActionType.CLIENT_CLOSING);
    //#ChannelFrame.java:120: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:addListener(ActionListener, ActionType[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:addListener(ActionListener, ActionType[])

        commandParser =
    //#ChannelFrame.java:122: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.Channel:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: Server com.dmdirc.Channel:getServer()
    //#ChannelFrame.java:122: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.commandparser.parsers.ChannelCommandParser(Server, Channel)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: void com.dmdirc.commandparser.parsers.ChannelCommandParser(Server, Channel)
                new ChannelCommandParser(((Channel) getContainer()).getServer(),
                (Channel) getContainer());

        setInputHandler(new SwingInputHandler(getInputField(), commandParser,
                this));

        identity = IdentityManager.getChannelConfig(getChannel().getServer().
    //#ChannelFrame.java:129: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.Channel:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: Server com.dmdirc.Channel:getServer()
    //#ChannelFrame.java:129: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.Server:getNetwork()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: String com.dmdirc.Server:getNetwork()
    //#ChannelFrame.java:129: Warning: method not available - call not analyzed
    //#    call on ChannelInfo com.dmdirc.Channel:getChannelInfo()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: ChannelInfo com.dmdirc.Channel:getChannelInfo()
    //#ChannelFrame.java:129: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getName()
    //#ChannelFrame.java:129: Warning: method not available - call not analyzed
    //#    call on Identity com.dmdirc.config.IdentityManager:getChannelConfig(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)
    //#    unanalyzed callee: Identity com.dmdirc.config.IdentityManager:getChannelConfig(String, String)
                getNetwork(), getChannel().getChannelInfo().getName());
    }
    //#ChannelFrame.java:131: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame(Channel, SwingController)

    /**
     * Retrieves the command Parser for this command window.
     * @return This window's command Parser
     */
    @Override
    public CommandParser getCommandParser() {
        return commandParser;
    //#ChannelFrame.java:139: method: CommandParser com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getCommandParser()
    //#input(CommandParser getCommandParser()): this
    //#input(CommandParser getCommandParser()): this.commandParser
    //#output(CommandParser getCommandParser()): return_value
    //#post(CommandParser getCommandParser()): return_value == this.commandParser
    //#post(CommandParser getCommandParser()): init'ed(return_value)
    //#ChannelFrame.java:139: end of method: CommandParser com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getCommandParser()
    }

    /** {@inheritDoc} */
    @Override
    public void updateNames(final List<ChannelClientInfo> clients) {
        SwingUtilities.invokeLater(new Runnable() {
    //#ChannelFrame.java:145: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): this
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): this.val$clients
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): this.val$clients == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)): init'ed(this.val$clients)
    //#ChannelFrame.java:145: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1(ChannelFrame, List)
    //#ChannelFrame.java:145: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.updateNames(List)
    //#input(void updateNames(List)): clients
    //#input(void updateNames(List)): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                nicklistModel.replace(clients);
    //#ChannelFrame.java:150: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nicklistModel
    //#input(void run()): this.this$0.nicklistModel.nicknames
    //#input(void run()): this.this$0.nicklistModel.sortByCase
    //#input(void run()): this.this$0.nicklistModel.sortByMode
    //#input(void run()): this.val$clients
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nicklistModel != null
    //#pre[4] (void run()): this.nicklistModel.nicknames != null
    //#pre[6] (void run()): init'ed(this.nicklistModel.sortByCase)
    //#pre[7] (void run()): init'ed(this.nicklistModel.sortByMode)
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void run()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:clear
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:addAll
            }
    //#ChannelFrame.java:151: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.run()
        });
    }
    //#ChannelFrame.java:153: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.updateNames(List)

    /** {@inheritDoc} */
    @Override
    public void updateNames() {
        SwingUtilities.invokeLater(new Runnable() {
    //#ChannelFrame.java:158: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)): init'ed(this.this$0)
    //#ChannelFrame.java:158: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2(ChannelFrame)
    //#ChannelFrame.java:158: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.updateNames()
    //#input(void updateNames()): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                nicklistModel.sort();
    //#ChannelFrame.java:163: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nicklistModel
    //#input(void run()): this.this$0.nicklistModel.nicknames
    //#input(void run()): this.this$0.nicklistModel.sortByCase
    //#input(void run()): this.this$0.nicklistModel.sortByMode
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nicklistModel != null
    //#pre[4] (void run()): this.nicklistModel.nicknames != null
    //#pre[6] (void run()): init'ed(this.nicklistModel.sortByCase)
    //#pre[7] (void run()): init'ed(this.nicklistModel.sortByMode)
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void run()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
            }
    //#ChannelFrame.java:164: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.run()
        });
    }
    //#ChannelFrame.java:166: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.updateNames()

    /** {@inheritDoc} */
    @Override
    public void addName(final ChannelClientInfo client) {
        SwingUtilities.invokeLater(new Runnable() {
    //#ChannelFrame.java:171: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): this
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): this.val$client
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): this.val$client == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)): init'ed(this.val$client)
    //#ChannelFrame.java:171: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3(ChannelFrame, ChannelClientInfo)
    //#ChannelFrame.java:171: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.addName(ChannelClientInfo)
    //#input(void addName(ChannelClientInfo)): client
    //#input(void addName(ChannelClientInfo)): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                nicklistModel.add(client);
    //#ChannelFrame.java:176: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nicklistModel
    //#input(void run()): this.this$0.nicklistModel.nicknames
    //#input(void run()): this.this$0.nicklistModel.sortByCase
    //#input(void run()): this.this$0.nicklistModel.sortByMode
    //#input(void run()): this.val$client
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nicklistModel != null
    //#pre[4] (void run()): this.nicklistModel.nicknames != null
    //#pre[6] (void run()): init'ed(this.nicklistModel.sortByCase)
    //#pre[7] (void run()): init'ed(this.nicklistModel.sortByMode)
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void run()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:add
            }
    //#ChannelFrame.java:177: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.run()
        });
    }
    //#ChannelFrame.java:179: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.addName(ChannelClientInfo)

    /** {@inheritDoc} */
    @Override
    public void removeName(final ChannelClientInfo client) {
        SwingUtilities.invokeLater(new Runnable() {
    //#ChannelFrame.java:184: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): this
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): this.val$client
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): this.val$client == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)): init'ed(this.val$client)
    //#ChannelFrame.java:184: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4(ChannelFrame, ChannelClientInfo)
    //#ChannelFrame.java:184: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.removeName(ChannelClientInfo)
    //#input(void removeName(ChannelClientInfo)): client
    //#input(void removeName(ChannelClientInfo)): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                nicklistModel.remove(client);
    //#ChannelFrame.java:189: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.nicklistModel
    //#input(void run()): this.this$0.nicklistModel.nicknames
    //#input(void run()): this.val$client
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.nicklistModel != null
    //#pre[4] (void run()): this.nicklistModel.nicknames != null
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void run()): Effects-of-calling:java.util.List:remove
            }
    //#ChannelFrame.java:190: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.run()
        });
    }
    //#ChannelFrame.java:192: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.removeName(ChannelClientInfo)

    /**
     * Retrieves this channel frame's nicklist component.
     * @return This channel's nicklist
     */
    public JList getNickList() {
        return nickList;
    //#ChannelFrame.java:199: method: JList com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNickList()
    //#input(JList getNickList()): this
    //#input(JList getNickList()): this.nickList
    //#output(JList getNickList()): return_value
    //#pre[2] (JList getNickList()): init'ed(this.nickList)
    //#post(JList getNickList()): return_value == this.nickList
    //#post(JList getNickList()): init'ed(return_value)
    //#ChannelFrame.java:199: end of method: JList com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNickList()
    }

    /** {@inheritDoc} */
    @Override
    public Channel getChannel() {
        return parentChannel;
    //#ChannelFrame.java:205: method: Channel com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getChannel()
    //#input(Channel getChannel()): this
    //#input(Channel getChannel()): this.parentChannel
    //#output(Channel getChannel()): return_value
    //#post(Channel getChannel()): return_value == this.parentChannel
    //#post(Channel getChannel()): init'ed(return_value)
    //#ChannelFrame.java:205: end of method: Channel com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getChannel()
    }

    /**
     * Initialises the compoents in this frame.
     */
    private void initComponents() {
        settingsMI = new JMenuItem("Settings");
    //#ChannelFrame.java:212: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.initComponents()
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SnappingJSplitPane$Orientation.HORIZONTAL
    //#input(void initComponents()): this
    //#input(void initComponents()): this.inputPanel
    //#input(void initComponents()): this.parentChannel
    //#output(void initComponents()): new JList(initComponents#4) num objects
    //#output(void initComponents()): new JMenuItem(initComponents#1) num objects
    //#output(void initComponents()): new JScrollPane(initComponents#3) num objects
    //#output(void initComponents()): new NicklistListModel(initComponents#6) num objects
    //#output(void initComponents()): this.nicklistModel.__Tag
    //#output(void initComponents()): this.nicklistModel.nicknames
    //#output(void initComponents()): this.nicklistModel.sortByCase
    //#output(void initComponents()): this.nicklistModel.sortByMode
    //#output(void initComponents()): new SnappingJSplitPane(initComponents#2) num objects
    //#output(void initComponents()): this.splitPane.__Tag
    //#output(void initComponents()): this.splitPane.config
    //#output(void initComponents()): this.splitPane.leftComponentSnap
    //#output(void initComponents()): this.splitPane.snapDistance
    //#output(void initComponents()): this.splitPane.useOneTouchExpandable
    //#output(void initComponents()): this.nickList
    //#output(void initComponents()): this.nickScrollPane
    //#output(void initComponents()): this.nicklistModel
    //#output(void initComponents()): this.settingsMI
    //#output(void initComponents()): this.splitPane
    //#new obj(void initComponents()): new JList(initComponents#4)
    //#new obj(void initComponents()): new JMenuItem(initComponents#1)
    //#new obj(void initComponents()): new JScrollPane(initComponents#3)
    //#new obj(void initComponents()): new NicklistListModel(initComponents#6)
    //#new obj(void initComponents()): new SnappingJSplitPane(initComponents#2)
    //#pre[2] (void initComponents()): init'ed(this.inputPanel)
    //#pre[3] (void initComponents()): this.parentChannel != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@232 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane(...)@237 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane(...)@239 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane(...)@240 != null
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane(...)@241 != null
    //#presumption(void initComponents()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@229 != null
    //#presumption(void initComponents()): java.util.Collections:synchronizedList(...)@67 != null
    //#post(void initComponents()): this.nickList == &new JList(initComponents#4)
    //#post(void initComponents()): this.nickScrollPane == &new JScrollPane(initComponents#3)
    //#post(void initComponents()): this.nicklistModel == &new NicklistListModel(initComponents#6)
    //#post(void initComponents()): this.settingsMI == &new JMenuItem(initComponents#1)
    //#post(void initComponents()): this.splitPane == &new SnappingJSplitPane(initComponents#2)
    //#post(void initComponents()): new JList(initComponents#4) num objects == 1
    //#post(void initComponents()): new JMenuItem(initComponents#1) num objects == 1
    //#post(void initComponents()): new JScrollPane(initComponents#3) num objects == 1
    //#post(void initComponents()): new NicklistListModel(initComponents#6) num objects == 1
    //#post(void initComponents()): new SnappingJSplitPane(initComponents#2) num objects == 1
    //#post(void initComponents()): this.nicklistModel.__Tag == com/dmdirc/addons/ui_swing/components/NicklistListModel
    //#post(void initComponents()): this.nicklistModel.nicknames != null
    //#post(void initComponents()): init'ed(this.nicklistModel.sortByCase)
    //#post(void initComponents()): init'ed(this.nicklistModel.sortByMode)
    //#post(void initComponents()): this.splitPane.__Tag == com/dmdirc/addons/ui_swing/components/SnappingJSplitPane
    //#post(void initComponents()): this.splitPane.config != null
    //#post(void initComponents()): init'ed(this.splitPane.leftComponentSnap)
    //#post(void initComponents()): this.splitPane.snapDistance == 10
    //#post(void initComponents()): init'ed(this.splitPane.useOneTouchExpandable)
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane$Orientation:equals
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JSplitPane
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setOneTouchExpandable
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:setContinuousLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SnappingJSplitPane:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:setParent
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:clear
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.NicklistListModel:fireContentsChanged
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.AbstractListModel
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Collections:synchronizedList
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.ArrayList
        settingsMI.addActionListener(this);

        splitPane =
                new SnappingJSplitPane(SnappingJSplitPane.Orientation.HORIZONTAL,
                false);

        nickScrollPane = new JScrollPane();
        nickList = new JList();
        nickList.setCellRenderer(new NicklistRenderer(parentChannel.getConfigManager(),
    //#ChannelFrame.java:221: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.Channel:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: ConfigManager com.dmdirc.Channel:getConfigManager()
    //#ChannelFrame.java:221: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.renderers.NicklistRenderer(ConfigManager, JList)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.renderers.NicklistRenderer(ConfigManager, JList)
                nickList));
        nickList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

        nickList.addMouseListener(this);

        nicklistModel = new NicklistListModel();

        nickList.setModel(nicklistModel);
        nickScrollPane.setViewportView(nickList);

        final int splitPanePosition = getConfigManager().getOptionInt("ui",
    //#ChannelFrame.java:232: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:232: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                "channelSplitPanePosition");
        nickScrollPane.setPreferredSize(new Dimension(splitPanePosition, 0));
        nickScrollPane.setMinimumSize(new Dimension(150, 0));

        getContentPane().setLayout(new MigLayout("fill, ins 0, hidemode 3, wrap 1"));
    //#ChannelFrame.java:237: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#ChannelFrame.java:237: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)

        getContentPane().add(splitPane, "grow, push");
    //#ChannelFrame.java:239: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
        getContentPane().add(getSearchBar(), "growx, pushx");
    //#ChannelFrame.java:240: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#ChannelFrame.java:240: Warning: method not available - call not analyzed
    //#    call on SwingSearchBar com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getSearchBar()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: SwingSearchBar com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getSearchBar()
        getContentPane().add(inputPanel, "growx, pushx");
    //#ChannelFrame.java:241: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getContentPane()

        splitPane.setLeftComponent(getTextPane());
    //#ChannelFrame.java:243: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getTextPane()
        splitPane.setRightComponent(nickScrollPane);
        splitPane.setResizeWeight(1);

        pack();
    //#ChannelFrame.java:247: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:pack()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:pack()
    }
    //#ChannelFrame.java:248: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.initComponents()

    /**
     * {@inheritDoc}.
     * 
     * @param actionEvent Action event
     */
    @Override
    public void actionPerformed(final ActionEvent actionEvent) {
        if (actionEvent.getSource() == settingsMI) {
    //#ChannelFrame.java:257: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void actionPerformed(ActionEvent)): __Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void actionPerformed(ActionEvent)): actionEvent
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.__Tag
    //#input(void actionPerformed(ActionEvent)): this.settingsMI
    //#pre[1] (void actionPerformed(ActionEvent)): actionEvent != null
    //#pre[4] (void actionPerformed(ActionEvent)): init'ed(this.settingsMI)
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/frames/ChannelFrame
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getController(...)@258 != null
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
            ChannelSettingsDialog.showChannelSettingsDialog((Channel) getContainer(), getController().getMainFrame());
    //#ChannelFrame.java:258: Warning: method not available - call not analyzed
    //#    call on SwingController com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getController()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: SwingController com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getController()
    //#ChannelFrame.java:258: 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.components.frames.ChannelFrame
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog:showChannelSettingsDialog(Channel, Window)
        }
    }
    //#ChannelFrame.java:260: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.actionPerformed(ActionEvent)

    /**
     * Returns the splitpane.
     * @return nicklist JSplitPane
     */
    public JSplitPane getSplitPane() {
        return splitPane;
    //#ChannelFrame.java:267: method: JSplitPane com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getSplitPane()
    //#input(JSplitPane getSplitPane()): this
    //#input(JSplitPane getSplitPane()): this.splitPane
    //#output(JSplitPane getSplitPane()): return_value
    //#pre[2] (JSplitPane getSplitPane()): init'ed(this.splitPane)
    //#post(JSplitPane getSplitPane()): return_value == this.splitPane
    //#post(JSplitPane getSplitPane()): init'ed(return_value)
    //#ChannelFrame.java:267: end of method: JSplitPane com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getSplitPane()
    }

    /**
     * Checks for url's, channels and nicknames. {@inheritDoc}
     */
    @Override
    public void mouseClicked(final MouseEvent mouseEvent) {
        processMouseEvent(mouseEvent);
    //#ChannelFrame.java:275: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mouseClicked(MouseEvent)
    //#ChannelFrame.java:275: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void mouseClicked(MouseEvent)
    //#    suspicious precondition index: [4]
    //#    Attribs:  Soft
    //#input(void mouseClicked(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): mouseEvent
    //#input(void mouseClicked(MouseEvent)): this
    //#input(void mouseClicked(MouseEvent)): this.__Tag
    //#input(void mouseClicked(MouseEvent)): this.inputField
    //#input(void mouseClicked(MouseEvent)): this.inputField.__Tag
    //#input(void mouseClicked(MouseEvent)): this.nickList
    //#output(void mouseClicked(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void mouseClicked(MouseEvent)): this.inputFieldPopup
    //#new obj(void mouseClicked(MouseEvent)): new JPopupMenu(initPopupMenu#1)
    //#pre[1] (void mouseClicked(MouseEvent)): mouseEvent != null
    //#pre[4] (void mouseClicked(MouseEvent)): (soft) this.__Tag in {com/dmdirc/addons/ui_swing/components/frames/ChannelFrame, com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame, com/dmdirc/addons/ui_swing/components/frames/InputTextFrame, com/dmdirc/addons/ui_swing/components/frames/QueryFrame, com/dmdirc/addons/ui_swing/components/frames/ServerFrame}
    //#pre[5] (void mouseClicked(MouseEvent)): (soft) this.inputField != null
    //#pre[6] (void mouseClicked(MouseEvent)): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[7] (void mouseClicked(MouseEvent)): (soft) this.nickList != null
    //#post(void mouseClicked(MouseEvent)): possibly_updated(this.inputFieldPopup)
    //#post(void mouseClicked(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects <= 1
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:getMousePosition
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:getModel
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.ListModel:getSize
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:getCellBounds
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.Rectangle:contains
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:isSelectedIndex
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:setSelectedIndex
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getSource
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:getSelectedValue
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:showPopupMenu
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JList:clearSelection
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:processMouseEvent
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:initPopupMenu
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.Point:getX
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.Point:getY
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseClicked
        super.mouseClicked(mouseEvent);
    }
    //#ChannelFrame.java:277: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mouseClicked(MouseEvent)

    /**
     * Not needed for this class. {@inheritDoc}
     */
    @Override
    public void mousePressed(final MouseEvent mouseEvent) {
        processMouseEvent(mouseEvent);
    //#ChannelFrame.java:284: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mousePressed(MouseEvent)
    //#ChannelFrame.java:284: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void mousePressed(MouseEvent)
    //#    suspicious precondition index: [4]
    //#input(void mousePressed(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): mouseEvent
    //#input(void mousePressed(MouseEvent)): this
    //#input(void mousePressed(MouseEvent)): this.__Tag
    //#input(void mousePressed(MouseEvent)): this.inputField
    //#input(void mousePressed(MouseEvent)): this.inputField.__Tag
    //#input(void mousePressed(MouseEvent)): this.nickList
    //#output(void mousePressed(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void mousePressed(MouseEvent)): this.inputFieldPopup
    //#new obj(void mousePressed(MouseEvent)): new JPopupMenu(initPopupMenu#1)
    //#pre[1] (void mousePressed(MouseEvent)): mouseEvent != null
    //#pre[4] (void mousePressed(MouseEvent)): this.__Tag in {com/dmdirc/addons/ui_swing/components/frames/ChannelFrame, com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame, com/dmdirc/addons/ui_swing/components/frames/InputTextFrame, com/dmdirc/addons/ui_swing/components/frames/QueryFrame, com/dmdirc/addons/ui_swing/components/frames/ServerFrame}
    //#pre[5] (void mousePressed(MouseEvent)): (soft) this.inputField != null
    //#pre[6] (void mousePressed(MouseEvent)): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[7] (void mousePressed(MouseEvent)): (soft) this.nickList != null
    //#post(void mousePressed(MouseEvent)): possibly_updated(this.inputFieldPopup)
    //#post(void mousePressed(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects <= 1
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:getMousePosition
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:getModel
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.ListModel:getSize
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:getCellBounds
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.Rectangle:contains
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:isSelectedIndex
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:setSelectedIndex
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getSource
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:getSelectedValue
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:showPopupMenu
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JList:clearSelection
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:processMouseEvent
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:initPopupMenu
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.Point:getX
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.Point:getY
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:mousePressed
        super.mousePressed(mouseEvent);
    }
    //#ChannelFrame.java:286: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mousePressed(MouseEvent)

    /**
     * Not needed for this class. {@inheritDoc}
     */
    @Override
    public void mouseReleased(final MouseEvent mouseEvent) {
        processMouseEvent(mouseEvent);
    //#ChannelFrame.java:293: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mouseReleased(MouseEvent)
    //#ChannelFrame.java:293: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void mouseReleased(MouseEvent)
    //#    suspicious precondition index: [4]
    //#input(void mouseReleased(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): mouseEvent
    //#input(void mouseReleased(MouseEvent)): this
    //#input(void mouseReleased(MouseEvent)): this.__Tag
    //#input(void mouseReleased(MouseEvent)): this.inputField
    //#input(void mouseReleased(MouseEvent)): this.inputField.__Tag
    //#input(void mouseReleased(MouseEvent)): this.nickList
    //#output(void mouseReleased(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void mouseReleased(MouseEvent)): this.inputFieldPopup
    //#new obj(void mouseReleased(MouseEvent)): new JPopupMenu(initPopupMenu#1)
    //#pre[1] (void mouseReleased(MouseEvent)): mouseEvent != null
    //#pre[4] (void mouseReleased(MouseEvent)): this.__Tag in {com/dmdirc/addons/ui_swing/components/frames/ChannelFrame, com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame, com/dmdirc/addons/ui_swing/components/frames/InputTextFrame, com/dmdirc/addons/ui_swing/components/frames/QueryFrame, com/dmdirc/addons/ui_swing/components/frames/ServerFrame}
    //#pre[5] (void mouseReleased(MouseEvent)): (soft) this.inputField != null
    //#pre[6] (void mouseReleased(MouseEvent)): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[7] (void mouseReleased(MouseEvent)): (soft) this.nickList != null
    //#post(void mouseReleased(MouseEvent)): possibly_updated(this.inputFieldPopup)
    //#post(void mouseReleased(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects <= 1
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:getMousePosition
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:getModel
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.ListModel:getSize
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:getCellBounds
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.Rectangle:contains
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:isSelectedIndex
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:setSelectedIndex
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getSource
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:getSelectedValue
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:showPopupMenu
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JList:clearSelection
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:processMouseEvent
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:initPopupMenu
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.Point:getX
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.Point:getY
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseReleased
        super.mouseReleased(mouseEvent);
    }
    //#ChannelFrame.java:295: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.mouseReleased(MouseEvent)

    /**
     * Processes every mouse button event to check for a popup trigger.
     *
     * @param e mouse event
     */
    @Override
    public void processMouseEvent(final MouseEvent e) {
        if (e.getSource() == nickList && nickList.getMousePosition() != null
    //#ChannelFrame.java:304: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.processMouseEvent(MouseEvent)
    //#ChannelFrame.java:304: Warning: method not available - call not analyzed
    //#    call on Point com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: Point com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition()
    //#input(void processMouseEvent(MouseEvent)): com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#input(void processMouseEvent(MouseEvent)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void processMouseEvent(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void processMouseEvent(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void processMouseEvent(MouseEvent)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void processMouseEvent(MouseEvent)): e
    //#input(void processMouseEvent(MouseEvent)): this
    //#input(void processMouseEvent(MouseEvent)): this.inputField
    //#input(void processMouseEvent(MouseEvent)): this.inputField.__Tag
    //#input(void processMouseEvent(MouseEvent)): this.nickList
    //#output(void processMouseEvent(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void processMouseEvent(MouseEvent)): this.inputFieldPopup
    //#new obj(void processMouseEvent(MouseEvent)): new JPopupMenu(initPopupMenu#1)
    //#pre[1] (void processMouseEvent(MouseEvent)): e != null
    //#pre[4] (void processMouseEvent(MouseEvent)): (soft) this.inputField != null
    //#pre[5] (void processMouseEvent(MouseEvent)): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[6] (void processMouseEvent(MouseEvent)): (soft) this.nickList != null
    //#presumption(void processMouseEvent(MouseEvent)): init'ed(com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME)
    //#presumption(void processMouseEvent(MouseEvent)): javax.swing.JList:getSelectedValue(...)@308 != null
    //#post(void processMouseEvent(MouseEvent)): this.inputFieldPopup == One-of{old this.inputFieldPopup, &new JPopupMenu(initPopupMenu#1)}
    //#post(void processMouseEvent(MouseEvent)): new JPopupMenu(initPopupMenu#1) num objects <= 1
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JList:getMousePosition
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JList:getModel
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.ListModel:getSize
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JList:getCellBounds
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.awt.Rectangle:contains
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JList:isSelectedIndex
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JList:setSelectedIndex
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getSource
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:initPopupMenu
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.awt.Point:getX
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.awt.Point:getY
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void processMouseEvent(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#test_vector(void processMouseEvent(MouseEvent)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition(...)@304: Addr_Set{null}, Inverse{null}
    //#test_vector(void processMouseEvent(MouseEvent)): java.awt.event.MouseEvent:isPopupTrigger(...)@307: {0}, {1}
    //#test_vector(void processMouseEvent(MouseEvent)): javax.swing.JList:getMousePosition(...)@304: Addr_Set{null}, Inverse{null}
                && getMousePosition() != null) {
            if (checkCursorInSelectedCell() || selectNickUnderCursor()) {
                if (e.isPopupTrigger()) {
                    showPopupMenu(ClickType.NICKNAME, getMousePosition(),
    //#ChannelFrame.java:308: Warning: method not available - call not analyzed
    //#    call on Point com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: Point com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getMousePosition()
    //#ChannelFrame.java:308: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    //#ChannelFrame.java:308: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:showPopupMenu(ClickType, Point, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:showPopupMenu(ClickType, Point, String)
                            ((ChannelClientInfo) nickList.getSelectedValue()).getNickname());
                }
            } else {
                nickList.clearSelection();
            }
        }

        super.processMouseEvent(e);
    }
    //#ChannelFrame.java:317: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.processMouseEvent(MouseEvent)

    /**
     * Checks whether the mouse cursor is currently over a cell in the nicklist
     * which has been previously selected.
     *
     * @return True if the cursor is over a selected cell, false otherwise
     */
    private boolean checkCursorInSelectedCell() {
        boolean showMenu = false;
    //#ChannelFrame.java:326: method: bool com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.checkCursorInSelectedCell()
    //#input(bool checkCursorInSelectedCell()): this
    //#input(bool checkCursorInSelectedCell()): this.nickList
    //#output(bool checkCursorInSelectedCell()): return_value
    //#pre[2] (bool checkCursorInSelectedCell()): this.nickList != null
    //#presumption(bool checkCursorInSelectedCell()): javax.swing.JList:getCellBounds(...)@330 != null
    //#presumption(bool checkCursorInSelectedCell()): javax.swing.JList:getModel(...)@329 != null
    //#post(bool checkCursorInSelectedCell()): init'ed(return_value)
    //#test_vector(bool checkCursorInSelectedCell()): java.awt.Rectangle:contains(...)@330: {0}, {1}
    //#test_vector(bool checkCursorInSelectedCell()): javax.swing.JList:getCellBounds(...)@330: Addr_Set{null}, Inverse{null}
    //#test_vector(bool checkCursorInSelectedCell()): javax.swing.JList:getMousePosition(...)@327: Addr_Set{null}, Inverse{null}
    //#test_vector(bool checkCursorInSelectedCell()): javax.swing.JList:isSelectedIndex(...)@330: {0}, {1}
        final Point mousePos = nickList.getMousePosition();
        if (mousePos != null) {
            for (int i = 0; i < nickList.getModel().getSize(); i++) {
                if (nickList.getCellBounds(i, i) != null && nickList.getCellBounds(i, i).
                        contains(mousePos) && nickList.isSelectedIndex(i)) {
                    showMenu = true;
                    break;
                }
            }
        }
        return showMenu;
    //#ChannelFrame.java:337: end of method: bool com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.checkCursorInSelectedCell()
    }

    /**
     * If the mouse cursor is over a nicklist cell, sets that cell to be
     * selected and returns true. If the mouse is not over any cell, the
     * selection is unchanged and the method returns false.
     *
     * @return True if an item was selected
     */
    private boolean selectNickUnderCursor() {
        boolean suceeded = false;
    //#ChannelFrame.java:348: method: bool com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.selectNickUnderCursor()
    //#input(bool selectNickUnderCursor()): this
    //#input(bool selectNickUnderCursor()): this.nickList
    //#output(bool selectNickUnderCursor()): return_value
    //#pre[2] (bool selectNickUnderCursor()): this.nickList != null
    //#presumption(bool selectNickUnderCursor()): javax.swing.JList:getCellBounds(...)@352 != null
    //#presumption(bool selectNickUnderCursor()): javax.swing.JList:getModel(...)@351 != null
    //#post(bool selectNickUnderCursor()): init'ed(return_value)
    //#test_vector(bool selectNickUnderCursor()): java.awt.Rectangle:contains(...)@352: {0}, {1}
    //#test_vector(bool selectNickUnderCursor()): javax.swing.JList:getCellBounds(...)@352: Addr_Set{null}, Inverse{null}
    //#test_vector(bool selectNickUnderCursor()): javax.swing.JList:getMousePosition(...)@349: Addr_Set{null}, Inverse{null}
        final Point mousePos = nickList.getMousePosition();
        if (mousePos != null) {
            for (int i = 0; i < nickList.getModel().getSize(); i++) {
                if (nickList.getCellBounds(i, i) != null && nickList.getCellBounds(i, i).
                        contains(mousePos)) {
                    nickList.setSelectedIndex(i);
                    suceeded = true;
                    break;
                }
            }
        }
        return suceeded;
    //#ChannelFrame.java:360: end of method: bool com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.selectNickUnderCursor()
    }

    /** {@inheritDoc} */
    @Override
    public void configChanged(final String domain, final String key) {
        super.configChanged(domain, key);
    //#ChannelFrame.java:366: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.configChanged(String, String)
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void configChanged(String, String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void configChanged(String, String)): domain
    //#input(void configChanged(String, String)): key
    //#input(void configChanged(String, String)): this
    //#input(void configChanged(String, String)): this.inputField
    //#input(void configChanged(String, String)): this.inputField.__Tag
    //#input(void configChanged(String, String)): this.nickList
    //#input(void configChanged(String, String)): this.nickScrollPane
    //#input(void configChanged(String, String)): this.splitPane
    //#pre[6] (void configChanged(String, String)): this.nickList != null
    //#pre[4] (void configChanged(String, String)): (soft) init'ed(this.inputField)
    //#pre[5] (void configChanged(String, String)): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[7] (void configChanged(String, String)): (soft) this.nickScrollPane != null
    //#pre[8] (void configChanged(String, String)): (soft) this.splitPane != null
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@373 != null
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@376 != null
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager(...)@382 != null
    //#presumption(void configChanged(String, String)): javax.swing.JSplitPane:getWidth(...)@385 - com.dmdirc.config.ConfigManager:getOptionInt(...)@382 in {-2_147_483_648..4_294_967_295}
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:configChanged
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionColour
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@368: {1}, {0}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@368: {0}, {1}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@381: {0}, {1}

        if ("nickListAltBackgroundColour".equals(key) ||
                "nicklistbackgroundcolour".equals(key) ||
                "backgroundcolour".equals(key) ||
                "nicklistforegroundcolour".equals(key) ||
                "foregroundcolour".equals(key)) {
            nickList.setBackground(getConfigManager().getOptionColour(
    //#ChannelFrame.java:373: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:373: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                    "ui", "nicklistbackgroundcolour",
                    "ui", "backgroundcolour"));
            nickList.setForeground(getConfigManager().getOptionColour(
    //#ChannelFrame.java:376: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:376: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                    "ui", "nicklistforegroundcolour",
                    "ui", "foregroundcolour"));
            nickList.repaint();
        }
        if ("channelSplitPanePosition".equals(key)) {
            final int splitPanePosition = getConfigManager().getOptionInt("ui",
    //#ChannelFrame.java:382: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.ChannelFrame:getConfigManager()
    //#ChannelFrame.java:382: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                    "channelSplitPanePosition");
            nickScrollPane.setPreferredSize(new Dimension(splitPanePosition, 0));
            splitPane.setDividerLocation(splitPane.getWidth() - splitPanePosition);
        }
        nickList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    }
    //#ChannelFrame.java:388: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.configChanged(String, String)

    /** {@inheritDoc} */
    @Override
    public void processEvent(final ActionType type, final StringBuffer format,
            final Object... arguments) {
        saveSplitPanePosition();
    //#ChannelFrame.java:394: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.processEvent(ActionType, StringBuffer, Object[])
    //#input(void processEvent(ActionType, StringBuffer, Object[])): this
    //#input(void processEvent(ActionType, StringBuffer, Object[])): this.identity
    //#input(void processEvent(ActionType, StringBuffer, Object[])): this.nickScrollPane
    //#pre[2] (void processEvent(ActionType, StringBuffer, Object[])): this.identity != null
    //#pre[3] (void processEvent(ActionType, StringBuffer, Object[])): this.nickScrollPane != null
    //#unanalyzed(void processEvent(ActionType, StringBuffer, Object[])): Effects-of-calling:javax.swing.JScrollPane:getSize
    //#unanalyzed(void processEvent(ActionType, StringBuffer, Object[])): Effects-of-calling:java.awt.Dimension:getWidth
    //#unanalyzed(void processEvent(ActionType, StringBuffer, Object[])): Effects-of-calling:com.dmdirc.config.Identity:setOption
    }
    //#ChannelFrame.java:395: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.processEvent(ActionType, StringBuffer, Object[])

    /** {@inheritDoc} */
    @Override
    public void close() {
        saveSplitPanePosition();
    //#ChannelFrame.java:400: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.close()
    //#ChannelFrame.java:400: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void close()
    //#    suspicious precondition index: [2]
    //#input(void close()): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): this
    //#input(void close()): this.__Tag
    //#input(void close()): this.identity
    //#input(void close()): this.nickScrollPane
    //#pre[2] (void close()): this.__Tag in {com/dmdirc/addons/ui_swing/components/frames/ChannelFrame, com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame, com/dmdirc/addons/ui_swing/components/frames/InputTextFrame, com/dmdirc/addons/ui_swing/components/frames/QueryFrame, com/dmdirc/addons/ui_swing/components/frames/ServerFrame}
    //#pre[3] (void close()): this.identity != null
    //#pre[4] (void close()): this.nickScrollPane != null
    //#unanalyzed(void close()): Effects-of-calling:javax.swing.JScrollPane:getSize
    //#unanalyzed(void close()): Effects-of-calling:java.awt.Dimension:getWidth
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.config.Identity:setOption
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:close
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.Server:removeAwayStateListener
        super.close();
    }
    //#ChannelFrame.java:402: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.close()

    private void saveSplitPanePosition() {
        identity.setOption("ui", "channelSplitPanePosition",
    //#ChannelFrame.java:405: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.saveSplitPanePosition()
    //#ChannelFrame.java:405: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void saveSplitPanePosition()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, int)
    //#input(void saveSplitPanePosition()): this
    //#input(void saveSplitPanePosition()): this.identity
    //#input(void saveSplitPanePosition()): this.nickScrollPane
    //#pre[2] (void saveSplitPanePosition()): this.identity != null
    //#pre[3] (void saveSplitPanePosition()): this.nickScrollPane != null
    //#presumption(void saveSplitPanePosition()): (int) (java.awt.Dimension:getWidth(...)@405) in {-2_147_483_648..4_294_967_295}
    //#presumption(void saveSplitPanePosition()): javax.swing.JScrollPane:getSize(...)@405 != null
                (int) nickScrollPane.getSize().getWidth());
    }
    //#ChannelFrame.java:407: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.saveSplitPanePosition()

    /** {@inheritDoc} */
    @Override
    public PopupType getNicknamePopupType() {
        return PopupType.CHAN_NICK;
    //#ChannelFrame.java:412: method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNicknamePopupType()
    //#input(PopupType getNicknamePopupType()): com.dmdirc.commandparser.PopupType.CHAN_NICK
    //#output(PopupType getNicknamePopupType()): return_value
    //#presumption(PopupType getNicknamePopupType()): init'ed(com.dmdirc.commandparser.PopupType.CHAN_NICK)
    //#post(PopupType getNicknamePopupType()): return_value == com.dmdirc.commandparser.PopupType.CHAN_NICK
    //#post(PopupType getNicknamePopupType()): init'ed(return_value)
    //#ChannelFrame.java:412: end of method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNicknamePopupType()
    }

    /** {@inheritDoc} */
    @Override
    public PopupType getChannelPopupType() {
        return PopupType.CHAN_NORMAL;
    //#ChannelFrame.java:418: method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getChannelPopupType()
    //#input(PopupType getChannelPopupType()): com.dmdirc.commandparser.PopupType.CHAN_NORMAL
    //#output(PopupType getChannelPopupType()): return_value
    //#presumption(PopupType getChannelPopupType()): init'ed(com.dmdirc.commandparser.PopupType.CHAN_NORMAL)
    //#post(PopupType getChannelPopupType()): return_value == com.dmdirc.commandparser.PopupType.CHAN_NORMAL
    //#post(PopupType getChannelPopupType()): init'ed(return_value)
    //#ChannelFrame.java:418: end of method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getChannelPopupType()
    }

    /** {@inheritDoc} */
    @Override
    public PopupType getHyperlinkPopupType() {
        return PopupType.CHAN_HYPERLINK;
    //#ChannelFrame.java:424: method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getHyperlinkPopupType()
    //#input(PopupType getHyperlinkPopupType()): com.dmdirc.commandparser.PopupType.CHAN_HYPERLINK
    //#output(PopupType getHyperlinkPopupType()): return_value
    //#presumption(PopupType getHyperlinkPopupType()): init'ed(com.dmdirc.commandparser.PopupType.CHAN_HYPERLINK)
    //#post(PopupType getHyperlinkPopupType()): return_value == com.dmdirc.commandparser.PopupType.CHAN_HYPERLINK
    //#post(PopupType getHyperlinkPopupType()): init'ed(return_value)
    //#ChannelFrame.java:424: end of method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getHyperlinkPopupType()
    }

    /** {@inheritDoc} */
    @Override
    public PopupType getNormalPopupType() {
        return PopupType.CHAN_NORMAL;
    //#ChannelFrame.java:430: method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNormalPopupType()
    //#input(PopupType getNormalPopupType()): com.dmdirc.commandparser.PopupType.CHAN_NORMAL
    //#output(PopupType getNormalPopupType()): return_value
    //#presumption(PopupType getNormalPopupType()): init'ed(com.dmdirc.commandparser.PopupType.CHAN_NORMAL)
    //#post(PopupType getNormalPopupType()): return_value == com.dmdirc.commandparser.PopupType.CHAN_NORMAL
    //#post(PopupType getNormalPopupType()): init'ed(return_value)
    //#ChannelFrame.java:430: end of method: PopupType com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.getNormalPopupType()
    }

    /** {@inheritDoc} */
    @Override
    public void addCustomPopupItems(final JPopupMenu popupMenu) {
        if (getContainer().getServer().getState().equals(ServerState.CONNECTED)) {
    //#ChannelFrame.java:436: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.addCustomPopupItems(JPopupMenu)
    //#ChannelFrame.java:436: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void addCustomPopupItems(JPopupMenu)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#ChannelFrame.java:436: Warning: method not available - call not analyzed
    //#    call on ServerState com.dmdirc.Server:getState()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void addCustomPopupItems(JPopupMenu)
    //#    unanalyzed callee: ServerState com.dmdirc.Server:getState()
    //#ChannelFrame.java:436: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ServerState:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
    //#    method: void addCustomPopupItems(JPopupMenu)
    //#    unanalyzed callee: bool com.dmdirc.ServerState:equals(Object)
    //#input(void addCustomPopupItems(JPopupMenu)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void addCustomPopupItems(JPopupMenu)): __Descendant_Table[others]
    //#input(void addCustomPopupItems(JPopupMenu)): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void addCustomPopupItems(JPopupMenu)): com.dmdirc.ServerState.CONNECTED
    //#input(void addCustomPopupItems(JPopupMenu)): popupMenu
    //#input(void addCustomPopupItems(JPopupMenu)): this
    //#input(void addCustomPopupItems(JPopupMenu)): this.__Tag
    //#input(void addCustomPopupItems(JPopupMenu)): this.settingsMI
    //#pre[1] (void addCustomPopupItems(JPopupMenu)): popupMenu != null
    //#pre[3] (void addCustomPopupItems(JPopupMenu)): this.__Tag == com/dmdirc/addons/ui_swing/components/frames/ChannelFrame
    //#pre[4] (void addCustomPopupItems(JPopupMenu)): this.settingsMI != null
    //#presumption(void addCustomPopupItems(JPopupMenu)): com.dmdirc.Server:getState(...)@436 != null
    //#presumption(void addCustomPopupItems(JPopupMenu)): init'ed(com.dmdirc.ServerState.CONNECTED)
    //#presumption(void addCustomPopupItems(JPopupMenu)): com.dmdirc.WritableFrameContainer:getServer(...)@436 != null
    //#presumption(void addCustomPopupItems(JPopupMenu)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#unanalyzed(void addCustomPopupItems(JPopupMenu)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#test_vector(void addCustomPopupItems(JPopupMenu)): com.dmdirc.ServerState:equals(...)@436: {0}, {1}
    //#test_vector(void addCustomPopupItems(JPopupMenu)): javax.swing.JPopupMenu:getComponentCount(...)@442: {-2_147_483_648..0}, {1..4_294_967_295}
            settingsMI.setEnabled(true);
        } else {
            settingsMI.setEnabled(false);
        }

        if (popupMenu.getComponentCount() > 0) {
            popupMenu.addSeparator();
        }

        popupMenu.add(settingsMI);
    }
    //#ChannelFrame.java:447: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.addCustomPopupItems(JPopupMenu)

    /** {@inheritDoc} */
    @Override
    public void redrawNicklist() {
        getNickList().repaint();
    //#ChannelFrame.java:452: method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.redrawNicklist()
    //#input(void redrawNicklist()): this
    //#input(void redrawNicklist()): this.nickList
    //#pre[2] (void redrawNicklist()): this.nickList != null
    }
    //#ChannelFrame.java:453: end of method: void com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.redrawNicklist()
}
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$4]
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init): __Dispatch_Table.run()V == &run
    //#ChannelFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4__static_init
    //#ChannelFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$4
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$3]
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init): __Dispatch_Table.run()V == &run
    //#ChannelFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3__static_init
    //#ChannelFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$3
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$2]
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init): __Dispatch_Table.run()V == &run
    //#ChannelFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2__static_init
    //#ChannelFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$2
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$1]
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init): __Dispatch_Table.run()V == &run
    //#ChannelFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1__static_init
    //#ChannelFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame$1
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.addCustomPopupItems(Ljavax/swing/JPopupMenu;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.addName(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.checkCursorInSelectedCell()Z
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.close()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.doPaste()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getAwayLabel()Ljavax/swing/JLabel;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getChannel()Lcom/dmdirc/Channel;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getChannelPopupType()Lcom/dmdirc/commandparser/PopupType;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getCommandParser()Lcom/dmdirc/commandparser/parsers/CommandParser;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/FrameContainer;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getHyperlinkPopupType()Lcom/dmdirc/commandparser/PopupType;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getInputField()Lcom/dmdirc/addons/ui_swing/components/SwingInputField;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getInputHandler()Lcom/dmdirc/ui/input/InputHandler;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNickList()Ljavax/swing/JList;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNicknamePopupType()Lcom/dmdirc/commandparser/PopupType;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNormalPopupType()Lcom/dmdirc/commandparser/PopupType;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getSplitLine(Ljava/lang/String;)[Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getSplitPane()Ljavax/swing/JSplitPane;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initInputField()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initPopupMenu()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.onAway(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.onBack()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.open()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.populatePopupMenu(Ljavax/swing/JComponent;Lcom/dmdirc/commandparser/PopupMenu;[Ljava/lang/Object;)Ljavax/swing/JComponent;
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.popuplateNicklistPopup(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.processEvent(Lcom/dmdirc/actions/interfaces/ActionType;Ljava/lang/StringBuffer;[Ljava/lang/Object;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.redrawNicklist()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.removeName(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.requestInputFieldFocus()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.saveSplitPanePosition()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.selectNickUnderCursor()Z
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setAwayIndicator(Z)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setInputField(Lcom/dmdirc/addons/ui_swing/components/SwingInputField;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setInputHandler(Lcom/dmdirc/ui/input/InputHandler;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.updateNames()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.updateNames(Ljava/util/List;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.addCustomPopupItems(Ljavax/swing/JPopupMenu;)V == &addCustomPopupItems
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.addName(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V == &addName
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.checkCursorInSelectedCell()Z == &checkCursorInSelectedCell
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.close()V == &close
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V == &configChanged
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.doPaste()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.doPaste
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.doPaste(Ljava/lang/String;)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.doPaste
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getAwayLabel()Ljavax/swing/JLabel; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getAwayLabel
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getChannel()Lcom/dmdirc/Channel; == &getChannel
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getChannelPopupType()Lcom/dmdirc/commandparser/PopupType; == &getChannelPopupType
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getCommandParser()Lcom/dmdirc/commandparser/parsers/CommandParser; == &getCommandParser
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/FrameContainer; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getContainer
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getContainer
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getHyperlinkPopupType()Lcom/dmdirc/commandparser/PopupType; == &getHyperlinkPopupType
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getInputField()Lcom/dmdirc/addons/ui_swing/components/SwingInputField; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getInputHandler()Lcom/dmdirc/ui/input/InputHandler; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getInputHandler
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNickList()Ljavax/swing/JList; == &getNickList
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNicknamePopupType()Lcom/dmdirc/commandparser/PopupType; == &getNicknamePopupType
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getNormalPopupType()Lcom/dmdirc/commandparser/PopupType; == &getNormalPopupType
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getSplitLine(Ljava/lang/String;)[Ljava/lang/String; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.getSplitLine
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.getSplitPane()Ljavax/swing/JSplitPane; == &getSplitPane
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initInputField()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.initInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.initPopupMenu()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.initPopupMenu
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V == &mouseClicked
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V == &mousePressed
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V == &mouseReleased
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.onAway(Ljava/lang/String;)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.onAway
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.onBack()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.onBack
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.open()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.open
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.populatePopupMenu(Ljavax/swing/JComponent;Lcom/dmdirc/commandparser/PopupMenu;[Ljava/lang/Object;)Ljavax/swing/JComponent; == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.populatePopupMenu
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.popuplateNicklistPopup(Ljava/lang/String;)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.popuplateNicklistPopup
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.processEvent(Lcom/dmdirc/actions/interfaces/ActionType;Ljava/lang/StringBuffer;[Ljava/lang/Object;)V == &processEvent
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V == &processMouseEvent
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.redrawNicklist()V == &redrawNicklist
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.removeName(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V == &removeName
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.requestInputFieldFocus()V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.requestInputFieldFocus
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.saveSplitPanePosition()V == &saveSplitPanePosition
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.selectNickUnderCursor()Z == &selectNickUnderCursor
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setAwayIndicator(Z)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.setAwayIndicator
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setInputField(Lcom/dmdirc/addons/ui_swing/components/SwingInputField;)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.setInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.setInputHandler(Lcom/dmdirc/ui/input/InputHandler;)V == &com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.setInputHandler
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.updateNames()V == &updateNames
    //#post(com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init): __Dispatch_Table.updateNames(Ljava/util/List;)V == &updateNames
    //#ChannelFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame.com.dmdirc.addons.ui_swing.components.frames.ChannelFrame__static_init
    //#ChannelFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.ChannelFrame
