//# 3 errors, 1,326 messages
//#
/*
    //#CommandParser.java:1:1: class: com.dmdirc.commandparser.parsers.CommandParser
    //#CommandParser.java:1:1: method: com.dmdirc.commandparser.parsers.CommandParser.com.dmdirc.commandparser.parsers.CommandParser__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.commandparser.parsers;

import com.dmdirc.Server;
import com.dmdirc.actions.ActionManager;
import com.dmdirc.actions.CoreActionType;
import com.dmdirc.commandparser.CommandArguments;
import com.dmdirc.commandparser.CommandInfo;
import com.dmdirc.commandparser.CommandManager;
import com.dmdirc.commandparser.CommandType;
import com.dmdirc.commandparser.commands.Command;
import com.dmdirc.commandparser.commands.CommandOptions;
import com.dmdirc.commandparser.commands.ExternalCommand;
import com.dmdirc.commandparser.commands.PreviousCommand;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.ui.interfaces.InputWindow;
import com.dmdirc.util.RollingList;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

/**
 * Represents a generic command parser. A command parser takes a line of input
 * from the user, determines if it is an attempt at executing a command (based
 * on the character at the start of the string), and handles it appropriately.
 *
 * @author chris
 */
public abstract class CommandParser implements Serializable {

    /**
     * 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 = 1;

    /**
     * Commands that are associated with this parser.
     */
    private final Map<String, Command> commands;

    /**
     * A history of commands that have been entered into this parser.
     */
    private final RollingList<PreviousCommand> history;

