//# 0 errors, 865 messages
//#
/*
    //#Debug.java:1:1: class: com.dmdirc.commandparser.commands.global.Debug$ValueComparator
    //#Debug.java:1:1: method: com.dmdirc.commandparser.commands.global.Debug$ValueComparator.com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init
    //#Debug.java:1:1: class: com.dmdirc.commandparser.commands.global.Debug
    //#Debug.java:1:1: method: com.dmdirc.commandparser.commands.global.Debug.com.dmdirc.commandparser.commands.global.Debug__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.commands.global;

import com.dmdirc.Main;
import com.dmdirc.Server;
import com.dmdirc.commandparser.CommandArguments;
import com.dmdirc.commandparser.CommandManager;
import com.dmdirc.commandparser.commands.GlobalCommand;
import com.dmdirc.commandparser.commands.IntelligentCommand;
import com.dmdirc.config.ConfigManager;
import com.dmdirc.config.Identity;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.plugins.PluginManager;
import com.dmdirc.plugins.Service;
import com.dmdirc.plugins.ServiceProvider;
import com.dmdirc.ui.input.AdditionalTabTargets;
import com.dmdirc.ui.interfaces.InputWindow;
import com.dmdirc.ui.messages.Styliser;
import com.dmdirc.updater.UpdateChecker;

import java.io.Serializable;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeSet;

/**
 * Provides various handy ways to test or debug the client.
 *
 * @author Chris
 */
public class Debug extends GlobalCommand implements IntelligentCommand {
    
