//# 0 errors, 1,086 messages
//#
/*
    //#InputTextFrame.java:1:1: class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#InputTextFrame.java:1:1: method: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__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.WritableFrameContainer;
import com.dmdirc.addons.ui_swing.SwingController;
import com.dmdirc.commandparser.PopupManager;
import com.dmdirc.commandparser.PopupMenu;
import com.dmdirc.commandparser.PopupMenuItem;
import com.dmdirc.commandparser.PopupType;
import com.dmdirc.config.ConfigManager;
import com.dmdirc.interfaces.AwayStateListener;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.ui.input.InputHandler;
import com.dmdirc.ui.interfaces.InputWindow;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.actions.CopyAction;
import com.dmdirc.addons.ui_swing.actions.CutAction;
import com.dmdirc.addons.ui_swing.actions.InputTextFramePasteAction;
import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog;
import com.dmdirc.addons.ui_swing.actions.CommandAction;
import com.dmdirc.addons.ui_swing.components.SwingInputField;

import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.MouseEvent;
import java.io.IOException;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;

import net.miginfocom.layout.PlatformDefaults;

/**
 * Frame with an input field.
 */
public abstract class InputTextFrame extends TextFrame implements InputWindow,
    //#InputTextFrame.java:66: method: FrameContainer com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getContainer()
    //#InputTextFrame.java:66: 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.InputTextFrame
    //#    method: FrameContainer getContainer()
    //#    suspicious precondition index: [2]
    //#input(FrameContainer getContainer()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(FrameContainer getContainer()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(FrameContainer getContainer()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(FrameContainer getContainer()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(FrameContainer getContainer()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(FrameContainer getContainer()): __Descendant_Table[others]
    //#input(FrameContainer getContainer()): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(FrameContainer getContainer()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(FrameContainer getContainer()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(FrameContainer getContainer()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(FrameContainer getContainer()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(FrameContainer getContainer()): this
    //#input(FrameContainer getContainer()): this.__Tag
    //#output(FrameContainer getContainer()): return_value
    //#pre[2] (FrameContainer getContainer()): 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}
    //#post(FrameContainer getContainer()): init'ed(return_value)
    //#unanalyzed(FrameContainer getContainer()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#InputTextFrame.java:66: end of method: FrameContainer com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getContainer()
        AwayStateListener {

    /**
     * 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 = 2;
    /** Input field panel. */
    protected JPanel inputPanel;
    /** Away label. */
    protected JLabel awayLabel;
    /** The InputHandler for our input field. */
    private InputHandler inputHandler;
    /** Frame input field. */
    private SwingInputField inputField;
    /** Popupmenu for this frame. */
    private JPopupMenu inputFieldPopup;
    /** Nick popup menu. */
    protected JPopupMenu nickPopup;

    /**
     * Creates a new instance of InputFrame.
     *
     * @param owner WritableFrameContainer owning this frame.
     * @param controller Swing controller
     */
    public InputTextFrame(final WritableFrameContainer owner, final SwingController controller) {
        super(owner, controller);
    //#InputTextFrame.java:95: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#InputTextFrame.java:95: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame(FrameContainer, SwingController)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame(FrameContainer, SwingController)
    //#InputTextFrame.java:95: 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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    suspicious precondition index: [2]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, 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.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, 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.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setBackground(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setCaretColor(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setForeground(Ljava/awt/Color;)V
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): controller
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): owner
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this
    //#input(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPanel(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JTextField(SwingInputField#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new ListenerList(SwingInputField#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).errorIndicator
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).listeners
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).textField
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).wrapIndicator
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.awayLabel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputField
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputFieldPopup
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputPanel
    //#output(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.nickPopup
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPanel(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initPopupMenu#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JTextField(SwingInputField#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new ListenerList(SwingInputField#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1)
    //#pre[2] (void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): 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 com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): owner != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com.dmdirc.WritableFrameContainer:getConfigManager(...)@99 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com.dmdirc.WritableFrameContainer:getServer(...)@114 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): 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}
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.awayLabel == &new JLabel(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputField == &new SwingInputField(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputFieldPopup == &new JPopupMenu(initPopupMenu#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.inputPanel == &new JPanel(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): this.nickPopup == &new JPopupMenu(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(SwingInputField#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JLabel(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPanel(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JPopupMenu(initPopupMenu#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new JTextField(SwingInputField#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new ListenerList(SwingInputField#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).errorIndicator == &new JLabel(SwingInputField#4)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).listeners == &new ListenerList(SwingInputField#1)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).textField == &new JTextField(SwingInputField#2)
    //#post(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): new SwingInputField(initComponents#1).wrapIndicator == &new JLabel(SwingInputField#3)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getUnitValueX
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): Effects-of-calling:javax.swing.JPanel
    //#test_vector(void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)): com.dmdirc.WritableFrameContainer:getServer(...)@113: Addr_Set{null}, Inverse{null}

        initComponents();

        final ConfigManager config = owner.getConfigManager();
    //#InputTextFrame.java:99: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.WritableFrameContainer:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: ConfigManager com.dmdirc.WritableFrameContainer:getConfigManager()

        getInputField().setBackground(config.getOptionColour(
    //#InputTextFrame.java:101: 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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                "ui", "inputbackgroundcolour",
                "ui", "backgroundcolour"));
        getInputField().setForeground(config.getOptionColour(
    //#InputTextFrame.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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                "ui", "inputforegroundcolour",
                "ui", "foregroundcolour"));
        getInputField().setCaretColor(config.getOptionColour(
    //#InputTextFrame.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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                "ui", "inputforegroundcolour",
                "ui", "foregroundcolour"));

        config.addChangeListener("ui", "inputforegroundcolour", this);
    //#InputTextFrame.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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
        config.addChangeListener("ui", "inputbackgroundcolour", this);
    //#InputTextFrame.java:112: 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.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: void com.dmdirc.config.ConfigManager:addChangeListener(String, String, ConfigChangeListener)
        if (getContainer().getServer() != null) {
    //#InputTextFrame.java:113: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
            getContainer().getServer().addAwayStateListener(this);
    //#InputTextFrame.java:114: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#InputTextFrame.java:114: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Server:addAwayStateListener(AwayStateListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)
    //#    unanalyzed callee: void com.dmdirc.Server:addAwayStateListener(AwayStateListener)
        }
    }
    //#InputTextFrame.java:116: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.com.dmdirc.addons.ui_swing.components.frames.InputTextFrame(WritableFrameContainer, SwingController)

    /** {@inheritDoc} */
    @Override
    public void open() {
        super.open();
    //#InputTextFrame.java:121: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.open()
    //#InputTextFrame.java:121: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:open()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:open()
    //#InputTextFrame.java:121: 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.InputTextFrame
    //#    method: void open()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(void open()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void open()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void open()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void open()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void open()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void open()): __Descendant_Table[others]
    //#input(void open()): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void open()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void open()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void open()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void open()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.requestFocusInWindow()Z
    //#input(void open()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void open()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void open()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void open()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void open()): this
    //#input(void open()): this.__Tag
    //#input(void open()): this.awayLabel
    //#input(void open()): this.inputField
    //#input(void open()): this.inputField.__Tag
    //#pre[4] (void open()): this.inputField != null
    //#pre[5] (void open()): this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[2] (void open()): (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[3] (void open()): (soft) this.awayLabel != null
    //#presumption(void open()): com.dmdirc.WritableFrameContainer:getServer(...)@124 != null
    //#presumption(void open()): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@122 != null
    //#presumption(void open()): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void open()): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#unanalyzed(void open()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void open()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void open()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void open()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void open()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void open()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void open()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void open()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void open()): Effects-of-calling:java.lang.Boolean:booleanValue
    //#test_vector(void open()): com.dmdirc.WritableFrameContainer:getServer(...)@122: Addr_Set{null}, Inverse{null}
    //#test_vector(void open()): com.dmdirc.config.ConfigManager:getOptionBool(...)@122: {0}, {1}
        if (getConfigManager().getOptionBool("ui", "awayindicator") && getContainer().
    //#InputTextFrame.java:122: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:122: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#InputTextFrame.java:122: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
                getServer() != null) {
            awayLabel.setVisible(getContainer().getServer().isAway());
    //#InputTextFrame.java:124: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#InputTextFrame.java:124: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.Server:isAway()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void open()
    //#    unanalyzed callee: bool com.dmdirc.Server:isAway()
        }

        inputField.requestFocusInWindow();
    }
    //#InputTextFrame.java:128: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.open()

    /**
     * Initialises the components for this frame.
     */
    private void initComponents() {
        setInputField(new SwingInputField());
    //#InputTextFrame.java:134: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initComponents()
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void initComponents()): this
    //#input(void initComponents()): this.inputField.__Tag
    //#output(void initComponents()): new JLabel(SwingInputField#3) num objects
    //#output(void initComponents()): new JLabel(SwingInputField#4) num objects
    //#output(void initComponents()): new JLabel(initComponents#3) num objects
    //#output(void initComponents()): new JPanel(initComponents#4) num objects
    //#output(void initComponents()): new JPopupMenu(initComponents#2) num objects
    //#output(void initComponents()): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void initComponents()): new JTextField(SwingInputField#2) num objects
    //#output(void initComponents()): new ListenerList(SwingInputField#1) num objects
    //#output(void initComponents()): new SwingInputField(initComponents#1) num objects
    //#output(void initComponents()): this.inputField.__Tag
    //#output(void initComponents()): this.inputField.errorIndicator
    //#output(void initComponents()): this.inputField.listeners
    //#output(void initComponents()): this.inputField.textField
    //#output(void initComponents()): this.inputField.wrapIndicator
    //#output(void initComponents()): this.awayLabel
    //#output(void initComponents()): this.inputField
    //#output(void initComponents()): this.inputFieldPopup
    //#output(void initComponents()): this.inputPanel
    //#output(void initComponents()): this.nickPopup
    //#new obj(void initComponents()): new JLabel(SwingInputField#3)
    //#new obj(void initComponents()): new JLabel(SwingInputField#4)
    //#new obj(void initComponents()): new JLabel(initComponents#3)
    //#new obj(void initComponents()): new JPanel(initComponents#4)
    //#new obj(void initComponents()): new JPopupMenu(initComponents#2)
    //#new obj(void initComponents()): new JPopupMenu(initPopupMenu#1)
    //#new obj(void initComponents()): new JTextField(SwingInputField#2)
    //#new obj(void initComponents()): new ListenerList(SwingInputField#1)
    //#new obj(void initComponents()): new SwingInputField(initComponents#1)
    //#presumption(void initComponents()): (int) (net.miginfocom.layout.UnitValue:getValue(...)@146) in {-2_147_483_648..4_294_967_295}
    //#presumption(void initComponents()): (int) (net.miginfocom.layout.UnitValue:getValue(...)@146) in {-2_147_483_648..4_294_967_295}
    //#presumption(void initComponents()): net.miginfocom.layout.PlatformDefaults:getUnitValueX(...)@146 != null
    //#presumption(void initComponents()): net.miginfocom.layout.PlatformDefaults:getUnitValueX(...)@146 != null
    //#post(void initComponents()): this.awayLabel == &new JLabel(initComponents#3)
    //#post(void initComponents()): this.inputField == &new SwingInputField(initComponents#1)
    //#post(void initComponents()): this.inputFieldPopup == &new JPopupMenu(initPopupMenu#1)
    //#post(void initComponents()): this.inputPanel == &new JPanel(initComponents#4)
    //#post(void initComponents()): this.nickPopup == &new JPopupMenu(initComponents#2)
    //#post(void initComponents()): new JLabel(SwingInputField#3) num objects == 1
    //#post(void initComponents()): new JLabel(SwingInputField#4) num objects == 1
    //#post(void initComponents()): new JLabel(initComponents#3) num objects == 1
    //#post(void initComponents()): new JPanel(initComponents#4) num objects == 1
    //#post(void initComponents()): new JPopupMenu(initComponents#2) num objects == 1
    //#post(void initComponents()): new JPopupMenu(initPopupMenu#1) num objects == 1
    //#post(void initComponents()): new JTextField(SwingInputField#2) num objects == 1
    //#post(void initComponents()): new ListenerList(SwingInputField#1) num objects == 1
    //#post(void initComponents()): new SwingInputField(initComponents#1) num objects == 1
    //#post(void initComponents()): this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#post(void initComponents()): this.inputField.errorIndicator == &new JLabel(SwingInputField#4)
    //#post(void initComponents()): this.inputField.listeners == &new ListenerList(SwingInputField#1)
    //#post(void initComponents()): this.inputField.textField == &new JTextField(SwingInputField#2)
    //#post(void initComponents()): this.inputField.wrapIndicator == &new JLabel(SwingInputField#3)
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPopupMenu
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPopupMenu:add
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPopupMenu:setOpaque
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPopupMenu:setLightWeightPopupEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:setFocusTraversalKeysEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:add
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setActionMap
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingInputField:setInputMap

        getInputField().addKeyListener(this);
        getInputField().addMouseListener(this);
    //#InputTextFrame.java:137: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener(MouseListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingInputField:addMouseListener(MouseListener)

        initPopupMenu();
        nickPopup = new JPopupMenu();

        awayLabel = new JLabel();
        awayLabel.setText("(away)");
        awayLabel.setVisible(false);

        inputPanel = new JPanel(new BorderLayout(
    //#InputTextFrame.java:146: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#InputTextFrame.java:146: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initComponents()
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
                (int) PlatformDefaults.getUnitValueX("related").getValue(),
                (int) PlatformDefaults.getUnitValueX("related").getValue()));
        inputPanel.add(awayLabel, BorderLayout.LINE_START);
        inputPanel.add(inputField, BorderLayout.CENTER);

        initInputField();
    }
    //#InputTextFrame.java:153: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initComponents()

    /** Initialises the popupmenu. */
    private void initPopupMenu() {
        inputFieldPopup = new JPopupMenu();
    //#InputTextFrame.java:157: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initPopupMenu()
    //#input(void initPopupMenu()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void initPopupMenu()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void initPopupMenu()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void initPopupMenu()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void initPopupMenu()): this
    //#input(void initPopupMenu()): this.inputField
    //#input(void initPopupMenu()): this.inputField.__Tag
    //#output(void initPopupMenu()): new JPopupMenu(initPopupMenu#1) num objects
    //#output(void initPopupMenu()): this.inputFieldPopup
    //#new obj(void initPopupMenu()): new JPopupMenu(initPopupMenu#1)
    //#pre[2] (void initPopupMenu()): this.inputField != null
    //#pre[3] (void initPopupMenu()): this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#post(void initPopupMenu()): this.inputFieldPopup == &new JPopupMenu(initPopupMenu#1)
    //#post(void initPopupMenu()): new JPopupMenu(initPopupMenu#1) num objects == 1
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void initPopupMenu()): Effects-of-calling:javax.swing.AbstractAction

        inputFieldPopup.add(new CutAction(getInputField().getTextField()));
        inputFieldPopup.add(new CopyAction(getInputField().getTextField()));
        inputFieldPopup.add(new InputTextFramePasteAction(this));
        inputFieldPopup.setOpaque(true);
        inputFieldPopup.setLightWeightPopupEnabled(true);
    }
    //#InputTextFrame.java:164: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initPopupMenu()

    /**
     * Initialises the input field.
     */
    private void initInputField() {
        UIUtilities.addUndoManager(getInputField().getTextField());
    //#InputTextFrame.java:170: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initInputField()
    //#input(void initInputField()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void initInputField()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void initInputField()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void initInputField()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getTextField()Ljavax/swing/JTextField;
    //#input(void initInputField()): this
    //#input(void initInputField()): this.inputField
    //#input(void initInputField()): this.inputField.__Tag
    //#pre[2] (void initInputField()): this.inputField != null
    //#pre[3] (void initInputField()): this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#presumption(void initInputField()): com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap(...)@172 != null
    //#presumption(void initInputField()): com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(...)@174 != null
    //#presumption(void initInputField()): com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(...)@176 != null
    //#presumption(void initInputField()): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void initInputField()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void initInputField()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void initInputField()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void initInputField()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void initInputField()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.undo.UndoManager
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.text.JTextComponent:getDocument
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.text.Document:addUndoableEditListener
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.text.JTextComponent:getActionMap
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.text.JTextComponent:getInputMap
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void initInputField()): Effects-of-calling:javax.swing.InputMap:put

        getInputField().getActionMap().put("paste",
    //#InputTextFrame.java:172: Warning: method not available - call not analyzed
    //#    call on ActionMap com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initInputField()
    //#    unanalyzed callee: ActionMap com.dmdirc.addons.ui_swing.components.SwingInputField:getActionMap()
                new InputTextFramePasteAction(this));
        getInputField().getInputMap(WHEN_FOCUSED).put(KeyStroke.getKeyStroke("shift INSERT"),
    //#InputTextFrame.java:174: Warning: method not available - call not analyzed
    //#    call on InputMap com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initInputField()
    //#    unanalyzed callee: InputMap com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(int)
                "paste");
        getInputField().getInputMap(WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ctrl V"),
    //#InputTextFrame.java:176: Warning: method not available - call not analyzed
    //#    call on InputMap com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void initInputField()
    //#    unanalyzed callee: InputMap com.dmdirc.addons.ui_swing.components.SwingInputField:getInputMap(int)
                "paste");
    }
    //#InputTextFrame.java:178: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.initInputField()

    /**
     * Returns the container associated with this frame.
     *
     * @return This frame's container.
     */
    @Override
    public WritableFrameContainer getContainer() {
        return (WritableFrameContainer) super.getContainer();
    //#InputTextFrame.java:187: method: WritableFrameContainer com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getContainer()
    //#InputTextFrame.java:187: Warning: method not available - call not analyzed
    //#    call on FrameContainer com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: WritableFrameContainer getContainer()
    //#    unanalyzed callee: FrameContainer com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer()
    //#input(WritableFrameContainer getContainer()): this
    //#output(WritableFrameContainer getContainer()): return_value
    //#post(WritableFrameContainer getContainer()): init'ed(return_value)
    //#InputTextFrame.java:187: end of method: WritableFrameContainer com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getContainer()
    }

    /**
     * Returns the input handler associated with this frame.
     *
     * @return Input handlers for this frame
     */
    @Override
    public final InputHandler getInputHandler() {
        return inputHandler;
    //#InputTextFrame.java:197: method: InputHandler com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getInputHandler()
    //#input(InputHandler getInputHandler()): this
    //#input(InputHandler getInputHandler()): this.inputHandler
    //#output(InputHandler getInputHandler()): return_value
    //#pre[2] (InputHandler getInputHandler()): init'ed(this.inputHandler)
    //#post(InputHandler getInputHandler()): return_value == this.inputHandler
    //#post(InputHandler getInputHandler()): init'ed(return_value)
    //#InputTextFrame.java:197: end of method: InputHandler com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getInputHandler()
    }

    /**
     * Sets the input handler for this frame.
     *
     * @param newInputHandler input handler to set for this frame
     */
    public final void setInputHandler(final InputHandler newInputHandler) {
        this.inputHandler = newInputHandler;
    //#InputTextFrame.java:206: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setInputHandler(InputHandler)
    //#input(void setInputHandler(InputHandler)): newInputHandler
    //#input(void setInputHandler(InputHandler)): this
    //#input(void setInputHandler(InputHandler)): this.inputField
    //#output(void setInputHandler(InputHandler)): this.inputHandler
    //#pre[1] (void setInputHandler(InputHandler)): newInputHandler != null
    //#pre[3] (void setInputHandler(InputHandler)): init'ed(this.inputField)
    //#post(void setInputHandler(InputHandler)): this.inputHandler == newInputHandler
    //#post(void setInputHandler(InputHandler)): this.inputHandler != null
        inputHandler.addValidationListener(inputField);
    //#InputTextFrame.java:207: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.input.InputHandler:addValidationListener(InputValidationListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void setInputHandler(InputHandler)
    //#    unanalyzed callee: void com.dmdirc.ui.input.InputHandler:addValidationListener(InputValidationListener)
    }
    //#InputTextFrame.java:208: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setInputHandler(InputHandler)

    /**
     * Returns the input field for this frame.
     *
     * @return SwingInputField input field for the frame.
     */
    public final SwingInputField getInputField() {
        return inputField;
    //#InputTextFrame.java:216: method: SwingInputField com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getInputField()
    //#input(SwingInputField getInputField()): this
    //#input(SwingInputField getInputField()): this.inputField
    //#output(SwingInputField getInputField()): return_value
    //#pre[2] (SwingInputField getInputField()): init'ed(this.inputField)
    //#post(SwingInputField getInputField()): return_value == this.inputField
    //#post(SwingInputField getInputField()): init'ed(return_value)
    //#InputTextFrame.java:216: end of method: SwingInputField com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getInputField()
    }

    /**
     * Sets the frames input field.
     *
     * @param newInputField new input field to use
     */
    protected final void setInputField(final SwingInputField newInputField) {
        this.inputField = newInputField;
    //#InputTextFrame.java:225: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setInputField(SwingInputField)
    //#input(void setInputField(SwingInputField)): newInputField
    //#input(void setInputField(SwingInputField)): this
    //#output(void setInputField(SwingInputField)): this.inputField
    //#post(void setInputField(SwingInputField)): this.inputField == newInputField
    //#post(void setInputField(SwingInputField)): init'ed(this.inputField)
    }
    //#InputTextFrame.java:226: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setInputField(SwingInputField)

    /**
     * Returns the away label for this server connection.
     *
     * @return JLabel away label
     */
    public JLabel getAwayLabel() {
        return awayLabel;
    //#InputTextFrame.java:234: method: JLabel com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getAwayLabel()
    //#input(JLabel getAwayLabel()): this
    //#input(JLabel getAwayLabel()): this.awayLabel
    //#output(JLabel getAwayLabel()): return_value
    //#pre[2] (JLabel getAwayLabel()): init'ed(this.awayLabel)
    //#post(JLabel getAwayLabel()): return_value == this.awayLabel
    //#post(JLabel getAwayLabel()): init'ed(return_value)
    //#InputTextFrame.java:234: end of method: JLabel com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getAwayLabel()
    }

    /**
     * Sets the away indicator on or off.
     *
     * @param awayState away state
     */
    @Override
    public void setAwayIndicator(final boolean awayState) {
        final boolean awayIndicator = getConfigManager().
    //#InputTextFrame.java:244: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setAwayIndicator(bool)
    //#InputTextFrame.java:244: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void setAwayIndicator(bool)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:244: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void setAwayIndicator(bool)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#input(void setAwayIndicator(bool)): awayState
    //#input(void setAwayIndicator(bool)): this
    //#input(void setAwayIndicator(bool)): this.awayLabel
    //#input(void setAwayIndicator(bool)): this.inputPanel
    //#pre[3] (void setAwayIndicator(bool)): (soft) this.awayLabel != null
    //#pre[4] (void setAwayIndicator(bool)): (soft) this.inputPanel != null
    //#presumption(void setAwayIndicator(bool)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@244 != null
    //#test_vector(void setAwayIndicator(bool)): awayState: {1}, {0}
                getOptionBool("ui", "awayindicator");
        if (awayIndicator || !awayState) {
            if (awayState) {
                inputPanel.add(awayLabel, BorderLayout.LINE_START);
                awayLabel.setVisible(true);
            } else {
                awayLabel.setVisible(false);
            }
        }
    }
    //#InputTextFrame.java:254: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.setAwayIndicator(bool)

    /**
     * Checks for url's, channels and nicknames. {@inheritDoc}
     */
    @Override
    public void mouseClicked(final MouseEvent mouseEvent) {
        if (mouseEvent.getSource() == getTextPane()) {
    //#InputTextFrame.java:261: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.mouseClicked(MouseEvent)
    //#InputTextFrame.java:261: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void mouseClicked(MouseEvent)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane()
    //#InputTextFrame.java:261: 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.InputTextFrame
    //#    method: void mouseClicked(MouseEvent)
    //#    suspicious precondition index: [4]
    //#    Attribs:  Soft
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mouseClicked(MouseEvent)): __Descendant_Table[others]
    //#input(void mouseClicked(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#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/ChannelFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseClicked(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#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/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
    //#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
    //#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.JPopupMenu
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:processMouseEvent
    //#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: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
            processMouseEvent(mouseEvent);
        }
        super.mouseClicked(mouseEvent);
    //#InputTextFrame.java:264: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseClicked(MouseEvent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void mouseClicked(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseClicked(MouseEvent)
    }
    //#InputTextFrame.java:265: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.mouseClicked(MouseEvent)

    /**
     * Not needed for this class. {@inheritDoc}
     */
    @Override
    public void mousePressed(final MouseEvent mouseEvent) {
        processMouseEvent(mouseEvent);
    //#InputTextFrame.java:272: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.mousePressed(MouseEvent)
    //#InputTextFrame.java:272: 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.InputTextFrame
    //#    method: void mousePressed(MouseEvent)
    //#    suspicious precondition index: [4]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mousePressed(MouseEvent)): __Descendant_Table[others]
    //#input(void mousePressed(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#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/ChannelFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mousePressed(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#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/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
    //#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
    //#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.JPopupMenu
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:processMouseEvent
    //#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: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
        super.mousePressed(mouseEvent);
    //#InputTextFrame.java:273: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mousePressed(MouseEvent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void mousePressed(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mousePressed(MouseEvent)
    }
    //#InputTextFrame.java:274: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.mousePressed(MouseEvent)

    /**
     * Not needed for this class. {@inheritDoc}
     */
    @Override
    public void mouseReleased(final MouseEvent mouseEvent) {
        processMouseEvent(mouseEvent);
    //#InputTextFrame.java:281: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.mouseReleased(MouseEvent)
    //#InputTextFrame.java:281: 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.InputTextFrame
    //#    method: void mouseReleased(MouseEvent)
    //#    suspicious precondition index: [4]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void mouseReleased(MouseEvent)): __Descendant_Table[others]
    //#input(void mouseReleased(MouseEvent)): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#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/ChannelFrame.__Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#input(void mouseReleased(MouseEvent)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.com.dmdirc.addons.ui_swing.textpane.ClickType.NICKNAME
    //#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/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
    //#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
    //#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.JPopupMenu
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:processMouseEvent
    //#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: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
        super.mouseReleased(mouseEvent);
    //#InputTextFrame.java:282: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseReleased(MouseEvent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void mouseReleased(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:mouseReleased(MouseEvent)
    }
    //#InputTextFrame.java:283: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.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.isPopupTrigger() && e.getSource() == getInputField()) {
    //#InputTextFrame.java:292: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.processMouseEvent(MouseEvent)
    //#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
    //#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
    //#presumption(void processMouseEvent(MouseEvent)): (int) (java.awt.Point:getX(...)@297) in {-2_147_483_648..4_294_967_295}
    //#presumption(void processMouseEvent(MouseEvent)): (int) (net.miginfocom.layout.UnitValue:getValue(...)@297) + (int) (java.awt.Point:getY(...)@297) + com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight(...)@297 in range
    //#presumption(void processMouseEvent(MouseEvent)): (int) (net.miginfocom.layout.UnitValue:getValue(...)@297) + (int) (java.awt.Point:getY(...)@297) + com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight(...)@297 in {-2_147_483_648..4_294_967_295}
    //#presumption(void processMouseEvent(MouseEvent)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane(...)@297 != null
    //#presumption(void processMouseEvent(MouseEvent)): net.miginfocom.layout.PlatformDefaults:getUnitValueX(...)@297 != 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.JPopupMenu
    //#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.SwingInputField:getMousePosition(...)@293: Addr_Set{null}, Inverse{null}
    //#test_vector(void processMouseEvent(MouseEvent)): java.awt.event.MouseEvent:isPopupTrigger(...)@292: {0}, {1}
            final Point point = getInputField().getMousePosition();
    //#InputTextFrame.java:293: Warning: method not available - call not analyzed
    //#    call on Point com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: Point com.dmdirc.addons.ui_swing.components.SwingInputField:getMousePosition()

            if (point != null) {
                initPopupMenu();
                inputFieldPopup.show(this, (int) point.getX(),
    //#InputTextFrame.java:297: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getTextPane()
    //#InputTextFrame.java:297: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.TextPane:getHeight()
    //#InputTextFrame.java:297: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#InputTextFrame.java:297: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
                        (int) point.getY() + getTextPane().getHeight() +
                        (int) PlatformDefaults.getUnitValueX("related").getValue());
            }
        }
        super.processMouseEvent(e);
    //#InputTextFrame.java:302: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent(MouseEvent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void processMouseEvent(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:processMouseEvent(MouseEvent)
    }
    //#InputTextFrame.java:303: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.processMouseEvent(MouseEvent)

    /** Checks and pastes text. */
    public void doPaste() {
        String clipboard = null;
    //#InputTextFrame.java:307: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.doPaste()
    //#InputTextFrame.java:307: Warning: unused assignment
    //#    Unused assignment into clipboard
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste()
    //#    Attribs:  Uncertain
    //#InputTextFrame.java:307: 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.InputTextFrame
    //#    method: void doPaste()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(void doPaste()): "Unable to get clipboard contents: "._tainted
    //#input(void doPaste()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void doPaste()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void doPaste()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void doPaste()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void doPaste()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void doPaste()): __Descendant_Table[others]
    //#input(void doPaste()): __Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#input(void doPaste()): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste()): com.dmdirc.logger.ErrorLevel.LOW
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getCaretPosition()I
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.replaceSelection(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#input(void doPaste()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste()): java.awt.datatransfer.DataFlavor.stringFlavor
    //#input(void doPaste()): this
    //#input(void doPaste()): this.__Tag
    //#input(void doPaste()): this.inputField
    //#input(void doPaste()): this.inputField.__Tag
    //#pre[2] (void doPaste()): (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[3] (void doPaste()): (soft) this.inputField != null
    //#pre[4] (void doPaste()): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#presumption(void doPaste()): init'ed(com.dmdirc.logger.ErrorLevel.LOW)
    //#presumption(void doPaste()): java.awt.Toolkit:getDefaultToolkit(...)@310 != null
    //#presumption(void doPaste()): java.awt.Toolkit:getDefaultToolkit(...)@321 != null
    //#presumption(void doPaste()): java.awt.Toolkit:getSystemClipboard(...)@310 != null
    //#presumption(void doPaste()): java.awt.Toolkit:getSystemClipboard(...)@321 != null
    //#presumption(void doPaste()): init'ed(java.awt.datatransfer.DataFlavor.stringFlavor)
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.String:replace
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void doPaste()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void doPaste()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionInt
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.WritableFrameContainer:getNumLines
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getController
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog:setVisible
    //#unanalyzed(void doPaste()): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void doPaste()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void doPaste()): Effects-of-calling:com.dmdirc.WritableFrameContainer:sendLine
    //#test_vector(void doPaste()): java.awt.datatransfer.Clipboard:isDataFlavorAvailable(...)@310: {1}, {0}

        try {
            if (!Toolkit.getDefaultToolkit().getSystemClipboard().
                    isDataFlavorAvailable(DataFlavor.stringFlavor)) {
                return;
            }
        } catch (IllegalStateException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to paste from clipboard.");
    //#InputTextFrame.java:315: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
            return;
        }

        try {
            //get the contents of the input field and combine it with the clipboard
            clipboard = (String) Toolkit.getDefaultToolkit().
                    getSystemClipboard().getData(DataFlavor.stringFlavor);
            doPaste(clipboard);
        } catch (IOException ex) {
            Logger.userError(ErrorLevel.LOW, "Unable to get clipboard contents: " +
    //#InputTextFrame.java:325: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
                    ex.getMessage());
        } catch (UnsupportedFlavorException ex) {
            Logger.appError(ErrorLevel.LOW, "Unable to get clipboard contents",
    //#InputTextFrame.java:328: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
                    ex);
        }
    }
    //#InputTextFrame.java:331: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.doPaste()

    /**
     * Pastes the specified content into the input area.
     *
     * @param clipboard The contents of the clipboard to be pasted
     * @since 0.6.3m1
     */
    protected void doPaste(final String clipboard) {
        String[] clipboardLines;
        //check theres something to paste
        if (clipboard != null && (clipboardLines = getSplitLine(clipboard)).length > 1) {
    //#InputTextFrame.java:342: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.doPaste(String)
    //#InputTextFrame.java:342: 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.InputTextFrame
    //#    method: void doPaste(String)
    //#    suspicious precondition index: [4]
    //#    Attribs:  Soft
    //#input(void doPaste(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void doPaste(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void doPaste(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void doPaste(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void doPaste(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void doPaste(String)): __Descendant_Table[others]
    //#input(void doPaste(String)): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste(String)): clipboard
    //#input(void doPaste(String)): clipboard._tainted
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getCaretPosition()I
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.replaceSelection(Ljava/lang/String;)V
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste(String)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void doPaste(String)): this
    //#input(void doPaste(String)): this.__Tag
    //#input(void doPaste(String)): this.inputField
    //#input(void doPaste(String)): this.inputField.__Tag
    //#pre[5] (void doPaste(String)): this.inputField != null
    //#pre[6] (void doPaste(String)): this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#pre[4] (void doPaste(String)): (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}
    //#presumption(void doPaste(String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@347 != null
    //#presumption(void doPaste(String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getController(...)@352 != null
    //#presumption(void doPaste(String)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void doPaste(String)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void doPaste(String)): com.dmdirc.util.ReturnableThread:getObject(...)@203 != null
    //#presumption(void doPaste(String)): getSplitLine(...).length <= 4_294_967_295
    //#unanalyzed(void doPaste(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#unanalyzed(void doPaste(String)): Effects-of-calling:java.lang.String:replace
    //#unanalyzed(void doPaste(String)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void doPaste(String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void doPaste(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void doPaste(String)): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void doPaste(String)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void doPaste(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void doPaste(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void doPaste(String)): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void doPaste(String)): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void doPaste(String)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void doPaste(String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#test_vector(void doPaste(String)): clipboard: Addr_Set{null}, Inverse{null}
    //#test_vector(void doPaste(String)): getSplitLine(...).length: {0,1}, {2..4_294_967_295}
            final int caretPosition = getInputField().getCaretPosition();
            final String inputFieldText = getInputField().getText();
            final String text = inputFieldText.substring(0, caretPosition) + clipboard + inputFieldText.substring(caretPosition);
            //check the limit
            final int pasteTrigger = getConfigManager().getOptionInt("ui",
    //#InputTextFrame.java:347: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:347: 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.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: int com.dmdirc.config.ConfigManager:getOptionInt(String, String)
                    "pasteProtectionLimit");
            //check whether the number of lines is over the limit
            if (getContainer().getNumLines(text) > pasteTrigger) {
    //#InputTextFrame.java:350: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.WritableFrameContainer:getNumLines(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: int com.dmdirc.WritableFrameContainer:getNumLines(String)
                //show the multi line paste dialog
                new PasteDialog(this, text, getController().getMainFrame()).setVisible(true);
    //#InputTextFrame.java:352: Warning: method not available - call not analyzed
    //#    call on SwingController com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getController()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: SwingController com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getController()
    //#InputTextFrame.java:352: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog(InputTextFrame, String, Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog(InputTextFrame, String, Window)
    //#InputTextFrame.java:352: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog:setVisible(bool)
                inputField.setText("");
            } else {
                //send the lines
                for (String clipboardLine : clipboardLines) {
                    getContainer().sendLine(clipboardLine);
    //#InputTextFrame.java:357: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.WritableFrameContainer:sendLine(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void doPaste(String)
    //#    unanalyzed callee: void com.dmdirc.WritableFrameContainer:sendLine(String)
                }
            }
        } else {
            inputField.replaceSelection(clipboard);
        }
    }
    //#InputTextFrame.java:363: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.doPaste(String)

    /**
     * Splits the line on all line endings.
     *
     * @param line Line that will be split
     *
     * @return Split line array
     */
    private String[] getSplitLine(final String line) {
        return line.replace("\r\n", "\n").replace('\r', '\n').split("\n");
    //#InputTextFrame.java:373: method: String[] com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getSplitLine(String)
    //#input(String[] getSplitLine(String)): line
    //#output(String[] getSplitLine(String)): java.lang.String:split(...)._tainted
    //#output(String[] getSplitLine(String)): return_value
    //#new obj(String[] getSplitLine(String)): java.lang.String:split(...)
    //#pre[1] (String[] getSplitLine(String)): line != null
    //#post(String[] getSplitLine(String)): java.lang.String:split(...)._tainted == 0
    //#post(String[] getSplitLine(String)): return_value == &java.lang.String:split(...)
    //#InputTextFrame.java:373: end of method: String[] com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.getSplitLine(String)
    }

    /** {@inheritDoc} */
    @Override
    public void configChanged(final String domain, final String key) {
        super.configChanged(domain, key);
    //#InputTextFrame.java:379: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.configChanged(String, String)
    //#InputTextFrame.java:379: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:configChanged(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame: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
    //#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
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@385 != null
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@390 != null
    //#presumption(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@393 != null
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void configChanged(String, String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#test_vector(void configChanged(String, String)): this.inputField: Addr_Set{null}, Inverse{null}
    //#test_vector(void configChanged(String, String)): com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager(...)@381: Addr_Set{null}, Inverse{null}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@381: {0}, {1}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@383: {1}, {0}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@383: {0}, {1}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@388: {1}, {0}
    //#test_vector(void configChanged(String, String)): java.lang.String:equals(...)@388: {0}, {1}

        if ("ui".equals(domain) && getInputField() != null &&
    //#InputTextFrame.java:381: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
                getConfigManager() != null) {
            if ("inputbackgroundcolour".equals(key) ||
                    "backgroundcolour".equals(key)) {
                getInputField().setBackground(getConfigManager().getOptionColour(
    //#InputTextFrame.java:385: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:385: 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.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                        "ui", "inputbackgroundcolour",
                        "ui", "backgroundcolour"));
            } else if ("inputforegroundcolour".equals(key) ||
                    "foregroundcolour".equals(key)) {
                getInputField().setForeground(getConfigManager().getOptionColour(
    //#InputTextFrame.java:390: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:390: 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.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                        "ui", "inputforegroundcolour",
                        "ui", "foregroundcolour"));
                getInputField().setCaretColor(getConfigManager().getOptionColour(
    //#InputTextFrame.java:393: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:393: 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.InputTextFrame
    //#    method: void configChanged(String, String)
    //#    unanalyzed callee: Color com.dmdirc.config.ConfigManager:getOptionColour(String, String, String[])
                        "ui", "inputforegroundcolour",
                        "ui", "foregroundcolour"));

            }
        }
    }
    //#InputTextFrame.java:399: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.configChanged(String, String)

    /** 
     * Popuplates the nicklist popup. 
     *
     * @param nickname Nickname for the popup
     */
    protected final void popuplateNicklistPopup(final String nickname) {
        final PopupMenu popups = PopupManager.getMenu(PopupType.CHAN_NICK,
    //#InputTextFrame.java:407: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.popuplateNicklistPopup(String)
    //#InputTextFrame.java:407: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void popuplateNicklistPopup(String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager()
    //#InputTextFrame.java:407: Warning: method not available - call not analyzed
    //#    call on PopupMenu com.dmdirc.commandparser.PopupManager:getMenu(PopupType, ConfigManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void popuplateNicklistPopup(String)
    //#    unanalyzed callee: PopupMenu com.dmdirc.commandparser.PopupManager:getMenu(PopupType, ConfigManager)
    //#input(void popuplateNicklistPopup(String)): com.dmdirc.commandparser.PopupType.CHAN_NICK
    //#input(void popuplateNicklistPopup(String)): nickname
    //#input(void popuplateNicklistPopup(String)): this
    //#output(void popuplateNicklistPopup(String)): new JPopupMenu(popuplateNicklistPopup#1) num objects
    //#output(void popuplateNicklistPopup(String)): this.nickPopup
    //#new obj(void popuplateNicklistPopup(String)): new JPopupMenu(popuplateNicklistPopup#1)
    //#presumption(void popuplateNicklistPopup(String)): com.dmdirc.commandparser.PopupManager:getMenu(...)@407 != null
    //#presumption(void popuplateNicklistPopup(String)): init'ed(com.dmdirc.commandparser.PopupType.CHAN_NICK)
    //#post(void popuplateNicklistPopup(String)): this.nickPopup == &new JPopupMenu(popuplateNicklistPopup#1)
    //#post(void popuplateNicklistPopup(String)): new JPopupMenu(popuplateNicklistPopup#1) num objects == 1
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenu:getItems
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:isDivider
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:javax.swing.JSeparator
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:javax.swing.JComponent:add
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:isSubMenu
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getName
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:javax.swing.JMenu
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getSubMenu
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:populatePopupMenu
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getCommandParser
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getCommand
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void popuplateNicklistPopup(String)): Effects-of-calling:javax.swing.JMenuItem
                getConfigManager());

        nickPopup = (JPopupMenu) populatePopupMenu(new JPopupMenu(), popups,
                nickname);
    }
    //#InputTextFrame.java:412: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.popuplateNicklistPopup(String)

    /**
     * Populates the specified popupmenu
     * 
     * @param menu Menu component
     * @param popup Popup to get info from
     * @param arguments Arguments for the command
     * 
     * @return Populated popup
     */
    private JComponent populatePopupMenu(final JComponent menu,
            final PopupMenu popup, final Object... arguments) {
        for (PopupMenuItem menuItem : popup.getItems()) {
    //#InputTextFrame.java:425: method: JComponent com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.populatePopupMenu(JComponent, PopupMenu, Object[])
    //#InputTextFrame.java:425: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.commandparser.PopupMenu:getItems()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: List com.dmdirc.commandparser.PopupMenu:getItems()
    //#input(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): arguments
    //#input(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): menu
    //#input(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): popup
    //#input(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): this
    //#output(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): return_value
    //#pre[3] (JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): popup != null
    //#pre[2] (JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): (soft) menu != null
    //#presumption(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): com.dmdirc.commandparser.PopupMenu:getItems(...)@425 != null
    //#presumption(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): com.dmdirc.commandparser.PopupMenuItem:getSubMenu(...)@429 != null
    //#presumption(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): java.util.Iterator:next(...)@425 != null
    //#post(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): return_value == menu
    //#post(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): return_value != null
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenu:getItems
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:isDivider
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:javax.swing.JSeparator
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:javax.swing.JComponent:add
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:isSubMenu
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getName
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:javax.swing.JMenu
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getSubMenu
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:populatePopupMenu
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getCommandParser
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:com.dmdirc.commandparser.PopupMenuItem:getCommand
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): Effects-of-calling:javax.swing.JMenuItem
    //#test_vector(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): com.dmdirc.commandparser.PopupMenuItem:isDivider(...)@426: {0}, {1}
    //#test_vector(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): com.dmdirc.commandparser.PopupMenuItem:isSubMenu(...)@428: {0}, {1}
    //#test_vector(JComponent populatePopupMenu(JComponent, PopupMenu, Object[])): java.util.Iterator:hasNext(...)@425: {0}, {1}
            if (menuItem.isDivider()) {
    //#InputTextFrame.java:426: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.commandparser.PopupMenuItem:isDivider()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: bool com.dmdirc.commandparser.PopupMenuItem:isDivider()
                menu.add(new JSeparator());
            } else if (menuItem.isSubMenu()) {
    //#InputTextFrame.java:428: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.commandparser.PopupMenuItem:isSubMenu()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: bool com.dmdirc.commandparser.PopupMenuItem:isSubMenu()
                menu.add(populatePopupMenu(new JMenu(menuItem.getName()),
    //#InputTextFrame.java:429: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.commandparser.PopupMenuItem:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: String com.dmdirc.commandparser.PopupMenuItem:getName()
    //#InputTextFrame.java:429: Warning: method not available - call not analyzed
    //#    call on PopupMenu com.dmdirc.commandparser.PopupMenuItem:getSubMenu()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: PopupMenu com.dmdirc.commandparser.PopupMenuItem:getSubMenu()
                        menuItem.getSubMenu(), arguments));
            } else {
                menu.add(new JMenuItem(new CommandAction(getCommandParser(),
    //#InputTextFrame.java:432: Warning: method not available - call not analyzed
    //#    call on CommandParser com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getCommandParser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: CommandParser com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getCommandParser()
    //#InputTextFrame.java:432: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.commandparser.PopupMenuItem:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: String com.dmdirc.commandparser.PopupMenuItem:getName()
    //#InputTextFrame.java:432: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.commandparser.PopupMenuItem:getCommand(Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: JComponent populatePopupMenu(JComponent, PopupMenu, Object[])
    //#    unanalyzed callee: String com.dmdirc.commandparser.PopupMenuItem:getCommand(Object[])
                        this, menuItem.getName(), menuItem.getCommand(arguments))));
            }
        }
        return menu;
    //#InputTextFrame.java:436: end of method: JComponent com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.populatePopupMenu(JComponent, PopupMenu, Object[])
    }

    /** Request input field focus. */
    public void requestInputFieldFocus() {
        if (inputField != null) {
    //#InputTextFrame.java:441: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.requestInputFieldFocus()
    //#input(void requestInputFieldFocus()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void requestInputFieldFocus()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void requestInputFieldFocus()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void requestInputFieldFocus()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.requestFocusInWindow()Z
    //#input(void requestInputFieldFocus()): this
    //#input(void requestInputFieldFocus()): this.inputField
    //#input(void requestInputFieldFocus()): this.inputField.__Tag
    //#pre[2] (void requestInputFieldFocus()): init'ed(this.inputField)
    //#pre[3] (void requestInputFieldFocus()): (soft) this.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void requestInputFieldFocus()): Effects-of-calling:java.lang.Boolean:booleanValue
    //#test_vector(void requestInputFieldFocus()): this.inputField: Addr_Set{null}, Inverse{null}
            inputField.requestFocusInWindow();
        }
    }
    //#InputTextFrame.java:444: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.requestInputFieldFocus()

    /** {@inheritDoc} */
    @Override
    public void onAway(final String reason) {
        setAwayIndicator(true);
    //#InputTextFrame.java:449: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.onAway(String)
    //#InputTextFrame.java:449: 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.InputTextFrame
    //#    method: void onAway(String)
    //#    suspicious precondition index: [2]
    //#input(void onAway(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void onAway(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void onAway(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void onAway(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void onAway(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void onAway(String)): __Descendant_Table[others]
    //#input(void onAway(String)): __Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onAway(String)): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onAway(String)): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onAway(String)): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onAway(String)): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onAway(String)): this
    //#input(void onAway(String)): this.__Tag
    //#input(void onAway(String)): this.awayLabel
    //#input(void onAway(String)): this.inputPanel
    //#pre[2] (void onAway(String)): 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 onAway(String)): (soft) this.awayLabel != null
    //#pre[4] (void onAway(String)): (soft) this.inputPanel != null
    //#unanalyzed(void onAway(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager
    //#unanalyzed(void onAway(String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void onAway(String)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void onAway(String)): Effects-of-calling:javax.swing.JLabel:setVisible
    }
    //#InputTextFrame.java:450: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.onAway(String)

    /** {@inheritDoc} */
    @Override
    public void onBack() {
        setAwayIndicator(false);
    //#InputTextFrame.java:455: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.onBack()
    //#InputTextFrame.java:455: 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.InputTextFrame
    //#    method: void onBack()
    //#    suspicious precondition index: [2]
    //#input(void onBack()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void onBack()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void onBack()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void onBack()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void onBack()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void onBack()): __Descendant_Table[others]
    //#input(void onBack()): __Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onBack()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onBack()): com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onBack()): com/dmdirc/addons/ui_swing/components/frames/QueryFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onBack()): com/dmdirc/addons/ui_swing/components/frames/ServerFrame.__Dispatch_Table.setAwayIndicator(Z)V
    //#input(void onBack()): this
    //#input(void onBack()): this.__Tag
    //#input(void onBack()): this.awayLabel
    //#input(void onBack()): this.inputPanel
    //#pre[2] (void onBack()): 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 onBack()): (soft) this.awayLabel != null
    //#pre[4] (void onBack()): (soft) this.inputPanel != null
    //#unanalyzed(void onBack()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.InputTextFrame:getConfigManager
    //#unanalyzed(void onBack()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void onBack()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void onBack()): Effects-of-calling:javax.swing.JLabel:setVisible
    }
    //#InputTextFrame.java:456: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.onBack()

    /** {@inheritDoc} */
    @Override
    public void close() {
        super.close();
    //#InputTextFrame.java:461: method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.close()
    //#InputTextFrame.java:461: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.frames.TextFrame:close()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void close()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.frames.TextFrame:close()
    //#InputTextFrame.java:461: 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.InputTextFrame
    //#    method: void close()
    //#    suspicious precondition index: [2]
    //#input(void close()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void close()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void close()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void close()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void close()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void close()): __Descendant_Table[others]
    //#input(void close()): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#input(void close()): com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.__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/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
    //#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}
    //#presumption(void close()): com.dmdirc.WritableFrameContainer:getServer(...)@464 != null
    //#presumption(void close()): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#presumption(void close()): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187 != null
    //#unanalyzed(void close()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer
    //#test_vector(void close()): com.dmdirc.WritableFrameContainer:getServer(...)@463: Addr_Set{null}, Inverse{null}
    //#test_vector(void close()): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getContainer(...)@187: Addr_Set{null}, Inverse{null}

        if (getContainer() != null && getContainer().getServer() != null) {
    //#InputTextFrame.java:463: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void close()
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
            getContainer().getServer().removeAwayStateListener(this);
    //#InputTextFrame.java:464: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void close()
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#InputTextFrame.java:464: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Server:removeAwayStateListener(AwayStateListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
    //#    method: void close()
    //#    unanalyzed callee: void com.dmdirc.Server:removeAwayStateListener(AwayStateListener)
        }
    }
    //#InputTextFrame.java:466: end of method: void com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.close()
}
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.close()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.doPaste()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.doPaste(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getAwayLabel()Ljavax/swing/JLabel;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/FrameContainer;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getInputField()Lcom/dmdirc/addons/ui_swing/components/SwingInputField;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getInputHandler()Lcom/dmdirc/ui/input/InputHandler;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getSplitLine(Ljava/lang/String;)[Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initInputField()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initPopupMenu()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.onAway(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.onBack()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.open()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__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.InputTextFrame__static_init): __Dispatch_Table.popuplateNicklistPopup(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.requestInputFieldFocus()V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setAwayIndicator(Z)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setInputField(Lcom/dmdirc/addons/ui_swing/components/SwingInputField;)V
    //#output(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setInputHandler(Lcom/dmdirc/ui/input/InputHandler;)V
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.close()V == &close
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.configChanged(Ljava/lang/String;Ljava/lang/String;)V == &configChanged
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.doPaste()V == &doPaste
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.doPaste(Ljava/lang/String;)V == &doPaste
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getAwayLabel()Ljavax/swing/JLabel; == &getAwayLabel
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/FrameContainer; == &getContainer
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getContainer()Lcom/dmdirc/WritableFrameContainer; == &getContainer
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getInputField()Lcom/dmdirc/addons/ui_swing/components/SwingInputField; == &getInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getInputHandler()Lcom/dmdirc/ui/input/InputHandler; == &getInputHandler
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.getSplitLine(Ljava/lang/String;)[Ljava/lang/String; == &getSplitLine
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initInputField()V == &initInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.initPopupMenu()V == &initPopupMenu
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V == &mouseClicked
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V == &mousePressed
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V == &mouseReleased
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.onAway(Ljava/lang/String;)V == &onAway
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.onBack()V == &onBack
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.open()V == &open
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.populatePopupMenu(Ljavax/swing/JComponent;Lcom/dmdirc/commandparser/PopupMenu;[Ljava/lang/Object;)Ljavax/swing/JComponent; == &populatePopupMenu
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.popuplateNicklistPopup(Ljava/lang/String;)V == &popuplateNicklistPopup
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.processMouseEvent(Ljava/awt/event/MouseEvent;)V == &processMouseEvent
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.requestInputFieldFocus()V == &requestInputFieldFocus
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setAwayIndicator(Z)V == &setAwayIndicator
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setInputField(Lcom/dmdirc/addons/ui_swing/components/SwingInputField;)V == &setInputField
    //#post(com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init): __Dispatch_Table.setInputHandler(Lcom/dmdirc/ui/input/InputHandler;)V == &setInputHandler
    //#InputTextFrame.java:: end of method: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame.com.dmdirc.addons.ui_swing.components.frames.InputTextFrame__static_init
    //#InputTextFrame.java:: end of class: com.dmdirc.addons.ui_swing.components.frames.InputTextFrame