    /** Creates a new instance of CommandParser. */
    public CommandParser() {
    //#CommandParser.java:72: method: void com.dmdirc.commandparser.parsers.CommandParser.com.dmdirc.commandparser.parsers.CommandParser()
    //#CommandParser.java:72: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void com.dmdirc.commandparser.parsers.CommandParser()
    //#    suspicious precondition index: [6]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): ""._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "."._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "<Unknown>"._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "@"._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "Config option not found: "._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "commandhistory"._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): "general"._tainted
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[com/dmdirc/commandparser/parsers/ChannelCommandParser]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[com/dmdirc/commandparser/parsers/GlobalCommandParser]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[com/dmdirc/commandparser/parsers/QueryCommandParser]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): __Dispatch_Table.loadCommands()V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandManager.commands
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandManager.parsers
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandType.TYPE_CHANNEL
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandType.TYPE_CHAT
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandType.TYPE_GLOBAL
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandType.TYPE_QUERY
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/CommandType.TYPE_SERVER
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/Command.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.loadCommands()V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.loadCommands()V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.loadCommands()V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.loadCommands()V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.__Dispatch_Table.getOptionInt(Ljava/lang/String;Ljava/lang/String;)I
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigManager.stats
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/ConfigSource]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigSource.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigSource.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigSource.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Dispatch_Table.getOption(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/Identity.__Dispatch_Table.hasOption(Ljava/lang/String;Ljava/lang/String;)Z
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig.__Lock
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig.file
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig.sources.__Lock
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.identities
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.managers
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): this
    //#input(void com.dmdirc.commandparser.parsers.CommandParser()): this.__Tag
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): java.lang.StringBuilder:toString(...)._tainted
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ArrayList(getSources#1) num objects
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ArrayList(getSources#1).__Lock
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).__Lock
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).channel
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).file
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).network
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).server
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).sources
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new Hashtable(CommandParser#1) num objects
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new MapList(ConfigManager#1) num objects
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): new RollingList(CommandParser#2) num objects
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): this.commands
    //#output(void com.dmdirc.commandparser.parsers.CommandParser()): this.history
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): java.lang.StringBuilder:toString(...)
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): new ArrayList(getSources#1)
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1)
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): new Hashtable(CommandParser#1)
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): new MapList(ConfigManager#1)
    //#new obj(void com.dmdirc.commandparser.parsers.CommandParser()): new RollingList(CommandParser#2)
    //#pre[4] (void com.dmdirc.commandparser.parsers.CommandParser()): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[6] (void com.dmdirc.commandparser.parsers.CommandParser()): this.__Tag in {com/dmdirc/commandparser/parsers/ChannelCommandParser, com/dmdirc/commandparser/parsers/CommandParser, com/dmdirc/commandparser/parsers/GlobalCommandParser, com/dmdirc/commandparser/parsers/QueryCommandParser, com/dmdirc/commandparser/parsers/ServerCommandParser}
    //#pre[1] (void com.dmdirc.commandparser.parsers.CommandParser()): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#presumption(void com.dmdirc.commandparser.parsers.CommandParser()): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig == One-of{old com/dmdirc/config/IdentityManager.globalconfig, &new ConfigManager(getGlobalConfig#1)}
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): this.commands == &new Hashtable(CommandParser#1)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): this.history == &new RollingList(CommandParser#2)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ArrayList(getSources#1) num objects <= 1
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new MapList(ConfigManager#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): init'ed(new ArrayList(getSources#1).__Lock)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): init'ed(new ConfigManager(getGlobalConfig#1).__Lock)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).__Tag == com/dmdirc/config/ConfigManager
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).channel == &java.lang.StringBuilder:toString(...)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): init'ed(new ConfigManager(getGlobalConfig#1).file)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).ircd == &""
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).network == &""
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).server == &""
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).listeners == &new MapList(ConfigManager#1)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new ConfigManager(getGlobalConfig#1).sources == &new ArrayList(getSources#1)
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new Hashtable(CommandParser#1) num objects == 1
    //#post(void com.dmdirc.commandparser.parsers.CommandParser()): new RollingList(CommandParser#2) num objects == 1
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:getName
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:getTarget
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:addListener
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:getSources
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:addConfigManager
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.Integer:intValue
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:hasOption
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:getOption
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.util.ConfigFile:getKeyDomain
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.util.ConfigFile:isKeyDomain
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:loadCommands
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:getType
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.commandparser.CommandType:equals
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void com.dmdirc.commandparser.parsers.CommandParser()): Effects-of-calling:com.dmdirc.util.MapList:add
        commands = new Hashtable<String, Command>();
        history = new RollingList<PreviousCommand>(
    //#CommandParser.java:74: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.RollingList(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void com.dmdirc.commandparser.parsers.CommandParser()
    //#    unanalyzed callee: void com.dmdirc.util.RollingList(int)
                IdentityManager.getGlobalConfig().getOptionInt("general",
                    "commandhistory"));
        loadCommands();
    }
    //#CommandParser.java:78: end of method: void com.dmdirc.commandparser.parsers.CommandParser.com.dmdirc.commandparser.parsers.CommandParser()

    /** Loads the relevant commands into the parser. */
    protected abstract void loadCommands();

    /**
     * Registers the specified command with this parser.
     *
     * @since 0.6.3m1
     * @param command Command to be registered
     * @param info The information the command should be registered with
     */
    public final void registerCommand(final Command command, final CommandInfo info) {
        commands.put(info.getName().toLowerCase(), command);
    //#CommandParser.java:91: method: void com.dmdirc.commandparser.parsers.CommandParser.registerCommand(Command, CommandInfo)
    //#CommandParser.java:91: ?null dereference
    //#    com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void registerCommand(Command, CommandInfo)
    //#    basic block: Entry_BB_1
    //#    assertion: com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag] != null
    //#    VN: com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#CommandParser.java:91: Warning: call too complex - analysis skipped
    //#    call on String getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void registerCommand(Command, CommandInfo)
    //#    unanalyzed callee: String getName()
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void registerCommand(Command, CommandInfo)): command
    //#input(void registerCommand(Command, CommandInfo)): info
    //#input(void registerCommand(Command, CommandInfo)): info.__Tag
    //#input(void registerCommand(Command, CommandInfo)): this
    //#input(void registerCommand(Command, CommandInfo)): this.commands
    //#pre[2] (void registerCommand(Command, CommandInfo)): info != null
    //#pre[5] (void registerCommand(Command, CommandInfo)): this.commands != null
    //#presumption(void registerCommand(Command, CommandInfo)): getName(...)@91 != null
    }
    //#CommandParser.java:92: end of method: void com.dmdirc.commandparser.parsers.CommandParser.registerCommand(Command, CommandInfo)

    /**
     * Unregisters the specified command with this parser.
     *
     * @param info Command information to be unregistered
     * @since 0.6.3m1
     */
    public final void unregisterCommand(final CommandInfo info) {
        commands.remove(info.getName().toLowerCase());
    //#CommandParser.java:101: method: void com.dmdirc.commandparser.parsers.CommandParser.unregisterCommand(CommandInfo)
    //#CommandParser.java:101: ?null dereference
    //#    com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void unregisterCommand(CommandInfo)
    //#    basic block: Entry_BB_1
    //#    assertion: com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag] != null
    //#    VN: com/dmdirc/commandparser/CommandInfo.__Descendant_Table[info.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#CommandParser.java:101: Warning: call too complex - analysis skipped
    //#    call on String getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void unregisterCommand(CommandInfo)
    //#    unanalyzed callee: String getName()
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void unregisterCommand(CommandInfo)): info
    //#input(void unregisterCommand(CommandInfo)): info.__Tag
    //#input(void unregisterCommand(CommandInfo)): this
    //#input(void unregisterCommand(CommandInfo)): this.commands
    //#pre[1] (void unregisterCommand(CommandInfo)): info != null
    //#pre[4] (void unregisterCommand(CommandInfo)): this.commands != null
    //#presumption(void unregisterCommand(CommandInfo)): getName(...)@101 != null
    }
    //#CommandParser.java:102: end of method: void com.dmdirc.commandparser.parsers.CommandParser.unregisterCommand(CommandInfo)

    /**
     * Retrieves a map of commands known by this command parser.
     *
     * @since 0.6.3m1
     * @return A map of commands known to this parser
     */
    public Map<String, Command> getCommands() {
        return new HashMap<String, Command>(commands);
    //#CommandParser.java:111: method: Map com.dmdirc.commandparser.parsers.CommandParser.getCommands()
    //#input(Map getCommands()): this
    //#input(Map getCommands()): this.commands
    //#output(Map getCommands()): new HashMap(getCommands#1) num objects
    //#output(Map getCommands()): return_value
    //#new obj(Map getCommands()): new HashMap(getCommands#1)
    //#post(Map getCommands()): return_value == &new HashMap(getCommands#1)
    //#post(Map getCommands()): new HashMap(getCommands#1) num objects == 1
    //#CommandParser.java:111: end of method: Map com.dmdirc.commandparser.parsers.CommandParser.getCommands()
    }

    /**
     * Parses the specified string as a command.
     *
     * @param origin The window in which the command was typed
     * @param line The line to be parsed
     * @param parseChannel Whether or not to try and parse the first argument
     * as a channel name
     */
    public final void parseCommand(final InputWindow origin,
            final String line, final boolean parseChannel) {
        final CommandArguments args = new CommandArguments(line);
    //#CommandParser.java:124: method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommand(InputWindow, String, bool)
    //#CommandParser.java:124: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    suspicious precondition index: [8]
    //#    Attribs:  Soft
    //#input(void parseCommand(InputWindow, String, bool)): " "._tainted
    //#input(void parseCommand(InputWindow, String, bool)): " :"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): ""._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "((\S+\s*){"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "(\S+\s*){"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "Invalid global command: "._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "MODE "._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "NAMES "._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "TOPIC "._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "unknownCommand"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "}"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): "}).*?"._tainted
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[com/dmdirc/commandparser/parsers/ChannelCommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[com/dmdirc/commandparser/parsers/GlobalCommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[com/dmdirc/commandparser/parsers/QueryCommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): __Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): __Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): __Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): __Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String, bool)): com.dmdirc.actions.CoreActionType.UNKNOWN_COMMAND
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[com/dmdirc/commandparser/CommandArguments]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArguments()[Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArgumentsAsString()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArgumentsAsString(I)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getCommandName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getStrippedLine()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWords()[Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWordsAsString(I)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWordsAsString(II)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isCommand()Z
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isSilent()Z
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.parse()V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandManager.commandChar
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandManager.commands
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandManager.silenceChar
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandType.TYPE_CHANNEL
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandType.TYPE_CHAT
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandType.TYPE_GLOBAL
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandType.TYPE_QUERY
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/CommandType.TYPE_SERVER
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ChannelCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Ban]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ChannelSettings]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Cycle]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/KickReason]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Mode]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Names]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Part]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/SetNickColour]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ShowTopic]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ChatCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[com/dmdirc/commandparser/commands/chat/Me]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/MessageTarget;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/Command.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[com/dmdirc/commandparser/commands/CommandOptions]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/CommandOptions.__Dispatch_Table.allowOffline()Z
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ExternalCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Mode]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Names]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ShowTopic]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ExternalCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/GlobalCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/QueryCommand.__Descendant_Table[com/dmdirc/commandparser/commands/QueryCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/QueryCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Query;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ServerCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/AllChannels]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Away]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Back]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/ChangeServer]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Ctcp]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Disconnect]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Ignore]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/JoinChannelCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Message]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Nick]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Notice]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/OpenQuery]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/RawServerCommand]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Raw]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Reconnect]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Umode]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/MessageTarget;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/GlobalCommandParser.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.getCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Lcom/dmdirc/commandparser/commands/CommandOptions;
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.hasCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Z
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.com.dmdirc.ServerState.CONNECTED
    //#input(void parseCommand(InputWindow, String, bool)): com/dmdirc/commandparser/parsers/ServerCommandParser.com.dmdirc.ServerState.CONNECTING
    //#input(void parseCommand(InputWindow, String, bool)): line
    //#input(void parseCommand(InputWindow, String, bool)): line._tainted
    //#input(void parseCommand(InputWindow, String, bool)): origin
    //#input(void parseCommand(InputWindow, String, bool)): parseChannel
    //#input(void parseCommand(InputWindow, String, bool)): this
    //#input(void parseCommand(InputWindow, String, bool)): this.__Tag
    //#input(void parseCommand(InputWindow, String, bool)): this.channel
    //#input(void parseCommand(InputWindow, String, bool)): this.commands
    //#input(void parseCommand(InputWindow, String, bool)): this.history
    //#input(void parseCommand(InputWindow, String, bool)): this.query
    //#input(void parseCommand(InputWindow, String, bool)): this.server
    //#pre[3] (void parseCommand(InputWindow, String, bool)): line != null
    //#pre[1] (void parseCommand(InputWindow, String, bool)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
    //#pre[2] (void parseCommand(InputWindow, String, bool)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.silenceChar)
    //#pre[8] (void parseCommand(InputWindow, String, bool)): (soft) this.__Tag in {com/dmdirc/commandparser/parsers/ChannelCommandParser, com/dmdirc/commandparser/parsers/CommandParser, com/dmdirc/commandparser/parsers/GlobalCommandParser, com/dmdirc/commandparser/parsers/QueryCommandParser, com/dmdirc/commandparser/parsers/ServerCommandParser}
    //#pre[10] (void parseCommand(InputWindow, String, bool)): (soft) this.commands != null
    //#pre[11] (void parseCommand(InputWindow, String, bool)): (soft) this.history != null
    //#presumption(void parseCommand(InputWindow, String, bool)): args.words.length@131 <= 4_294_967_295
    //#presumption(void parseCommand(InputWindow, String, bool)): args.words.length@139 <= 4_294_967_295
    //#presumption(void parseCommand(InputWindow, String, bool)): cargs.length@131 >= 1
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.Channel:getFrame(...)@139 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.Server:getChannel(...)@139 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@131 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@136 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getCommandParser(...).__Tag@139 in {com/dmdirc/commandparser/parsers/ChannelCommandParser, com/dmdirc/commandparser/parsers/CommandParser, com/dmdirc/commandparser/parsers/GlobalCommandParser, com/dmdirc/commandparser/parsers/QueryCommandParser, com/dmdirc/commandparser/parsers/ServerCommandParser}
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getCommandParser(...).commands@139 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getCommandParser(...).history@139 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getCommandParser(...)@139 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@131 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@131 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@136 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): java.util.Map$Entry:getValue(...).__Tag@148 in {com/dmdirc/commandparser/commands/ExternalCommand, com/dmdirc/commandparser/commands/channel/Mode, com/dmdirc/commandparser/commands/channel/Names, com/dmdirc/commandparser/commands/channel/ShowTopic}
    //#presumption(void parseCommand(InputWindow, String, bool)): java.util.Map:get(...)@158 != null
    //#presumption(void parseCommand(InputWindow, String, bool)): java.util.Map_Entry:getValue(...)@148 != null
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Date
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.util.RollingList:remove
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.util.RollingList:add
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.Class:getAnnotation
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.Class:isAnnotationPresent
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getName
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:handleNonCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Query:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Channel:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:parseCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.commandparser.CommandArguments
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:isCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:isSilent
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getCommandName
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getArguments
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getContainer
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:isValidChannelName
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:isChannelCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:hasChannel
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:getChannel
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Channel:getFrame
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getCommandParser
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getCommandChar
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getWordsAsString
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:execute
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getStrippedLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:executeCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:hasCommandOptions
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getCommandOptions
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:allowOffline
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:getState
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.Server:getParser
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:handleInvalidCommand
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.actions.ActionManager:processEvent
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getType
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.commandparser.CommandType:equals
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.Map:isEmpty
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.regex.Pattern:compile
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.regex.Matcher:matches
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.util.regex.Matcher:group
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:getArgumentsAsString
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:showUsage
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:com.dmdirc.MessageTarget:sendAction
    //#unanalyzed(void parseCommand(InputWindow, String, bool)): Effects-of-calling:java.lang.Character:valueOf
    //#test_vector(void parseCommand(InputWindow, String, bool)): origin: Addr_Set{null}, Inverse{null}
    //#test_vector(void parseCommand(InputWindow, String, bool)): parseChannel: {0}, {1}
    //#test_vector(void parseCommand(InputWindow, String, bool)): com.dmdirc.Server:hasChannel(...)@138: {0}, {1}
    //#test_vector(void parseCommand(InputWindow, String, bool)): com.dmdirc.Server:isValidChannelName(...)@131: {0}, {1}
    //#test_vector(void parseCommand(InputWindow, String, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@131: Addr_Set{null}, Inverse{null}
    //#test_vector(void parseCommand(InputWindow, String, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@131: Addr_Set{null}, Inverse{null}
    //#test_vector(void parseCommand(InputWindow, String, bool)): getArguments(...).length@131: {0}, {1..+Inf}
    //#test_vector(void parseCommand(InputWindow, String, bool)): java.util.Map:containsKey(...)@156: {0}, {1}

        if (args.isCommand()) {
            final boolean silent = args.isSilent();
            final String command = args.getCommandName();
            final String[] cargs = args.getArguments();

            if (args.getArguments().length > 0 && parseChannel && origin != null
    //#CommandParser.java:131: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#CommandParser.java:131: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#CommandParser.java:131: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.Server:isValidChannelName(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: bool com.dmdirc.Server:isValidChannelName(String)
                    && origin.getContainer() != null
                    && origin.getContainer().getServer() != null
                    && origin.getContainer().getServer().isValidChannelName(cargs[0])
                    && CommandManager.isChannelCommand(command)) {
                final Server server = origin.getContainer().getServer();
    //#CommandParser.java:136: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#CommandParser.java:136: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()

                if (server.hasChannel(cargs[0])) {
    //#CommandParser.java:138: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.Server:hasChannel(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: bool com.dmdirc.Server:hasChannel(String)
                    server.getChannel(cargs[0]).getFrame().getCommandParser()
    //#CommandParser.java:139: Warning: method not available - call not analyzed
    //#    call on Channel com.dmdirc.Server:getChannel(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: Channel com.dmdirc.Server:getChannel(String)
    //#CommandParser.java:139: Warning: method not available - call not analyzed
    //#    call on InputWindow com.dmdirc.Channel:getFrame()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: InputWindow com.dmdirc.Channel:getFrame()
    //#CommandParser.java:139: Warning: method not available - call not analyzed
    //#    call on CommandParser com.dmdirc.ui.interfaces.InputWindow:getCommandParser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    unanalyzed callee: CommandParser com.dmdirc.ui.interfaces.InputWindow:getCommandParser()
                            .parseCommand(origin, CommandManager.getCommandChar()
                            + args.getCommandName() + " " + args.getWordsAsString(2), false);
                    return;
                } else {
                    final Map.Entry<CommandInfo, Command> actCommand = CommandManager.getCommand(
                            CommandType.TYPE_CHANNEL, command);

                    if (actCommand != null && actCommand.getValue() instanceof ExternalCommand) {
                        ((ExternalCommand) actCommand.getValue()).execute(
                                origin, server, cargs[0], silent,
                                new CommandArguments(args.getWordsAsString(2)));
                        return;
                    }
                }
            }

            if (commands.containsKey(command.toLowerCase())) {
                addHistory(args.getStrippedLine());
                executeCommand(origin, silent, commands.get(command.toLowerCase()), args);
    //#CommandParser.java:158: ?ClassCastException check
    //#    com/dmdirc/commandparser/commands/Command.__Descendant_Table[java/util/Map:get(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String, bool)
    //#    basic block: bb_25
    //#    assertion: com/dmdirc/commandparser/commands/Command.__Descendant_Table[java/util/Map:get(...).__Tag] != null
    //#    VN: !(com/dmdirc/commandparser/commands/Command.__Descendant_Table[java.util.Map:get(...).__Tag] == null)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
           } else {
                handleInvalidCommand(origin, args);
            }
        } else {
            handleNonCommand(origin, line);
        }
    }
    //#CommandParser.java:165: end of method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommand(InputWindow, String, bool)

    /**
     * Adds a command to this parser's history.
     *
     * @param command The command name and arguments that were used
     */
    private void addHistory(final String command) {
        synchronized(history) {
    //#CommandParser.java:173: method: void com.dmdirc.commandparser.parsers.CommandParser.addHistory(String)
    //#input(void addHistory(String)): command
    //#input(void addHistory(String)): this
    //#input(void addHistory(String)): this.history
    //#input(void addHistory(String)): this.history.__Lock
    //#pre[3] (void addHistory(String)): this.history != null
    //#unanalyzed(void addHistory(String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void addHistory(String)): Effects-of-calling:java.util.Date:getTime
            final PreviousCommand pc = new PreviousCommand(command);
            history.remove(pc);
    //#CommandParser.java:175: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.util.RollingList:remove(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void addHistory(String)
    //#    unanalyzed callee: bool com.dmdirc.util.RollingList:remove(Object)
            history.add(pc);
    //#CommandParser.java:176: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.util.RollingList:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void addHistory(String)
    //#    unanalyzed callee: bool com.dmdirc.util.RollingList:add(Object)
        }
    }
    //#CommandParser.java:178: end of method: void com.dmdirc.commandparser.parsers.CommandParser.addHistory(String)

    /**
     * Retrieves the most recent time that the specified command was used.
     * Commands should not include command or silence chars.
     *
     * @param command The command to search for
     * @return The timestamp that the command was used, or 0 if it wasn't
     */
    public long getCommandTime(final String command) {
        long res = 0;
    //#CommandParser.java:188: method: long com.dmdirc.commandparser.parsers.CommandParser.getCommandTime(String)
    //#input(long getCommandTime(String)): "(?i)"._tainted
    //#input(long getCommandTime(String)): com/dmdirc/commandparser/commands/PreviousCommand.__Descendant_Table[com/dmdirc/commandparser/commands/PreviousCommand]
    //#input(long getCommandTime(String)): com/dmdirc/commandparser/commands/PreviousCommand.__Descendant_Table[others]
    //#input(long getCommandTime(String)): command
    //#input(long getCommandTime(String)): command._tainted
    //#input(long getCommandTime(String)): this
    //#input(long getCommandTime(String)): this.history
    //#input(long getCommandTime(String)): this.history.__Lock
    //#output(long getCommandTime(String)): return_value
    //#pre[4] (long getCommandTime(String)): this.history != null
    //#presumption(long getCommandTime(String)): com.dmdirc.util.RollingList:getList(...)@191 != null
    //#presumption(long getCommandTime(String)): java.util.Iterator:next(...).__Tag@191 == com/dmdirc/commandparser/commands/PreviousCommand
    //#presumption(long getCommandTime(String)): java.util.Iterator:next(...)@191 != null
    //#presumption(long getCommandTime(String)): pc.line@191 != null
    //#post(long getCommandTime(String)): init'ed(return_value)
    //#test_vector(long getCommandTime(String)): java.lang.String:matches(...)@192: {0}, {1}
    //#test_vector(long getCommandTime(String)): java.util.Iterator:hasNext(...)@191: {1}, {0}

        synchronized(history) {
            for (PreviousCommand pc : history.getList()) {
    //#CommandParser.java:191: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.RollingList:getList()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: long getCommandTime(String)
    //#    unanalyzed callee: List com.dmdirc.util.RollingList:getList()
                if (pc.getLine().matches("(?i)" + command)) {
                    res = Math.max(res, pc.getTime());
                }
            }
        }

        return res;
    //#CommandParser.java:198: end of method: long com.dmdirc.commandparser.parsers.CommandParser.getCommandTime(String)
    }

    /**
     * Parses the specified string as a command.
     *
     * @param origin The window in which the command was typed
     * @param line The line to be parsed
     */
    public final void parseCommand(final InputWindow origin,
            final String line) {
        parseCommand(origin, line, true);
    //#CommandParser.java:209: method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommand(InputWindow, String)
    //#CommandParser.java:209: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommand(InputWindow, String)
    //#    suspicious precondition index: [7]
    //#    Attribs:  Soft
    //#input(void parseCommand(InputWindow, String)): " "._tainted
    //#input(void parseCommand(InputWindow, String)): " :"._tainted
    //#input(void parseCommand(InputWindow, String)): ""._tainted
    //#input(void parseCommand(InputWindow, String)): "((\S+\s*){"._tainted
    //#input(void parseCommand(InputWindow, String)): "(\S+\s*){"._tainted
    //#input(void parseCommand(InputWindow, String)): "Invalid global command: "._tainted
    //#input(void parseCommand(InputWindow, String)): "MODE "._tainted
    //#input(void parseCommand(InputWindow, String)): "NAMES "._tainted
    //#input(void parseCommand(InputWindow, String)): "TOPIC "._tainted
    //#input(void parseCommand(InputWindow, String)): "unknownCommand"._tainted
    //#input(void parseCommand(InputWindow, String)): "}"._tainted
    //#input(void parseCommand(InputWindow, String)): "}).*?"._tainted
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/ChannelCommandParser]
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/GlobalCommandParser]
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/QueryCommandParser]
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void parseCommand(InputWindow, String)): __Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): __Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): __Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): __Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String)): com.dmdirc.actions.CoreActionType.UNKNOWN_COMMAND
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[com/dmdirc/commandparser/CommandArguments]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArguments()[Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArgumentsAsString()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArgumentsAsString(I)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getCommandName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getStrippedLine()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWords()[Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWordsAsString(I)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWordsAsString(II)Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isCommand()Z
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isSilent()Z
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.parse()V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandManager.commandChar
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandManager.commands
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandManager.silenceChar
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandType.TYPE_CHANNEL
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandType.TYPE_CHAT
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandType.TYPE_GLOBAL
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandType.TYPE_QUERY
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/CommandType.TYPE_SERVER
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ChannelCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Ban]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ChannelSettings]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Cycle]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/KickReason]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Mode]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Names]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Part]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/SetNickColour]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ShowTopic]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ChatCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[com/dmdirc/commandparser/commands/chat/Me]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/MessageTarget;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/Command.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[com/dmdirc/commandparser/commands/CommandOptions]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/CommandOptions.__Dispatch_Table.allowOffline()Z
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ExternalCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Mode]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/Names]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/channel/ShowTopic]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ExternalCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/GlobalCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/QueryCommand.__Descendant_Table[com/dmdirc/commandparser/commands/QueryCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/QueryCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Query;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/ServerCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/AllChannels]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Away]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Back]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/ChangeServer]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Ctcp]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Disconnect]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Ignore]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/JoinChannelCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Message]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Nick]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Notice]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/OpenQuery]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/RawServerCommand]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Raw]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Reconnect]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[com/dmdirc/commandparser/commands/server/Umode]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/Channel;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Ljava/lang/String;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;Lcom/dmdirc/MessageTarget;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Debug.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/Server;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Descendant_Table[others]
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.getCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Lcom/dmdirc/commandparser/commands/CommandOptions;
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.hasCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Z
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.com.dmdirc.ServerState.CONNECTED
    //#input(void parseCommand(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.com.dmdirc.ServerState.CONNECTING
    //#input(void parseCommand(InputWindow, String)): line
    //#input(void parseCommand(InputWindow, String)): line._tainted
    //#input(void parseCommand(InputWindow, String)): origin
    //#input(void parseCommand(InputWindow, String)): this
    //#input(void parseCommand(InputWindow, String)): this.__Tag
    //#input(void parseCommand(InputWindow, String)): this.channel
    //#input(void parseCommand(InputWindow, String)): this.commands
    //#input(void parseCommand(InputWindow, String)): this.history
    //#input(void parseCommand(InputWindow, String)): this.query
    //#input(void parseCommand(InputWindow, String)): this.server
    //#pre[3] (void parseCommand(InputWindow, String)): line != null
    //#pre[1] (void parseCommand(InputWindow, String)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
    //#pre[2] (void parseCommand(InputWindow, String)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.silenceChar)
    //#pre[7] (void parseCommand(InputWindow, String)): (soft) this.__Tag in {com/dmdirc/commandparser/parsers/ChannelCommandParser, com/dmdirc/commandparser/parsers/CommandParser, com/dmdirc/commandparser/parsers/GlobalCommandParser, com/dmdirc/commandparser/parsers/QueryCommandParser, com/dmdirc/commandparser/parsers/ServerCommandParser}
    //#pre[9] (void parseCommand(InputWindow, String)): (soft) this.commands != null
    //#pre[10] (void parseCommand(InputWindow, String)): (soft) this.history != null
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.util.RollingList:remove
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.util.RollingList:add
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.Class:getAnnotation
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.Class:isAnnotationPresent
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getName
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:handleNonCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Query:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Channel:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:parseCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.commandparser.CommandArguments
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:isCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:isSilent
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getCommandName
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getArguments
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getContainer
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:isValidChannelName
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:isChannelCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:hasChannel
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:getChannel
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Channel:getFrame
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getCommandParser
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getCommandChar
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getWordsAsString
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:execute
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getStrippedLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:executeCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:hasCommandOptions
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getCommandOptions
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:allowOffline
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:getState
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:getParser
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:handleInvalidCommand
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.actions.ActionManager:processEvent
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getType
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.commandparser.CommandType:equals
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.Map:isEmpty
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.regex.Pattern:compile
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.regex.Matcher:matches
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.util.regex.Matcher:group
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:sendLine
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:getArgumentsAsString
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:showUsage
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:com.dmdirc.MessageTarget:sendAction
    //#unanalyzed(void parseCommand(InputWindow, String)): Effects-of-calling:java.lang.Character:valueOf
    }
    //#CommandParser.java:210: end of method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommand(InputWindow, String)

    /**
     * Handles the specified string as a non-command.
     *
     * @param origin The window in which the command was typed
     * @param line The line to be parsed
     */
    public final void parseCommandCtrl(final InputWindow origin, final String line) {
        handleNonCommand(origin, line);
    //#CommandParser.java:219: method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommandCtrl(InputWindow, String)
    //#CommandParser.java:219: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void parseCommandCtrl(InputWindow, String)
    //#    suspicious precondition index: [5]
    //#input(void parseCommandCtrl(InputWindow, String)): "Invalid global command: "._tainted
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/ChannelCommandParser]
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/GlobalCommandParser]
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/QueryCommandParser]
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void parseCommandCtrl(InputWindow, String)): __Descendant_Table[others]
    //#input(void parseCommandCtrl(InputWindow, String)): __Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommandCtrl(InputWindow, String)): com/dmdirc/commandparser/parsers/ChannelCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommandCtrl(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommandCtrl(InputWindow, String)): com/dmdirc/commandparser/parsers/GlobalCommandParser.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void parseCommandCtrl(InputWindow, String)): com/dmdirc/commandparser/parsers/QueryCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommandCtrl(InputWindow, String)): com/dmdirc/commandparser/parsers/ServerCommandParser.__Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#input(void parseCommandCtrl(InputWindow, String)): line
    //#input(void parseCommandCtrl(InputWindow, String)): line._tainted
    //#input(void parseCommandCtrl(InputWindow, String)): origin
    //#input(void parseCommandCtrl(InputWindow, String)): this
    //#input(void parseCommandCtrl(InputWindow, String)): this.__Tag
    //#input(void parseCommandCtrl(InputWindow, String)): this.channel
    //#input(void parseCommandCtrl(InputWindow, String)): this.query
    //#input(void parseCommandCtrl(InputWindow, String)): this.server
    //#pre[5] (void parseCommandCtrl(InputWindow, String)): this.__Tag in {com/dmdirc/commandparser/parsers/ChannelCommandParser, com/dmdirc/commandparser/parsers/CommandParser, com/dmdirc/commandparser/parsers/GlobalCommandParser, com/dmdirc/commandparser/parsers/QueryCommandParser, com/dmdirc/commandparser/parsers/ServerCommandParser}
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:com.dmdirc.Server:sendLine
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:com.dmdirc.Query:sendLine
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:com.dmdirc.Channel:sendLine
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void parseCommandCtrl(InputWindow, String)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    }
    //#CommandParser.java:220: end of method: void com.dmdirc.commandparser.parsers.CommandParser.parseCommandCtrl(InputWindow, String)

    /**
     * Executes the specified command with the given arguments.
     *
     * @param origin The window in which the command was typed
     * @param isSilent Whether the command is being silenced or not
     * @param command The command to be executed
     * @param args The arguments to the command
     * @since 0.6.3m1
     */
    protected abstract void executeCommand(final InputWindow origin,
            final boolean isSilent, final Command command, final CommandArguments args);

    /**
     * Called when the user attempted to issue a command (i.e., used the command
     * character) that wasn't found. It could be that the command has a different
     * arity, or that it plain doesn't exist.
     *
     * @param origin The window in which the command was typed
     * @param args The arguments passed to the command
     * @since 0.6.3m1
     */
    protected void handleInvalidCommand(final InputWindow origin,
            final CommandArguments args) {
        if (origin == null) {
    //#CommandParser.java:245: method: void com.dmdirc.commandparser.parsers.CommandParser.handleInvalidCommand(InputWindow, CommandArguments)
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): "unknownCommand"._tainted
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.__Tag
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.line
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.line._tainted
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.words
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.words.length
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): args.words[0]._tainted
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com.dmdirc.actions.CoreActionType.UNKNOWN_COMMAND
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[com/dmdirc/commandparser/CommandArguments]
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[others]
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArguments()[Ljava/lang/String;
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getCommandName()Ljava/lang/String;
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getWords()[Ljava/lang/String;
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isCommand()Z
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.isSilent()Z
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.parse()V
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandManager.commandChar
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): com/dmdirc/commandparser/CommandManager.silenceChar
    //#input(void handleInvalidCommand(InputWindow, CommandArguments)): origin
    //#output(void handleInvalidCommand(InputWindow, CommandArguments)): args.words
    //#output(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)._tainted
    //#output(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...).length
    //#output(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)[0]
    //#output(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)[0]._tainted
    //#new obj(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)
    //#pre[1] (void handleInvalidCommand(InputWindow, CommandArguments)): args != null
    //#pre[3] (void handleInvalidCommand(InputWindow, CommandArguments)): args.__Tag == com/dmdirc/commandparser/CommandArguments
    //#pre[4] (void handleInvalidCommand(InputWindow, CommandArguments)): args.line != null
    //#pre[11] (void handleInvalidCommand(InputWindow, CommandArguments)): init'ed(args.words)
    //#pre[9] (void handleInvalidCommand(InputWindow, CommandArguments)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
    //#pre[10] (void handleInvalidCommand(InputWindow, CommandArguments)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.silenceChar)
    //#presumption(void handleInvalidCommand(InputWindow, CommandArguments)): init'ed(com.dmdirc.actions.CoreActionType.UNKNOWN_COMMAND)
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): args.words != null
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): init'ed(java.lang.String:split(...)._tainted)
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)._tainted == 0
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): init'ed(java.lang.String:split(...).length)
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): init'ed(java.lang.String:split(...)[0])
    //#post(void handleInvalidCommand(InputWindow, CommandArguments)): java.lang.String:split(...)[0]._tainted == 0
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void handleInvalidCommand(InputWindow, CommandArguments)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#test_vector(void handleInvalidCommand(InputWindow, CommandArguments)): origin: Inverse{null}, Addr_Set{null}
            ActionManager.processEvent(CoreActionType.UNKNOWN_COMMAND, null,
    //#CommandParser.java:246: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void handleInvalidCommand(InputWindow, CommandArguments)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
                    null, args.getCommandName(), args.getArguments());
        } else {
            final StringBuffer buff = new StringBuffer("unknownCommand");

            ActionManager.processEvent(CoreActionType.UNKNOWN_COMMAND, buff,
    //#CommandParser.java:251: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void handleInvalidCommand(InputWindow, CommandArguments)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#CommandParser.java:251: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void handleInvalidCommand(InputWindow, CommandArguments)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:processEvent(ActionType, StringBuffer, Object[])
                    origin.getContainer(), args.getCommandName(), args.getArguments());

            origin.addLine(buff, args.getCommandName());
    //#CommandParser.java:254: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.InputWindow:addLine(StringBuffer, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.parsers.CommandParser
    //#    method: void handleInvalidCommand(InputWindow, CommandArguments)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.InputWindow:addLine(StringBuffer, Object[])
        }
    }
    //#CommandParser.java:256: end of method: void com.dmdirc.commandparser.parsers.CommandParser.handleInvalidCommand(InputWindow, CommandArguments)

    /**
     * Called when the input was a line of text that was not a command. This normally
     * means it is sent to the server/channel/user as-is, with no further processing.
     *
     * @param origin The window in which the command was typed
     * @param line The line input by the user
     */
    protected abstract void handleNonCommand(final InputWindow origin,
            final String line);

    /**
     * Determines if the specified command has defined any command options.
     *
     * @param command The command to investigate
     * @return True if the command defines options, false otherwise
     */
    protected boolean hasCommandOptions(final Command command) {
        return command.getClass().isAnnotationPresent(CommandOptions.class);
    //#CommandParser.java:275: method: bool com.dmdirc.commandparser.parsers.CommandParser.hasCommandOptions(Command)
    //#input(bool hasCommandOptions(Command)): command
    //#output(bool hasCommandOptions(Command)): return_value
    //#pre[1] (bool hasCommandOptions(Command)): command != null
    //#presumption(bool hasCommandOptions(Command)): java.lang.Object:getClass(...)@275 != null
    //#post(bool hasCommandOptions(Command)): init'ed(return_value)
    //#CommandParser.java:275: end of method: bool com.dmdirc.commandparser.parsers.CommandParser.hasCommandOptions(Command)
    }

    /**
     * Retrieves the command options for the specified command. If the command
     * does not define options, this method will return null.
     *
     * @param command The command whose options should be retrieved
     * @return The command's options, or null if not available
     */
    protected CommandOptions getCommandOptions(final Command command) {
        return command.getClass().getAnnotation(CommandOptions.class);
    //#CommandParser.java:286: method: CommandOptions com.dmdirc.commandparser.parsers.CommandParser.getCommandOptions(Command)
    //#input(CommandOptions getCommandOptions(Command)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[com/dmdirc/commandparser/commands/CommandOptions]
    //#input(CommandOptions getCommandOptions(Command)): com/dmdirc/commandparser/commands/CommandOptions.__Descendant_Table[others]
    //#input(CommandOptions getCommandOptions(Command)): command
    //#output(CommandOptions getCommandOptions(Command)): return_value
    //#pre[1] (CommandOptions getCommandOptions(Command)): command != null
    //#presumption(CommandOptions getCommandOptions(Command)): java.lang.Class:getAnnotation(...).__Tag@286 == com/dmdirc/commandparser/commands/CommandOptions
    //#presumption(CommandOptions getCommandOptions(Command)): java.lang.Object:getClass(...)@286 != null
    //#post(CommandOptions getCommandOptions(Command)): init'ed(return_value)
    //#CommandParser.java:286: end of method: CommandOptions com.dmdirc.commandparser.parsers.CommandParser.getCommandOptions(Command)
    }
}
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.addHistory(Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Lcom/dmdirc/commandparser/commands/CommandOptions;
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommandTime(Ljava/lang/String;)J
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommands()Ljava/util/Map;
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.hasCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Z
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.loadCommands()V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;Z)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommandCtrl(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.registerCommand(Lcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandInfo;)V
    //#output(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.unregisterCommand(Lcom/dmdirc/commandparser/CommandInfo;)V
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.addHistory(Ljava/lang/String;)V == &addHistory
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.executeCommand(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandArguments;)V == &executeCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Lcom/dmdirc/commandparser/commands/CommandOptions; == &getCommandOptions
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommandTime(Ljava/lang/String;)J == &getCommandTime
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.getCommands()Ljava/util/Map; == &getCommands
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.handleInvalidCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Lcom/dmdirc/commandparser/CommandArguments;)V == &handleInvalidCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.handleNonCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V == &handleNonCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.hasCommandOptions(Lcom/dmdirc/commandparser/commands/Command;)Z == &hasCommandOptions
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.loadCommands()V == &loadCommands
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V == &parseCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommand(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;Z)V == &parseCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.parseCommandCtrl(Lcom/dmdirc/ui/interfaces/InputWindow;Ljava/lang/String;)V == &parseCommandCtrl
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.registerCommand(Lcom/dmdirc/commandparser/commands/Command;Lcom/dmdirc/commandparser/CommandInfo;)V == &registerCommand
    //#post(com.dmdirc.commandparser.parsers.CommandParser__static_init): __Dispatch_Table.unregisterCommand(Lcom/dmdirc/commandparser/CommandInfo;)V == &unregisterCommand
    //#CommandParser.java:: end of method: com.dmdirc.commandparser.parsers.CommandParser.com.dmdirc.commandparser.parsers.CommandParser__static_init
    //#CommandParser.java:: end of class: com.dmdirc.commandparser.parsers.CommandParser