    /**
     * Creates a new instance of Debug.
     */
    public Debug() {
    //#Debug.java:61: method: void com.dmdirc.commandparser.commands.global.Debug.com.dmdirc.commandparser.commands.global.Debug()
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): __Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): __Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/addons/urlcatcher/UrlListCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandInfo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandManager.com.dmdirc.ui.input.TabCompletionType.COMMAND
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandManager.commandChar
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandManager.commands
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandManager.parsers
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandType.TYPE_CHANNEL
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandType.TYPE_CHAT
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandType.TYPE_GLOBAL
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandType.TYPE_QUERY
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/CommandType.TYPE_SERVER
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ChatCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/GlobalCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/QueryCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/ServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Ban.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/ChannelSettings.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Cycle.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/KickReason.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Mode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Names.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/Part.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/SetNickColour.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/channel/ShowTopic.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/chat/Me.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Active.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/AliasCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/AllServers.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Clear.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Echo.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Exit.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Help.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Ifplugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/LoadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/NewServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Notify.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/OpenWindow.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadActions.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadIdentities.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/ReloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/SaveConfig.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/Set.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/global/UnloadPlugin.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/AllChannels.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Away.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Back.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/ChangeServer.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Ctcp.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Disconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Ignore.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/JoinChannelCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Message.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Nick.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Notice.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/OpenQuery.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Raw.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/RawServerCommand.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Reconnect.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/commands/server/Umode.__Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/ChannelCommandParser]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/CommandParser]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/GlobalCommandParser]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/QueryCommandParser]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[com/dmdirc/commandparser/parsers/ServerCommandParser]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): com/dmdirc/commandparser/parsers/CommandParser.__Descendant_Table[others]
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): this
    //#input(void com.dmdirc.commandparser.commands.global.Debug()): this.__Tag
    //#output(void com.dmdirc.commandparser.commands.global.Debug()): this.__Tag
    //#pre[1] (void com.dmdirc.commandparser.commands.global.Debug()): init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
    //#post(void com.dmdirc.commandparser.commands.global.Debug()): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.commandparser.commands.global.Debug()): init'ed(this.__Tag)
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:getName
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:addEntry
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.ServerManager:getServerManager
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.ServerManager:getServers
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:getType
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Server:getTabCompleter
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Server:getChannels
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Server:getChannel
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Channel:getTabCompleter
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Server:getQueries
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.Query:getTabCompleter
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.util.MapList:containsKey
    //#unanalyzed(void com.dmdirc.commandparser.commands.global.Debug()): Effects-of-calling:com.dmdirc.util.MapList:get
        CommandManager.registerCommand(this);
    }
    //#Debug.java:63: end of method: void com.dmdirc.commandparser.commands.global.Debug.com.dmdirc.commandparser.commands.global.Debug()
    
    /** {@inheritDoc} */
    @Override
    public void execute(final InputWindow origin, final boolean isSilent,
            final CommandArguments args) {
        if (args.getArguments().length == 0) {
    //#Debug.java:69: method: void com.dmdirc.commandparser.commands.global.Debug.execute(InputWindow, bool, CommandArguments)
    //#input(void execute(InputWindow, bool, CommandArguments)): "            "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "    "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): " "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): " - "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): " [Active: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): " nanoseconds."._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): ""._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "&#17;    "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "("._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): ")"._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): ": "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "<Unknown>"._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "@"._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Actual name: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Current notification colour is: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Free Memory: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "IRCd: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Iteration "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Modes: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Network: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Server name: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Total Memory: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "Used Memory: "._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): "]"._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): args
    //#input(void execute(InputWindow, bool, CommandArguments)): args.__Tag
    //#input(void execute(InputWindow, bool, CommandArguments)): args.line
    //#input(void execute(InputWindow, bool, CommandArguments)): args.line._tainted
    //#input(void execute(InputWindow, bool, CommandArguments)): args.words
    //#input(void execute(InputWindow, bool, CommandArguments)): args.words.length
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.logger.ErrorLevel.FATAL
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.logger.ErrorLevel.LOW
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.logger.ErrorLevel.UNKNOWN
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[com/dmdirc/commandparser/CommandArguments]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Descendant_Table[others]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.getArguments()[Ljava/lang/String;
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/commandparser/CommandArguments.__Dispatch_Table.parse()V
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/commandparser/CommandManager.commandChar
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getSources()Ljava/util/List;
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigManager.stats
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getOrder()I
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.identities
    //#input(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.managers
    //#input(void execute(InputWindow, bool, CommandArguments)): isSilent
    //#input(void execute(InputWindow, bool, CommandArguments)): origin
    //#input(void execute(InputWindow, bool, CommandArguments)): this
    //#output(void execute(InputWindow, bool, CommandArguments)): args.words
    //#output(void execute(InputWindow, bool, CommandArguments)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void execute(InputWindow, bool, CommandArguments)): java.lang.String:split(...)._tainted
    //#output(void execute(InputWindow, bool, CommandArguments)): java.lang.String:split(...).length
    //#output(void execute(InputWindow, bool, CommandArguments)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void execute(InputWindow, bool, CommandArguments)): new ArrayList(getSources#1) num objects
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).channel
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).network
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).server
    //#output(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1).sources
    //#output(void execute(InputWindow, bool, CommandArguments)): new MapList(ConfigManager#1) num objects
    //#new obj(void execute(InputWindow, bool, CommandArguments)): java.lang.String:split(...)
    //#new obj(void execute(InputWindow, bool, CommandArguments)): java.lang.StringBuilder:toString(...)
    //#new obj(void execute(InputWindow, bool, CommandArguments)): new ArrayList(getSources#1)
    //#new obj(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1)
    //#new obj(void execute(InputWindow, bool, CommandArguments)): new MapList(ConfigManager#1)
    //#pre[1] (void execute(InputWindow, bool, CommandArguments)): args != null
    //#pre[3] (void execute(InputWindow, bool, CommandArguments)): args.__Tag == com/dmdirc/commandparser/CommandArguments
    //#pre[14] (void execute(InputWindow, bool, CommandArguments)): init'ed(args.words)
    //#pre[4] (void execute(InputWindow, bool, CommandArguments)): (soft) args.line != null
    //#pre[7] (void execute(InputWindow, bool, CommandArguments)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#pre[10] (void execute(InputWindow, bool, CommandArguments)): (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
    //#pre[15] (void execute(InputWindow, bool, CommandArguments)): (soft) init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[16] (void execute(InputWindow, bool, CommandArguments)): (soft) origin != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.Main:getUI(...)@100 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.Main:getUI(...)@102 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@104 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@101 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@103 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@71 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@73 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@75 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@77 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@79 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@81 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@83 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@85 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@87 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@89 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@91 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@93 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@95 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@97 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@99 >= 1
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...)[1]@72 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...)[1]@98 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): getArguments(...)[2]@72 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#presumption(void execute(InputWindow, bool, CommandArguments)): java.util.Arrays:copyOfRange(...)@99 != null
    //#post(void execute(InputWindow, bool, CommandArguments)): args.words != null
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(java.lang.String:split(...)._tainted)
    //#post(void execute(InputWindow, bool, CommandArguments)): java.lang.String:split(...)._tainted == 0
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(java.lang.String:split(...).length)
    //#post(void execute(InputWindow, bool, CommandArguments)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void execute(InputWindow, bool, CommandArguments)): new ArrayList(getSources#1) num objects <= 1
    //#post(void execute(InputWindow, bool, CommandArguments)): new ConfigManager(getGlobalConfig#1) num objects <= 1
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).__Tag)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).channel)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).ircd)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).listeners)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).network)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).server)
    //#post(void execute(InputWindow, bool, CommandArguments)): init'ed(new ConfigManager(getGlobalConfig#1).sources)
    //#post(void execute(InputWindow, bool, CommandArguments)): new MapList(ConfigManager#1) num objects <= 1
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Exception
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getContainer
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.WritableFrameContainer:getServer
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:sendLine
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.Server:addRaw
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.TreeSet
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.TreeSet:addAll
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.TreeSet:iterator
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.System:gc
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.PluginManager:getPluginManager
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.PluginManager:getAllServices
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.Service:toString
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.Service:getProviders
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.ServiceProvider:getProviderName
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.plugins.ServiceProvider:isActive
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.Server:getName
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.Server:getParser
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getServerName
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.Server:getNetwork
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getIRCD
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getBoolChanModes
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getListChanModes
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getSetOnlyChanModes
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getSetUnsetChanModes
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Thread:getAllStackTraces
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Thread:getName
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.StackTraceElement:toString
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.updater.UpdateChecker
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Thread
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Thread:start
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Runtime:getRuntime
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Runtime:totalMemory
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Runtime:freeMemory
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.System:nanoTime
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.Server:getStatus
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.ServerStatus:getTransitionHistory
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:getTarget
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:addListener
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:getSources
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:addConfigManager
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getConfigManager
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.util.Arrays:copyOfRange
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:getCommandChar
    //#unanalyzed(void execute(InputWindow, bool, CommandArguments)): Effects-of-calling:java.lang.Character:valueOf
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): getArguments(...).length@69: {1..+Inf}, {0}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@101: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@103: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@71: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@73: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@75: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@77: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@79: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@81: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@83: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@85: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@87: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@89: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@91: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@93: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@95: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@97: {0}, {1}
    //#test_vector(void execute(InputWindow, bool, CommandArguments)): java.lang.String:equals(...)@99: {0}, {1}
            showUsage(origin, isSilent, "debug", "<debug command> [options]");
        } else if ("error".equals(args.getArguments()[0])) {
            doError(args.getArguments());
        } else if ("showraw".equals(args.getArguments()[0])) {
            doShowRaw(origin, isSilent);
        } else if ("configstats".equals(args.getArguments()[0])) {
            doConfigStats(origin, isSilent);
        } else if ("configinfo".equals(args.getArguments()[0])) {
            doConfigInfo(origin, isSilent);
        } else if ("globalconfiginfo".equals(args.getArguments()[0])) {
            doGlobalConfigInfo(origin, isSilent);
        } else if ("colourspam".equals(args.getArguments()[0])) {
            doColourSpam(origin, isSilent);
        } else if ("meminfo".equals(args.getArguments()[0])) {
            doMemInfo(origin, isSilent);
        } else if ("rungc".equals(args.getArguments()[0])) {
            doGarbage(origin, isSilent);
        } else if ("threads".equals(args.getArguments()[0])) {
            doThreads(origin, isSilent);
        } else if ("forceupdate".equals(args.getArguments()[0])) {
            doForceUpdate();
        } else if ("serverinfo".equals(args.getArguments()[0])) {
            doServerInfo(origin, isSilent);
        } else if ("serverstate".equals(args.getArguments()[0])) {
            doServerState(origin, isSilent);
        } else if ("benchmark".equals(args.getArguments()[0])) {
            doBenchmark(origin);
        } else if ("services".equals(args.getArguments()[0])) {
            doServices(origin, isSilent, args.getArguments());
        } else if ("firstrun".equals(args.getArguments()[0])) {
            Main.getUI().showFirstRunWizard();
    //#Debug.java:100: Warning: method not available - call not analyzed
    //#    call on UIController com.dmdirc.Main:getUI()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: UIController com.dmdirc.Main:getUI()
    //#Debug.java:100: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.UIController:showFirstRunWizard()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.UIController:showFirstRunWizard()
        } else if ("migration".equals(args.getArguments()[0])) {
            Main.getUI().showMigrationWizard();
    //#Debug.java:102: Warning: method not available - call not analyzed
    //#    call on UIController com.dmdirc.Main:getUI()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: UIController com.dmdirc.Main:getUI()
    //#Debug.java:102: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.UIController:showMigrationWizard()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.UIController:showMigrationWizard()
        } else if ("notify".equals(args.getArguments()[0])) {
            sendLine(origin, isSilent, FORMAT_OUTPUT, "Current notification colour is: "
    //#Debug.java:104: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:104: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.WritableFrameContainer:getNotification()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void execute(InputWindow, bool, CommandArguments)
    //#    unanalyzed callee: Color com.dmdirc.WritableFrameContainer:getNotification()
                    + origin.getContainer().getNotification());
        } else {
            sendLine(origin, isSilent, FORMAT_ERROR, "Unknown debug action.");
        }
    }
    //#Debug.java:109: end of method: void com.dmdirc.commandparser.commands.global.Debug.execute(InputWindow, bool, CommandArguments)
    
    /**
     * Generates a fake error.
     *
     * @param args The arguments that were passed to the command
     */
    private void doError(final String ... args) {
        ErrorLevel el = ErrorLevel.HIGH;
    //#Debug.java:117: method: void com.dmdirc.commandparser.commands.global.Debug.doError(String[])
    //#input(void doError(String[])): args
    //#input(void doError(String[])): args.length
    //#input(void doError(String[])): args[1]
    //#input(void doError(String[])): args[2]
    //#input(void doError(String[])): com.dmdirc.logger.ErrorLevel.FATAL
    //#input(void doError(String[])): com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void doError(String[])): com.dmdirc.logger.ErrorLevel.LOW
    //#input(void doError(String[])): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void doError(String[])): com.dmdirc.logger.ErrorLevel.UNKNOWN
    //#pre[1] (void doError(String[])): args != null
    //#pre[3] (void doError(String[])): (soft) args[1] != null
    //#pre[4] (void doError(String[])): (soft) args[2] != null
    //#presumption(void doError(String[])): init'ed(com.dmdirc.logger.ErrorLevel.FATAL)
    //#presumption(void doError(String[])): init'ed(com.dmdirc.logger.ErrorLevel.HIGH)
    //#presumption(void doError(String[])): init'ed(com.dmdirc.logger.ErrorLevel.LOW)
    //#presumption(void doError(String[])): init'ed(com.dmdirc.logger.ErrorLevel.MEDIUM)
    //#presumption(void doError(String[])): init'ed(com.dmdirc.logger.ErrorLevel.UNKNOWN)
    //#test_vector(void doError(String[])): args.length: {0,1}, {3..+Inf}
    //#test_vector(void doError(String[])): java.lang.String:equals(...)@121: {0}, {1}
    //#test_vector(void doError(String[])): java.lang.String:equals(...)@123: {0}, {1}
    //#test_vector(void doError(String[])): java.lang.String:equals(...)@125: {0}, {1}
    //#test_vector(void doError(String[])): java.lang.String:equals(...)@127: {0}, {1}
    //#test_vector(void doError(String[])): java.lang.String:equals(...)@132: {0}, {1}
        if (args.length > 2) {
            final String level = args[2];
            
            if (level.equals("low")) {
                el = ErrorLevel.LOW;
            } else if (level.equals("medium")) {
                el = ErrorLevel.MEDIUM;
            } else if (level.equals("fatal")) {
                el = ErrorLevel.FATAL;
            } else if (level.equals("unknown")) {
                el = ErrorLevel.UNKNOWN;
            }
        }
        
        if (args.length > 1 && args[1].equals("user")) {
            Logger.userError(el, "Debug error message");
    //#Debug.java:133: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doError(String[])
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String)
        } else {
            Logger.appError(el, "Debug error message", new Exception());
    //#Debug.java:135: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doError(String[])
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
        }
    }
    //#Debug.java:137: end of method: void com.dmdirc.commandparser.commands.global.Debug.doError(String[])
    
    /**
     * Attempts to show the server's raw window.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doShowRaw(final InputWindow origin, final boolean isSilent) {
        if (origin == null || origin.getContainer() == null
    //#Debug.java:146: method: void com.dmdirc.commandparser.commands.global.Debug.doShowRaw(InputWindow, bool)
    //#Debug.java:146: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doShowRaw(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:146: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doShowRaw(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#input(void doShowRaw(InputWindow, bool)): isSilent
    //#input(void doShowRaw(InputWindow, bool)): origin
    //#input(void doShowRaw(InputWindow, bool)): this
    //#presumption(void doShowRaw(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@150 != null
    //#presumption(void doShowRaw(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@146 != null
    //#presumption(void doShowRaw(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@150 != null
    //#unanalyzed(void doShowRaw(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doShowRaw(InputWindow, bool)): origin: Addr_Set{null}, Inverse{null}
    //#test_vector(void doShowRaw(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@146: Inverse{null}, Addr_Set{null}
    //#test_vector(void doShowRaw(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@146: Addr_Set{null}, Inverse{null}
                || origin.getContainer().getServer() == null) {
            sendLine(origin, isSilent, FORMAT_ERROR, "Cannot show raw window here.");
        } else {
            origin.getContainer().getServer().addRaw();
    //#Debug.java:150: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doShowRaw(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:150: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doShowRaw(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#Debug.java:150: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Server:addRaw()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doShowRaw(InputWindow, bool)
    //#    unanalyzed callee: void com.dmdirc.Server:addRaw()
        }
    }
    //#Debug.java:152: end of method: void com.dmdirc.commandparser.commands.global.Debug.doShowRaw(InputWindow, bool)
    
    /**
     * Shows stats related to the config system.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doConfigStats(final InputWindow origin, final boolean isSilent) {
        final TreeSet<Entry<String, Integer>> sortedStats =
    //#Debug.java:161: method: void com.dmdirc.commandparser.commands.global.Debug.doConfigStats(InputWindow, bool)
    //#input(void doConfigStats(InputWindow, bool)): " - "._tainted
    //#input(void doConfigStats(InputWindow, bool)): com/dmdirc/config/ConfigManager.stats
    //#input(void doConfigStats(InputWindow, bool)): isSilent
    //#input(void doConfigStats(InputWindow, bool)): origin
    //#input(void doConfigStats(InputWindow, bool)): this
    //#presumption(void doConfigStats(InputWindow, bool)): java.util.Iterator:next(...)@164 != null
    //#unanalyzed(void doConfigStats(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doConfigStats(InputWindow, bool)): java.util.Iterator:hasNext(...)@164: {0}, {1}
                new TreeSet<Entry<String, Integer>>(new ValueComparator());
        sortedStats.addAll(ConfigManager.getStats().entrySet());
        for (Map.Entry<String, Integer> entry : sortedStats) {
            sendLine(origin, isSilent, FORMAT_OUTPUT,
                    entry.getKey() + " - " + entry.getValue());
        }
    }
    //#Debug.java:168: end of method: void com.dmdirc.commandparser.commands.global.Debug.doConfigStats(InputWindow, bool)
    
    /**
     * Shows memory usage information.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doMemInfo(final InputWindow origin, final boolean isSilent) {
        sendLine(origin, isSilent, FORMAT_OUTPUT, "Total Memory: "
    //#Debug.java:177: method: void com.dmdirc.commandparser.commands.global.Debug.doMemInfo(InputWindow, bool)
    //#input(void doMemInfo(InputWindow, bool)): "Free Memory: "._tainted
    //#input(void doMemInfo(InputWindow, bool)): "Total Memory: "._tainted
    //#input(void doMemInfo(InputWindow, bool)): "Used Memory: "._tainted
    //#input(void doMemInfo(InputWindow, bool)): isSilent
    //#input(void doMemInfo(InputWindow, bool)): origin
    //#input(void doMemInfo(InputWindow, bool)): this
    //#presumption(void doMemInfo(InputWindow, bool)): java.lang.Runtime:freeMemory(...)@181 - java.lang.Runtime:totalMemory(...)@181 in {-18_446_744_073_709_551_615..9_223_372_036_854_775_808}
    //#presumption(void doMemInfo(InputWindow, bool)): java.lang.Runtime:getRuntime(...)@177 != null
    //#presumption(void doMemInfo(InputWindow, bool)): java.lang.Runtime:getRuntime(...)@179 != null
    //#presumption(void doMemInfo(InputWindow, bool)): java.lang.Runtime:getRuntime(...)@181 != null
    //#presumption(void doMemInfo(InputWindow, bool)): java.lang.Runtime:getRuntime(...)@181 != null
    //#unanalyzed(void doMemInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
                + Runtime.getRuntime().totalMemory());
        sendLine(origin, isSilent, FORMAT_OUTPUT, "Free Memory: "
                + Runtime.getRuntime().freeMemory());
        sendLine(origin, isSilent, FORMAT_OUTPUT, "Used Memory: "
                + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
    }
    //#Debug.java:183: end of method: void com.dmdirc.commandparser.commands.global.Debug.doMemInfo(InputWindow, bool)
    
    /**
     * Outputs 100 lines containing various colours.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doColourSpam(final InputWindow origin, final boolean isSilent) {
        for (int i = 0; i < 100; i++) {
    //#Debug.java:192: method: void com.dmdirc.commandparser.commands.global.Debug.doColourSpam(InputWindow, bool)
    //#input(void doColourSpam(InputWindow, bool)): isSilent
    //#input(void doColourSpam(InputWindow, bool)): origin
    //#input(void doColourSpam(InputWindow, bool)): this
    //#unanalyzed(void doColourSpam(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
            sendLine(origin, isSilent, FORMAT_OUTPUT, ((char) 3) + "5Colour! "
                    + ((char) 3) + "6Colour! " + ((char) 3) + "7Colour! "
                    + ((char) 3) + "6Colour! " + ((char) 3) + "7Colour! "
                    + ((char) 3) + "6Colour! " + ((char) 3) + "7Colour! "
                    + ((char) 3) + "6Colour! " + ((char) 3) + "7Colour! ");
        }
    }
    //#Debug.java:199: end of method: void com.dmdirc.commandparser.commands.global.Debug.doColourSpam(InputWindow, bool)
    
    /**
     * Manually runs the garbage collector.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doGarbage(final InputWindow origin, final boolean isSilent) {
        System.gc();
    //#Debug.java:208: method: void com.dmdirc.commandparser.commands.global.Debug.doGarbage(InputWindow, bool)
    //#input(void doGarbage(InputWindow, bool)): isSilent
    //#input(void doGarbage(InputWindow, bool)): origin
    //#input(void doGarbage(InputWindow, bool)): this
    //#unanalyzed(void doGarbage(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
        sendLine(origin, isSilent, FORMAT_OUTPUT, "Invoked garbage collector.");
    }
    //#Debug.java:210: end of method: void com.dmdirc.commandparser.commands.global.Debug.doGarbage(InputWindow, bool)
    
    /**
     * Shows information about the config manager.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doConfigInfo(final InputWindow origin, final boolean isSilent) {
        for (Identity source : origin.getConfigManager().getSources()) {
    //#Debug.java:219: method: void com.dmdirc.commandparser.commands.global.Debug.doConfigInfo(InputWindow, bool)
    //#Debug.java:219: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.ui.interfaces.InputWindow:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doConfigInfo(InputWindow, bool)
    //#    unanalyzed callee: ConfigManager com.dmdirc.ui.interfaces.InputWindow:getConfigManager()
    //#input(void doConfigInfo(InputWindow, bool)): " - "._tainted
    //#input(void doConfigInfo(InputWindow, bool)): "("._tainted
    //#input(void doConfigInfo(InputWindow, bool)): ")"._tainted
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getSources()Ljava/util/List;
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getOrder()I
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void doConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void doConfigInfo(InputWindow, bool)): isSilent
    //#input(void doConfigInfo(InputWindow, bool)): origin
    //#input(void doConfigInfo(InputWindow, bool)): this
    //#pre[2] (void doConfigInfo(InputWindow, bool)): origin != null
    //#presumption(void doConfigInfo(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getConfigManager(...).__Tag@219 == com/dmdirc/config/ConfigManager
    //#presumption(void doConfigInfo(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getConfigManager(...)@219 != null
    //#presumption(void doConfigInfo(InputWindow, bool)): getTarget(...).__Tag@219 == com/dmdirc/config/ConfigTarget
    //#presumption(void doConfigInfo(InputWindow, bool)): java.util.Iterator:next(...).__Tag@219 == com/dmdirc/config/Identity
    //#presumption(void doConfigInfo(InputWindow, bool)): java.util.Iterator:next(...)@219 != null
    //#presumption(void doConfigInfo(InputWindow, bool)): source.myTarget@219 != null
    //#unanalyzed(void doConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void doConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doConfigInfo(InputWindow, bool)): java.util.Iterator:hasNext(...)@219: {0}, {1}
            sendLine(origin, isSilent, FORMAT_OUTPUT, source.getTarget() + " - "
                    + source + "(" + source.getTarget().getOrder() + ")");
        }
    }
    //#Debug.java:223: end of method: void com.dmdirc.commandparser.commands.global.Debug.doConfigInfo(InputWindow, bool)
    
    /**
     * Shows information about the global config manager.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doGlobalConfigInfo(final InputWindow origin, final boolean isSilent) {
        for (Identity source : IdentityManager.getGlobalConfig().getSources()) {
    //#Debug.java:232: method: void com.dmdirc.commandparser.commands.global.Debug.doGlobalConfigInfo(InputWindow, bool)
    //#input(void doGlobalConfigInfo(InputWindow, bool)): " - "._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): ""._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): "("._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): ")"._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): "<Unknown>"._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): "@"._tainted
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1).length
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager$1.$SwitchMap$com$dmdirc$config$ConfigTarget$TYPE
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Descendant_Table[com/dmdirc/config/ConfigManager]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Descendant_Table[others]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Dispatch_Table.getSources()Ljava/util/List;
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigManager.__Dispatch_Table.identityApplies(Lcom/dmdirc/config/Identity;)Z
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Descendant_Table[com/dmdirc/config/ConfigTarget]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Descendant_Table[others]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getData()Ljava/lang/String;
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getOrder()I
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/ConfigTarget.__Dispatch_Table.getType()Lcom/dmdirc/config/ConfigTarget$TYPE;
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Descendant_Table[com/dmdirc/config/Identity]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Descendant_Table[others]
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Dispatch_Table.addListener(Lcom/dmdirc/interfaces/ConfigChangeListener;)V
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/Identity.__Dispatch_Table.getTarget()Lcom/dmdirc/config/ConfigTarget;
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.__Class_Obj.__Lock
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig.__Tag
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig.sources
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.identities
    //#input(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.managers
    //#input(void doGlobalConfigInfo(InputWindow, bool)): isSilent
    //#input(void doGlobalConfigInfo(InputWindow, bool)): origin
    //#input(void doGlobalConfigInfo(InputWindow, bool)): this
    //#output(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig
    //#output(void doGlobalConfigInfo(InputWindow, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ArrayList(getSources#1) num objects
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1) num objects
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).__Tag
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).channel
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).ircd
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).listeners
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).network
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).server
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).sources
    //#output(void doGlobalConfigInfo(InputWindow, bool)): new MapList(ConfigManager#1) num objects
    //#new obj(void doGlobalConfigInfo(InputWindow, bool)): java.lang.StringBuilder:toString(...)
    //#new obj(void doGlobalConfigInfo(InputWindow, bool)): new ArrayList(getSources#1)
    //#new obj(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1)
    //#new obj(void doGlobalConfigInfo(InputWindow, bool)): new MapList(ConfigManager#1)
    //#pre[5] (void doGlobalConfigInfo(InputWindow, bool)): init'ed(com/dmdirc/config/IdentityManager.globalconfig)
    //#pre[1] (void doGlobalConfigInfo(InputWindow, bool)): (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[0..4_294_967_295])
    //#presumption(void doGlobalConfigInfo(InputWindow, bool)): getGlobalConfig(...).__Tag == com/dmdirc/config/ConfigManager
    //#presumption(void doGlobalConfigInfo(InputWindow, bool)): getTarget(...).__Tag@232 == com/dmdirc/config/ConfigTarget
    //#presumption(void doGlobalConfigInfo(InputWindow, bool)): java.util.Iterator:next(...).__Tag@232 == com/dmdirc/config/Identity
    //#presumption(void doGlobalConfigInfo(InputWindow, bool)): java.util.Iterator:next(...)@232 != null
    //#presumption(void doGlobalConfigInfo(InputWindow, bool)): source.myTarget@232 != null
    //#post(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig == One-of{old com/dmdirc/config/IdentityManager.globalconfig, &new ConfigManager(getGlobalConfig#1)}
    //#post(void doGlobalConfigInfo(InputWindow, bool)): com/dmdirc/config/IdentityManager.globalconfig != null
    //#post(void doGlobalConfigInfo(InputWindow, bool)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ArrayList(getSources#1) num objects <= 1
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new MapList(ConfigManager#1) num objects == new ArrayList(getSources#1) num objects
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).__Tag == com/dmdirc/config/ConfigManager
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).channel == &java.lang.StringBuilder:toString(...)
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).ircd == &""
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).network == &""
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).server == &""
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).listeners == &new MapList(ConfigManager#1)
    //#post(void doGlobalConfigInfo(InputWindow, bool)): new ConfigManager(getGlobalConfig#1).sources == &new ArrayList(getSources#1)
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:getTarget
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.config.ConfigTarget$TYPE:ordinal
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:addListener
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:getSources
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.config.ConfigSource
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:addConfigManager
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void doGlobalConfigInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doGlobalConfigInfo(InputWindow, bool)): java.util.Iterator:hasNext(...)@232: {0}, {1}
            sendLine(origin, isSilent, FORMAT_OUTPUT, source.getTarget() + " - "
                    + source + "(" + source.getTarget().getOrder() + ")");
        }
    }
    //#Debug.java:236: end of method: void com.dmdirc.commandparser.commands.global.Debug.doGlobalConfigInfo(InputWindow, bool)
    
    /**
     * Forces the update checker to check for updates.
     */
    private void doForceUpdate() {
        new Thread(new UpdateChecker(), "Forced update checker").start();
    //#Debug.java:242: method: void com.dmdirc.commandparser.commands.global.Debug.doForceUpdate()
    //#Debug.java:242: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.updater.UpdateChecker()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doForceUpdate()
    //#    unanalyzed callee: void com.dmdirc.updater.UpdateChecker()
    }
    //#Debug.java:243: end of method: void com.dmdirc.commandparser.commands.global.Debug.doForceUpdate()

    /**
     * Shows information about active threads.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doThreads(final InputWindow origin, final boolean isSilent) {
        for (Entry<Thread, StackTraceElement[]> thread: Thread.getAllStackTraces().entrySet()) {
    //#Debug.java:252: method: void com.dmdirc.commandparser.commands.global.Debug.doThreads(InputWindow, bool)
    //#input(void doThreads(InputWindow, bool)): "&#17;    "._tainted
    //#input(void doThreads(InputWindow, bool)): isSilent
    //#input(void doThreads(InputWindow, bool)): origin
    //#input(void doThreads(InputWindow, bool)): this
    //#presumption(void doThreads(InputWindow, bool)): arr$.length@256 <= 4_294_967_295
    //#presumption(void doThreads(InputWindow, bool)): arr$[i$]@256 != null
    //#presumption(void doThreads(InputWindow, bool)): java.lang.Thread:getAllStackTraces(...)@252 != null
    //#presumption(void doThreads(InputWindow, bool)): java.util.Iterator:next(...)@252 != null
    //#presumption(void doThreads(InputWindow, bool)): java.util.Map:entrySet(...)@252 != null
    //#presumption(void doThreads(InputWindow, bool)): java.util.Map_Entry:getKey(...)@253 != null
    //#presumption(void doThreads(InputWindow, bool)): java.util.Map_Entry:getValue(...)@256 != null
    //#unanalyzed(void doThreads(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doThreads(InputWindow, bool)): java.util.Iterator:hasNext(...)@252: {0}, {1}
            sendLine(origin, isSilent, FORMAT_OUTPUT, Styliser.CODE_BOLD
                    + thread.getKey().getName());

            for (StackTraceElement element : thread.getValue()) {
                sendLine(origin, isSilent, FORMAT_OUTPUT, Styliser.CODE_FIXED
                        + "    " + element.toString());
            }
        }
    }
    //#Debug.java:261: end of method: void com.dmdirc.commandparser.commands.global.Debug.doThreads(InputWindow, bool)

    /**
     * Shows information about the current server's state.
     *
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doServerState(final InputWindow origin, final boolean isSilent) {
        if (origin.getContainer().getServer() == null) {
    //#Debug.java:270: method: void com.dmdirc.commandparser.commands.global.Debug.doServerState(InputWindow, bool)
    //#Debug.java:270: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:270: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#input(void doServerState(InputWindow, bool)): isSilent
    //#input(void doServerState(InputWindow, bool)): origin
    //#input(void doServerState(InputWindow, bool)): this
    //#pre[2] (void doServerState(InputWindow, bool)): origin != null
    //#presumption(void doServerState(InputWindow, bool)): com.dmdirc.Server:getStatus(...)@274 != null
    //#presumption(void doServerState(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@273 != null
    //#presumption(void doServerState(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@270 != null
    //#presumption(void doServerState(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@273 != null
    //#unanalyzed(void doServerState(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doServerState(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@270: Inverse{null}, Addr_Set{null}
            sendLine(origin, isSilent, FORMAT_ERROR, "This window isn't connected to a server");
        } else {
            final Server server = origin.getContainer().getServer();
    //#Debug.java:273: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:273: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
            sendLine(origin, isSilent, FORMAT_OUTPUT, server.getStatus().getTransitionHistory());
    //#Debug.java:274: Warning: method not available - call not analyzed
    //#    call on ServerStatus com.dmdirc.Server:getStatus()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: ServerStatus com.dmdirc.Server:getStatus()
    //#Debug.java:274: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.ServerStatus:getTransitionHistory()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerState(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.ServerStatus:getTransitionHistory()
        }
    }
    //#Debug.java:276: end of method: void com.dmdirc.commandparser.commands.global.Debug.doServerState(InputWindow, bool)
    
    /**
     * Shows information about the current server.
     * 
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     */
    private void doServerInfo(final InputWindow origin, final boolean isSilent) {
        if (origin.getContainer().getServer() == null) {
    //#Debug.java:285: method: void com.dmdirc.commandparser.commands.global.Debug.doServerInfo(InputWindow, bool)
    //#Debug.java:285: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:285: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
    //#input(void doServerInfo(InputWindow, bool)): " "._tainted
    //#input(void doServerInfo(InputWindow, bool)): " - "._tainted
    //#input(void doServerInfo(InputWindow, bool)): "Actual name: "._tainted
    //#input(void doServerInfo(InputWindow, bool)): "IRCd: "._tainted
    //#input(void doServerInfo(InputWindow, bool)): "Modes: "._tainted
    //#input(void doServerInfo(InputWindow, bool)): "Network: "._tainted
    //#input(void doServerInfo(InputWindow, bool)): "Server name: "._tainted
    //#input(void doServerInfo(InputWindow, bool)): isSilent
    //#input(void doServerInfo(InputWindow, bool)): origin
    //#input(void doServerInfo(InputWindow, bool)): this
    //#pre[2] (void doServerInfo(InputWindow, bool)): origin != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@290 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@293 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@293 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@296 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@296 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@296 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.Server:getParser(...)@296 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@288 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@285 != null
    //#presumption(void doServerInfo(InputWindow, bool)): com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@288 != null
    //#unanalyzed(void doServerInfo(InputWindow, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doServerInfo(InputWindow, bool)): com.dmdirc.WritableFrameContainer:getServer(...)@285: Inverse{null}, Addr_Set{null}
            sendLine(origin, isSilent, FORMAT_ERROR, "This window isn't connected to a server");
        } else {
            final Server server = origin.getContainer().getServer();
    //#Debug.java:288: Warning: method not available - call not analyzed
    //#    call on WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: WritableFrameContainer com.dmdirc.ui.interfaces.InputWindow:getContainer()
    //#Debug.java:288: Warning: method not available - call not analyzed
    //#    call on Server com.dmdirc.WritableFrameContainer:getServer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: Server com.dmdirc.WritableFrameContainer:getServer()
            sendLine(origin, isSilent, FORMAT_OUTPUT, "Server name: " + server.getName());
    //#Debug.java:289: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.Server:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.Server:getName()
            sendLine(origin, isSilent, FORMAT_OUTPUT, "Actual name: "
    //#Debug.java:290: Warning: method not available - call not analyzed
    //#    call on IRCParser com.dmdirc.Server:getParser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: IRCParser com.dmdirc.Server:getParser()
    //#Debug.java:290: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getServerName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getServerName()
                    + server.getParser().getServerName());
            sendLine(origin, isSilent, FORMAT_OUTPUT, "Network: " + server.getNetwork());
    //#Debug.java:292: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.Server:getNetwork()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.Server:getNetwork()
            sendLine(origin, isSilent, FORMAT_OUTPUT, "IRCd: "
    //#Debug.java:293: Warning: method not available - call not analyzed
    //#    call on IRCParser com.dmdirc.Server:getParser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: IRCParser com.dmdirc.Server:getParser()
    //#Debug.java:293: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getIRCD(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getIRCD(bool)
                    + server.getParser().getIRCD(false) + " - "
                    + server.getParser().getIRCD(true));
            sendLine(origin, isSilent, FORMAT_OUTPUT, "Modes: "
    //#Debug.java:296: Warning: method not available - call not analyzed
    //#    call on IRCParser com.dmdirc.Server:getParser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: IRCParser com.dmdirc.Server:getParser()
    //#Debug.java:296: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getBoolChanModes()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getBoolChanModes()
    //#Debug.java:296: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getListChanModes()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getListChanModes()
    //#Debug.java:296: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getSetOnlyChanModes()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getSetOnlyChanModes()
    //#Debug.java:296: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.IRCParser:getSetUnsetChanModes()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServerInfo(InputWindow, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.IRCParser:getSetUnsetChanModes()
                    + server.getParser().getBoolChanModes() + " "
                    + server.getParser().getListChanModes() + " "
                    + server.getParser().getSetOnlyChanModes() + " "
                    + server.getParser().getSetUnsetChanModes());
        }
    }
    //#Debug.java:302: end of method: void com.dmdirc.commandparser.commands.global.Debug.doServerInfo(InputWindow, bool)
    
    /**
     * Benchmarks the textpane.
     * 
     * @param origin The window this command was executed in
     */
    private void doBenchmark(final InputWindow origin) {
        long[] results = new long[10];
    //#Debug.java:310: method: void com.dmdirc.commandparser.commands.global.Debug.doBenchmark(InputWindow)
    //#input(void doBenchmark(InputWindow)): " nanoseconds."._tainted
    //#input(void doBenchmark(InputWindow)): ": "._tainted
    //#input(void doBenchmark(InputWindow)): "Iteration "._tainted
    //#input(void doBenchmark(InputWindow)): origin
    //#pre[1] (void doBenchmark(InputWindow)): (soft) origin != null
    //#presumption(void doBenchmark(InputWindow)): java.lang.System:nanoTime(...)@319 - java.lang.System:nanoTime(...)@313 in {-9_223_372_036_854_775_808..18_446_744_073_709_551_615}
        
        for (int i = 0; i < results.length; i++) {
            final long start = System.nanoTime();
            
            for (int j = 0; j < 5000; j++) {
                origin.addLine(FORMAT_OUTPUT, "This is a benchmark. Lorem ipsum doler...");
    //#Debug.java:316: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.InputWindow:addLine(String, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doBenchmark(InputWindow)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.InputWindow:addLine(String, Object[])
            }
            
            final long end = System.nanoTime();
            
            results[i] = end - start;
        }
        
        for (int i = 0; i < results.length; i++) {
            origin.addLine(FORMAT_OUTPUT, "Iteration " + i + ": " + results[i]
    //#Debug.java:325: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.interfaces.InputWindow:addLine(String, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doBenchmark(InputWindow)
    //#    unanalyzed callee: void com.dmdirc.ui.interfaces.InputWindow:addLine(String, Object[])
                    + " nanoseconds.");
        }
    }
    //#Debug.java:328: end of method: void com.dmdirc.commandparser.commands.global.Debug.doBenchmark(InputWindow)
    
    /**
     * Shows information about all the current services available to plugins.
     * 
     * @param origin The window this command was executed in
     * @param isSilent Whether this command has been silenced or not
     * @param args The arguments that were passed to the command
     */
    private void doServices(final InputWindow origin, final boolean isSilent,
            final String[] args) {
        sendLine(origin, isSilent, FORMAT_OUTPUT, "Available Services:");
    //#Debug.java:339: method: void com.dmdirc.commandparser.commands.global.Debug.doServices(InputWindow, bool, String[])
    //#input(void doServices(InputWindow, bool, String[])): "            "._tainted
    //#input(void doServices(InputWindow, bool, String[])): "    "._tainted
    //#input(void doServices(InputWindow, bool, String[])): " [Active: "._tainted
    //#input(void doServices(InputWindow, bool, String[])): "]"._tainted
    //#input(void doServices(InputWindow, bool, String[])): args
    //#input(void doServices(InputWindow, bool, String[])): args.length
    //#input(void doServices(InputWindow, bool, String[])): args[1]
    //#input(void doServices(InputWindow, bool, String[])): isSilent
    //#input(void doServices(InputWindow, bool, String[])): origin
    //#input(void doServices(InputWindow, bool, String[])): this
    //#pre[1] (void doServices(InputWindow, bool, String[])): (soft) args != null
    //#pre[3] (void doServices(InputWindow, bool, String[])): (soft) args[1] != null
    //#presumption(void doServices(InputWindow, bool, String[])): com.dmdirc.plugins.PluginManager:getAllServices(...)@340 != null
    //#presumption(void doServices(InputWindow, bool, String[])): com.dmdirc.plugins.PluginManager:getPluginManager(...)@340 != null
    //#presumption(void doServices(InputWindow, bool, String[])): com.dmdirc.plugins.Service:getProviders(...)@343 != null
    //#presumption(void doServices(InputWindow, bool, String[])): java.util.Iterator:next(...)@340 != null
    //#presumption(void doServices(InputWindow, bool, String[])): java.util.Iterator:next(...)@343 != null
    //#unanalyzed(void doServices(InputWindow, bool, String[])): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:addLine
    //#test_vector(void doServices(InputWindow, bool, String[])): args.length: {0,1}, {2..+Inf}
    //#test_vector(void doServices(InputWindow, bool, String[])): java.lang.String:equals(...)@342: {0}, {1}
    //#test_vector(void doServices(InputWindow, bool, String[])): java.util.Iterator:hasNext(...)@340: {0}, {1}
    //#test_vector(void doServices(InputWindow, bool, String[])): java.util.Iterator:hasNext(...)@343: {0}, {1}
        for (Service service : PluginManager.getPluginManager().getAllServices()) {
    //#Debug.java:340: Warning: method not available - call not analyzed
    //#    call on PluginManager com.dmdirc.plugins.PluginManager:getPluginManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: PluginManager com.dmdirc.plugins.PluginManager:getPluginManager()
    //#Debug.java:340: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.plugins.PluginManager:getAllServices()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: List com.dmdirc.plugins.PluginManager:getAllServices()
            sendLine(origin, isSilent, FORMAT_OUTPUT, "    " + service.toString());
    //#Debug.java:341: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.plugins.Service:toString()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: String com.dmdirc.plugins.Service:toString()
            if (args.length > 1 && args[1].equals("full")) {
                for (ServiceProvider provider : service.getProviders()) {
    //#Debug.java:343: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.plugins.Service:getProviders()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: List com.dmdirc.plugins.Service:getProviders()
                    sendLine(origin, isSilent, FORMAT_OUTPUT, "            "
    //#Debug.java:344: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.plugins.ServiceProvider:getProviderName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: String com.dmdirc.plugins.ServiceProvider:getProviderName()
    //#Debug.java:344: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.plugins.ServiceProvider:isActive()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: void doServices(InputWindow, bool, String[])
    //#    unanalyzed callee: bool com.dmdirc.plugins.ServiceProvider:isActive()
                            + provider.getProviderName() + " [Active: "
                            + provider.isActive() + "]");
                }
            }
        }
    }
    //#Debug.java:350: end of method: void com.dmdirc.commandparser.commands.global.Debug.doServices(InputWindow, bool, String[])
    
    /** {@inheritDoc} */
    @Override
    public String getName() {
        return "debug";
    //#Debug.java:355: method: String com.dmdirc.commandparser.commands.global.Debug.getName()
    //#output(String getName()): return_value
    //#post(String getName()): return_value == &"debug"
    //#Debug.java:355: end of method: String com.dmdirc.commandparser.commands.global.Debug.getName()
    }
    
    /** {@inheritDoc} */
    @Override
    public boolean showInHelp() {
        return false;
    //#Debug.java:361: method: bool com.dmdirc.commandparser.commands.global.Debug.showInHelp()
    //#output(bool showInHelp()): return_value
    //#post(bool showInHelp()): return_value == 0
    //#Debug.java:361: end of method: bool com.dmdirc.commandparser.commands.global.Debug.showInHelp()
    }
    
    /** {@inheritDoc} */
    @Override
    public String getHelp() {
        return null;
    //#Debug.java:367: method: String com.dmdirc.commandparser.commands.global.Debug.getHelp()
    //#output(String getHelp()): return_value
    //#post(String getHelp()): return_value == null
    //#Debug.java:367: end of method: String com.dmdirc.commandparser.commands.global.Debug.getHelp()
    }
    
    /** {@inheritDoc} */
    @Override
    public AdditionalTabTargets getSuggestions(final int arg, final List<String> previousArgs) {
        final AdditionalTabTargets res = new AdditionalTabTargets();
    //#Debug.java:373: method: AdditionalTabTargets com.dmdirc.commandparser.commands.global.Debug.getSuggestions(int, List)
    //#Debug.java:373: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.ui.input.AdditionalTabTargets()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: void com.dmdirc.ui.input.AdditionalTabTargets()
    //#input(AdditionalTabTargets getSuggestions(int, List)): arg
    //#input(AdditionalTabTargets getSuggestions(int, List)): previousArgs
    //#output(AdditionalTabTargets getSuggestions(int, List)): new AdditionalTabTargets(getSuggestions#1) num objects
    //#output(AdditionalTabTargets getSuggestions(int, List)): return_value
    //#new obj(AdditionalTabTargets getSuggestions(int, List)): new AdditionalTabTargets(getSuggestions#1)
    //#pre[2] (AdditionalTabTargets getSuggestions(int, List)): (soft) previousArgs != null
    //#post(AdditionalTabTargets getSuggestions(int, List)): return_value == &new AdditionalTabTargets(getSuggestions#1)
    //#post(AdditionalTabTargets getSuggestions(int, List)): new AdditionalTabTargets(getSuggestions#1) num objects == 1
    //#test_vector(AdditionalTabTargets getSuggestions(int, List)): arg: {2}, {0}, {1}
    //#test_vector(AdditionalTabTargets getSuggestions(int, List)): java.lang.String:equals(...)@395: {0}, {1}
    //#test_vector(AdditionalTabTargets getSuggestions(int, List)): java.lang.String:equals(...)@398: {0}, {1}
    //#test_vector(AdditionalTabTargets getSuggestions(int, List)): java.lang.String:equals(...)@400: {0}, {1}
        
        res.excludeAll();
    //#Debug.java:375: Warning: method not available - call not analyzed
    //#    call on AdditionalTabTargets com.dmdirc.ui.input.AdditionalTabTargets:excludeAll()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: AdditionalTabTargets com.dmdirc.ui.input.AdditionalTabTargets:excludeAll()
        
        if (arg == 0) {
            res.add("error");
    //#Debug.java:378: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("showraw");
    //#Debug.java:379: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("colourspam");
    //#Debug.java:380: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("configstats");
    //#Debug.java:381: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("meminfo");
    //#Debug.java:382: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("rungc");
    //#Debug.java:383: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("configinfo");
    //#Debug.java:384: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("globalconfiginfo");
    //#Debug.java:385: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("forceupdate");
    //#Debug.java:386: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("serverinfo");
    //#Debug.java:387: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("serverstate");
    //#Debug.java:388: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("threads");
    //#Debug.java:389: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("benchmark");
    //#Debug.java:390: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("firstrun");
    //#Debug.java:391: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("migration");
    //#Debug.java:392: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("notify");
    //#Debug.java:393: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("services");
    //#Debug.java:394: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
        } else if (arg == 1 && "error".equals(previousArgs.get(0))) {
            res.add("user");
    //#Debug.java:396: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("app");
    //#Debug.java:397: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
        } else if (arg == 1 && "services".equals(previousArgs.get(0))) {
            res.add("full");
    //#Debug.java:399: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
        } else if (arg == 2 && "error".equals(previousArgs.get(0))) {
            res.add("low");
    //#Debug.java:401: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("medium");
    //#Debug.java:402: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("high");
    //#Debug.java:403: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("fatal");
    //#Debug.java:404: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
            res.add("unknown");
    //#Debug.java:405: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.commandparser.commands.global.Debug
    //#    method: AdditionalTabTargets getSuggestions(int, List)
    //#    unanalyzed callee: bool com.dmdirc.ui.input.AdditionalTabTargets:add(Object)
        }
        
        return res;
    //#Debug.java:408: end of method: AdditionalTabTargets com.dmdirc.commandparser.commands.global.Debug.getSuggestions(int, List)
    }
    
    /** Reverse value comparator for a map entry. */
    private static class ValueComparator implements
    //#Debug.java:412: method: int com.dmdirc.commandparser.commands.global.Debug$ValueComparator.compare(Object, Object)
    //#input(int compare(Object, Object)): __Descendant_Table[com/dmdirc/commandparser/commands/global/Debug$ValueComparator]
    //#input(int compare(Object, Object)): __Descendant_Table[others]
    //#input(int compare(Object, Object)): __Dispatch_Table.compare(Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
    //#input(int compare(Object, Object)): this
    //#input(int compare(Object, Object)): this.__Tag
    //#input(int compare(Object, Object)): x0
    //#input(int compare(Object, Object)): x1
    //#output(int compare(Object, Object)): return_value
    //#pre[2] (int compare(Object, Object)): this.__Tag == com/dmdirc/commandparser/commands/global/Debug$ValueComparator
    //#pre[3] (int compare(Object, Object)): x0 != null
    //#pre[4] (int compare(Object, Object)): x1 != null
    //#post(int compare(Object, Object)): init'ed(return_value)
    //#unanalyzed(int compare(Object, Object)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(int compare(Object, Object)): Effects-of-calling:java.lang.Integer:compareTo
    //#unanalyzed(int compare(Object, Object)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(int compare(Object, Object)): Effects-of-calling:java.lang.String:compareToIgnoreCase
    //#Debug.java:412: end of method: int com.dmdirc.commandparser.commands.global.Debug$ValueComparator.compare(Object, Object)
            Comparator<Entry<String, Integer>>, 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;
        
        /** Instantiates a new ValueComparator. */
        public ValueComparator() {
            super();
    //#Debug.java:424: method: void com.dmdirc.commandparser.commands.global.Debug$ValueComparator.com.dmdirc.commandparser.commands.global.Debug$ValueComparator()
        }
    //#Debug.java:425: end of method: void com.dmdirc.commandparser.commands.global.Debug$ValueComparator.com.dmdirc.commandparser.commands.global.Debug$ValueComparator()
        
        /** {@inheritDoc} */
        @Override
        public int compare(final Entry<String, Integer> o1,
                final Entry<String, Integer> o2) {
            int returnValue = o1.getValue().compareTo(o2.getValue()) * -1;
    //#Debug.java:431: method: int com.dmdirc.commandparser.commands.global.Debug$ValueComparator.compare(Map$Entry, Map$Entry)
    //#input(int compare(Map$Entry, Map$Entry)): o1
    //#input(int compare(Map$Entry, Map$Entry)): o2
    //#output(int compare(Map$Entry, Map$Entry)): return_value
    //#pre[1] (int compare(Map$Entry, Map$Entry)): o1 != null
    //#pre[2] (int compare(Map$Entry, Map$Entry)): o2 != null
    //#presumption(int compare(Map$Entry, Map$Entry)): java.lang.Integer:compareTo(...)@431 <= 2_147_483_648
    //#presumption(int compare(Map$Entry, Map$Entry)): java.util.Map_Entry:getKey(...)@434 != null
    //#presumption(int compare(Map$Entry, Map$Entry)): java.util.Map_Entry:getValue(...)@431 != null
    //#post(int compare(Map$Entry, Map$Entry)): init'ed(return_value)
    //#test_vector(int compare(Map$Entry, Map$Entry)): java.lang.Integer:compareTo(...)@431: {-2_147_483_648..-1, 1..2_147_483_648}, {0}
            
            if (returnValue == 0) {
                returnValue = o1.getKey().compareToIgnoreCase(o2.getKey());
            }
            
            return returnValue;
    //#Debug.java:437: end of method: int com.dmdirc.commandparser.commands.global.Debug$ValueComparator.compare(Map$Entry, Map$Entry)
        }
    }
    
}
    //#output(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Descendant_Table[com/dmdirc/commandparser/commands/global/Debug$ValueComparator]
    //#output(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I
    //#output(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Dispatch_Table.compare(Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
    //#post(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Descendant_Table[com/dmdirc/commandparser/commands/global/Debug$ValueComparator] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I == &compare
    //#post(com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init): __Dispatch_Table.compare(Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I == &compare
    //#Debug.java:: end of method: com.dmdirc.commandparser.commands.global.Debug$ValueComparator.com.dmdirc.commandparser.commands.global.Debug$ValueComparator__static_init
    //#Debug.java:: end of class: com.dmdirc.commandparser.commands.global.Debug$ValueComparator
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Descendant_Table[com/dmdirc/commandparser/commands/global/Debug]
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doBenchmark(Lcom/dmdirc/ui/interfaces/InputWindow;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doColourSpam(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doConfigInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doConfigStats(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doError([Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doForceUpdate()V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doGarbage(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doGlobalConfigInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doMemInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServerInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServerState(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServices(Lcom/dmdirc/ui/interfaces/InputWindow;Z[Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doShowRaw(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doThreads(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getHelp()Ljava/lang/String;
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getSuggestions(ILjava/util/List;)Lcom/dmdirc/ui/input/AdditionalTabTargets;
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType;
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.sendLine(Lcom/dmdirc/ui/interfaces/InputWindow;ZLjava/lang/String;[Ljava/lang/Object;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.showInHelp()Z
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.showUsage(Lcom/dmdirc/ui/interfaces/InputWindow;ZLjava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug]
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/Command.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug]
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/GlobalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug]
    //#output(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/IntelligentCommand.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug]
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Descendant_Table[com/dmdirc/commandparser/commands/global/Debug] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/CommandInfo.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/Command.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/GlobalCommand.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): com/dmdirc/commandparser/commands/IntelligentCommand.__Descendant_Table[com/dmdirc/commandparser/commands/global/Debug] == &__Dispatch_Table
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doBenchmark(Lcom/dmdirc/ui/interfaces/InputWindow;)V == &doBenchmark
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doColourSpam(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doColourSpam
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doConfigInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doConfigInfo
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doConfigStats(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doConfigStats
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doError([Ljava/lang/String;)V == &doError
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doForceUpdate()V == &doForceUpdate
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doGarbage(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doGarbage
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doGlobalConfigInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doGlobalConfigInfo
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doMemInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doMemInfo
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServerInfo(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doServerInfo
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServerState(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doServerState
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doServices(Lcom/dmdirc/ui/interfaces/InputWindow;Z[Ljava/lang/String;)V == &doServices
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doShowRaw(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doShowRaw
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.doThreads(Lcom/dmdirc/ui/interfaces/InputWindow;Z)V == &doThreads
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.execute(Lcom/dmdirc/ui/interfaces/InputWindow;ZLcom/dmdirc/commandparser/CommandArguments;)V == &execute
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getHelp()Ljava/lang/String; == &getHelp
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getSuggestions(ILjava/util/List;)Lcom/dmdirc/ui/input/AdditionalTabTargets; == &getSuggestions
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.getType()Lcom/dmdirc/commandparser/CommandType; == &com/dmdirc/commandparser/commands/GlobalCommand.getType
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.sendLine(Lcom/dmdirc/ui/interfaces/InputWindow;ZLjava/lang/String;[Ljava/lang/Object;)V == &com/dmdirc/commandparser/commands/Command.sendLine
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.showInHelp()Z == &showInHelp
    //#post(com.dmdirc.commandparser.commands.global.Debug__static_init): __Dispatch_Table.showUsage(Lcom/dmdirc/ui/interfaces/InputWindow;ZLjava/lang/String;Ljava/lang/String;)V == &com/dmdirc/commandparser/commands/Command.showUsage
    //#Debug.java:: end of method: com.dmdirc.commandparser.commands.global.Debug.com.dmdirc.commandparser.commands.global.Debug__static_init
    //#Debug.java:: end of class: com.dmdirc.commandparser.commands.global.Debug
