//# 1 errors, 1,342 messages
//#
/*
    //#ChannelEventHandler.java:1:1: class: com.dmdirc.ChannelEventHandler
    //#ChannelEventHandler.java:1:1: method: com.dmdirc.ChannelEventHandler.com.dmdirc.ChannelEventHandler__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;

import com.dmdirc.actions.ActionManager;
import com.dmdirc.actions.CoreActionType;
import com.dmdirc.parser.irc.ChannelClientInfo;
import com.dmdirc.parser.irc.ChannelInfo;
import com.dmdirc.parser.irc.ClientInfo;
import com.dmdirc.parser.irc.IRCParser;
import com.dmdirc.parser.irc.callbacks.CallbackManager;
import com.dmdirc.parser.irc.callbacks.CallbackNotFoundException;
import com.dmdirc.parser.irc.callbacks.interfaces.*;

/**
 * Handles events for channel objects.
 *
 * @author chris
 */
public final class ChannelEventHandler extends EventHandler implements
        IChannelMessage, IChannelGotNames, IChannelTopic, IChannelJoin,
        IChannelPart, IChannelKick, IChannelQuit, IChannelAction,
        IChannelNickChanged, IChannelModeChanged, IChannelUserModeChanged,
        IChannelCTCP, IAwayStateOther, IChannelNotice {

    /** The channel that owns this event handler. */
    private final Channel owner;

    /**
     * Creates a new instance of ChannelEventHandler.
     *
     * @param owner The channel that owns this event handler.
     */
    public ChannelEventHandler(final Channel owner) {
        super();
    //#ChannelEventHandler.java:55: method: void com.dmdirc.ChannelEventHandler.com.dmdirc.ChannelEventHandler(Channel)
    //#input(void com.dmdirc.ChannelEventHandler(Channel)): owner
    //#input(void com.dmdirc.ChannelEventHandler(Channel)): this
    //#output(void com.dmdirc.ChannelEventHandler(Channel)): this.owner
    //#post(void com.dmdirc.ChannelEventHandler(Channel)): this.owner == owner
    //#post(void com.dmdirc.ChannelEventHandler(Channel)): init'ed(this.owner)

        this.owner = owner;
    }
    //#ChannelEventHandler.java:58: end of method: void com.dmdirc.ChannelEventHandler.com.dmdirc.ChannelEventHandler(Channel)

    /** {@inheritDoc} */
    @Override
    protected void addCallback(final CallbackManager cbm, final String name)
            throws CallbackNotFoundException {
        if ("onAwayStateOther".equals(name)) {
    //#ChannelEventHandler.java:64: method: void com.dmdirc.ChannelEventHandler.addCallback(CallbackManager, String)
    //#input(void addCallback(CallbackManager, String)): cbm
    //#input(void addCallback(CallbackManager, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void addCallback(CallbackManager, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void addCallback(CallbackManager, String)): com/dmdirc/Channel.__Dispatch_Table.getChannelInfo()Lcom/dmdirc/parser/irc/ChannelInfo;
    //#input(void addCallback(CallbackManager, String)): name
    //#input(void addCallback(CallbackManager, String)): this
    //#input(void addCallback(CallbackManager, String)): this.owner
    //#input(void addCallback(CallbackManager, String)): this.owner.__Tag
    //#input(void addCallback(CallbackManager, String)): this.owner.channelInfo
    //#pre[1] (void addCallback(CallbackManager, String)): cbm != null
    //#pre[4] (void addCallback(CallbackManager, String)): (soft) this.owner != null
    //#pre[5] (void addCallback(CallbackManager, String)): (soft) this.owner.__Tag == com/dmdirc/Channel
    //#pre[6] (void addCallback(CallbackManager, String)): (soft) this.owner.channelInfo != null
    //#test_vector(void addCallback(CallbackManager, String)): java.lang.String:equals(...)@64: {0}, {1}
            cbm.addCallback(name, this);
    //#ChannelEventHandler.java:65: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.parser.irc.callbacks.CallbackManager:addCallback(String, ICallbackInterface)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void addCallback(CallbackManager, String)
    //#    unanalyzed callee: void com.dmdirc.parser.irc.callbacks.CallbackManager:addCallback(String, ICallbackInterface)
        } else {
            cbm.addCallback(name, this, owner.getChannelInfo().getName());
    //#ChannelEventHandler.java:67: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void addCallback(CallbackManager, String)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getName()
    //#ChannelEventHandler.java:67: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.parser.irc.callbacks.CallbackManager:addCallback(String, ICallbackInterface, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void addCallback(CallbackManager, String)
    //#    unanalyzed callee: void com.dmdirc.parser.irc.callbacks.CallbackManager:addCallback(String, ICallbackInterface, String)
        }
    }
    //#ChannelEventHandler.java:69: end of method: void com.dmdirc.ChannelEventHandler.addCallback(CallbackManager, String)

    /** {@inheritDoc} */
    @Override
    protected Server getServer() {
        return owner.getServer();
    //#ChannelEventHandler.java:74: method: Server com.dmdirc.ChannelEventHandler.getServer()
    //#input(Server getServer()): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(Server getServer()): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(Server getServer()): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(Server getServer()): this
    //#input(Server getServer()): this.owner
    //#input(Server getServer()): this.owner.__Tag
    //#input(Server getServer()): this.owner.server
    //#output(Server getServer()): return_value
    //#pre[2] (Server getServer()): this.owner != null
    //#pre[3] (Server getServer()): this.owner.__Tag == com/dmdirc/Channel
    //#pre[4] (Server getServer()): init'ed(this.owner.server)
    //#post(Server getServer()): return_value == this.owner.server
    //#post(Server getServer()): init'ed(return_value)
    //#ChannelEventHandler.java:74: end of method: Server com.dmdirc.ChannelEventHandler.getServer()
    }

    /**
     * Determines if the specified client represents us.
     *
     * @param client The client to be tested
     * @return True if the client is ourself, false otherwise.
     */
    protected boolean isMyself(final ChannelClientInfo client) {
        return client.getClient().equals(owner.getServer().getParser().getMyself());
    //#ChannelEventHandler.java:84: method: bool com.dmdirc.ChannelEventHandler.isMyself(ChannelClientInfo)
    //#ChannelEventHandler.java:84: Warning: method not available - call not analyzed
    //#    call on ClientInfo com.dmdirc.parser.irc.ChannelClientInfo:getClient()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: bool isMyself(ChannelClientInfo)
    //#    unanalyzed callee: ClientInfo com.dmdirc.parser.irc.ChannelClientInfo:getClient()
    //#ChannelEventHandler.java:84: Warning: method not available - call not analyzed
    //#    call on ClientInfo com.dmdirc.parser.irc.IRCParser:getMyself()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: bool isMyself(ChannelClientInfo)
    //#    unanalyzed callee: ClientInfo com.dmdirc.parser.irc.IRCParser:getMyself()
    //#input(bool isMyself(ChannelClientInfo)): client
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(bool isMyself(ChannelClientInfo)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(bool isMyself(ChannelClientInfo)): this
    //#input(bool isMyself(ChannelClientInfo)): this.owner
    //#input(bool isMyself(ChannelClientInfo)): this.owner.__Tag
    //#input(bool isMyself(ChannelClientInfo)): this.owner.server
    //#input(bool isMyself(ChannelClientInfo)): this.owner.server.__Tag
    //#input(bool isMyself(ChannelClientInfo)): this.owner.server.parser
    //#output(bool isMyself(ChannelClientInfo)): return_value
    //#pre[1] (bool isMyself(ChannelClientInfo)): client != null
    //#pre[3] (bool isMyself(ChannelClientInfo)): this.owner != null
    //#pre[4] (bool isMyself(ChannelClientInfo)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[5] (bool isMyself(ChannelClientInfo)): this.owner.server != null
    //#pre[6] (bool isMyself(ChannelClientInfo)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[7] (bool isMyself(ChannelClientInfo)): this.owner.server.parser != null
    //#presumption(bool isMyself(ChannelClientInfo)): com.dmdirc.parser.irc.ChannelClientInfo:getClient(...)@84 != null
    //#post(bool isMyself(ChannelClientInfo)): init'ed(return_value)
    //#ChannelEventHandler.java:84: end of method: bool com.dmdirc.ChannelEventHandler.isMyself(ChannelClientInfo)
    }

    /** {@inheritDoc} */
    @Override
    public void onChannelMessage(final IRCParser tParser,
            final ChannelInfo cChannel, final ChannelClientInfo cChannelClient,
            final String sMessage, final String sHost) {
        checkParser(tParser);
    //#ChannelEventHandler.java:92: method: void com.dmdirc.ChannelEventHandler.onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_MESSAGE
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sMessage
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#input(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.parser
    //#pre[1] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient != null
    //#pre[5] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[7] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[9] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[14] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server != null
    //#pre[15] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[19] (void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.parser != null
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.Object:equals

        owner.doNotification(
    //#ChannelEventHandler.java:94: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                isMyself(cChannelClient) ? "channelSelfExternalMessage" : "channelMessage",
                CoreActionType.CHANNEL_MESSAGE, cChannelClient, sMessage);
    }
    //#ChannelEventHandler.java:97: end of method: void com.dmdirc.ChannelEventHandler.onChannelMessage(IRCParser, ChannelInfo, ChannelClientInfo, String, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelGotNames(final IRCParser tParser, final ChannelInfo cChannel) {
        checkParser(tParser);
    //#ChannelEventHandler.java:102: method: void com.dmdirc.ChannelEventHandler.onChannelGotNames(IRCParser, ChannelInfo)
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): __Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): cChannel
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com.dmdirc.actions.CoreActionType__static_init.new CoreActionType(CoreActionType__static_init#42).__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com.dmdirc.actions.CoreActionType__static_init.new CoreActionType(CoreActionType__static_init#42).type
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com.dmdirc.actions.metatypes.ChannelEvents__static_init.new ChannelEvents(ChannelEvents__static_init#1).__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Channel.__Dispatch_Table.setClients(Ljava/util/List;)V
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/ActionManager.killSwitch
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/ActionManager.listeners
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/CoreActionType.CHANNEL_GOTNAMES
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/CoreActionType.__Dispatch_Table.getType()Lcom/dmdirc/actions/interfaces/ActionMetaType;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/interfaces/ActionMetaType]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/ActionEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/ChannelEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/ClientEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/PluginEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/QueryEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/actions/metatypes/ServerEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[com/dmdirc/addons/dcc/actions/DCCEvents]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionMetaType.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionType.__Descendant_Table[com/dmdirc/actions/CoreActionType]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionType.__Descendant_Table[com/dmdirc/actions/interfaces/ActionType]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionType.__Descendant_Table[com/dmdirc/addons/dcc/actions/DCCActions]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionType.__Descendant_Table[others]
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/interfaces/ActionType.__Dispatch_Table.getType()Lcom/dmdirc/actions/interfaces/ActionMetaType;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/ActionEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/ChannelEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/ClientEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/PluginEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/QueryEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/actions/metatypes/ServerEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/addons/dcc/actions/DCCActions.__Dispatch_Table.getType()Lcom/dmdirc/actions/interfaces/ActionMetaType;
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/addons/dcc/actions/DCCEvents.__Dispatch_Table.getArity()I
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): tParser
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.myState
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.myState.__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.server
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.server.__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.server.myState
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.server.myState.__Tag
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.tabCompleter
    //#input(void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.window
    //#output(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerManager.me
    //#output(void onChannelGotNames(IRCParser, ChannelInfo)): new ArrayList(ServerManager#1) num objects
    //#output(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1) num objects
    //#output(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1).__Tag
    //#output(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1).servers
    //#new obj(void onChannelGotNames(IRCParser, ChannelInfo)): new ArrayList(ServerManager#1)
    //#new obj(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1)
    //#pre[1] (void onChannelGotNames(IRCParser, ChannelInfo)): cChannel != null
    //#pre[4] (void onChannelGotNames(IRCParser, ChannelInfo)): init'ed(com/dmdirc/actions/ActionManager.killSwitch)
    //#pre[8] (void onChannelGotNames(IRCParser, ChannelInfo)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[9] (void onChannelGotNames(IRCParser, ChannelInfo)): this.owner != null
    //#pre[10] (void onChannelGotNames(IRCParser, ChannelInfo)): this.owner != null
    //#pre[12] (void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[23] (void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.tabCompleter != null
    //#pre[24] (void onChannelGotNames(IRCParser, ChannelInfo)): this.owner.window != null
    //#pre[2] (void onChannelGotNames(IRCParser, ChannelInfo)): (soft) com.dmdirc.actions.CoreActionType__static_init.new CoreActionType(CoreActionType__static_init#42).type != null
    //#pre[5] (void onChannelGotNames(IRCParser, ChannelInfo)): (soft) init'ed(com/dmdirc/ServerManager.me)
    //#pre[17] (void onChannelGotNames(IRCParser, ChannelInfo)): (soft) this.owner.server != null
    //#presumption(void onChannelGotNames(IRCParser, ChannelInfo)): com.dmdirc.parser.irc.ChannelInfo:getChannelClients(...)@104 != null
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): com/dmdirc/ServerManager.me == old com/dmdirc/ServerManager.me
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ArrayList(ServerManager#1) num objects == undefined
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ArrayList(ServerManager#1) num objects == 0, if init'ed
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1) num objects == new ArrayList(ServerManager#1) num objects
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1).__Tag == new ArrayList(ServerManager#1) num objects
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1).servers == undefined
    //#post(void onChannelGotNames(IRCParser, ChannelInfo)): new ServerManager(getServerManager#1).servers == null
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getType
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.util.MapList:containsKey
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.util.MapList:get
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.ArrayList:iterator
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:trigger
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getArity
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.interfaces.ActionListener:processEvent
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:triggerActions
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:addEntry
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:clear
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.actions.ConditionTree$OPERATION:ordinal
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:pollFirst
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Character:instanceof
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Character:charValue
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:isEmpty
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:readTerm
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.ArrayDeque
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:pollLast
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:addFirst
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:parseStack
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:poll
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:add
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Deque:size
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptions
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder:indexOf
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuilder:replace
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:[Ljava.lang.String;:instanceof
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.String:instanceof
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer:insert
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:doServerSubstitutions
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:doComponentSubstitutions
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getState
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ServerState:equals
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getCompatibleComponents
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.Object:toString
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:get
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getArgTypes
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:test
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:evaluate
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getUI
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.interfaces.UIController:getActiveWindow
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:getFrame
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:instanceof
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.commandparser.parsers.GlobalCommandParser:getGlobalCommandParser
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.ui.interfaces.InputWindow:getCommandParser
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:com.dmdirc.commandparser.parsers.CommandParser:parseCommand
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer:setLength
    //#unanalyzed(void onChannelGotNames(IRCParser, ChannelInfo)): Effects-of-calling:java.lang.StringBuffer:append

        owner.setClients(cChannel.getChannelClients());
    //#ChannelEventHandler.java:104: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.parser.irc.ChannelInfo:getChannelClients()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelGotNames(IRCParser, ChannelInfo)
    //#    unanalyzed callee: List com.dmdirc.parser.irc.ChannelInfo:getChannelClients()
        ActionManager.processEvent(CoreActionType.CHANNEL_GOTNAMES, null, owner);
    //#ChannelEventHandler.java:105: ?!precondition failure
    //#    com/dmdirc/actions/ActionManager.processEvent: (soft) type.type.__Tag in {com/dmdirc/actions/interfaces/ActionMetaType, com/dmdirc/actions/metatypes/ActionEvents, com/dmdirc/actions/metatypes/ChannelEvents, com/dmdirc/actions/metatypes/ClientEvents, com/dmdirc/actions/metatypes/PluginEvents, com/dmdirc/actions/metatypes/QueryEvents, com/dmdirc/actions/metatypes/ServerEvents, com/dmdirc/addons/dcc/actions/DCCEvents}
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelGotNames(IRCParser, ChannelInfo)
    //#    basic block: Entry_BB_1
    //#    assertion: (soft) undefined in {340_736, 341_760, 342_528, 343_040, 343_552, 344_064, 344_576, 362_496}
    //#    callee: void com/dmdirc/actions/ActionManager.processEvent(ActionType, StringBuffer, Object[])
    //#    callee assertion: (soft) type.type.__Tag in {com/dmdirc/actions/interfaces/ActionMetaType, com/dmdirc/actions/metatypes/ActionEvents, com/dmdirc/actions/metatypes/ChannelEvents, com/dmdirc/actions/metatypes/ClientEvents, com/dmdirc/actions/metatypes/PluginEvents, com/dmdirc/actions/metatypes/QueryEvents, com/dmdirc/actions/metatypes/ServerEvents, com/dmdirc/addons/dcc/actions/DCCEvents}
    //#    callee file: ActionManager.java
    //#    callee precondition index: [29]
    //#    callee srcpos: 365
    //#    VN: undefined
    //#    Expected: {340_736, 341_760, 342_528, 343_040, 343_552, 344_064, 344_576, 362_496}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    }
    //#ChannelEventHandler.java:106: end of method: void com.dmdirc.ChannelEventHandler.onChannelGotNames(IRCParser, ChannelInfo)

    /** {@inheritDoc} */
    @Override
    public void onChannelTopic(final IRCParser tParser,
            final ChannelInfo cChannel, final boolean bIsJoinTopic) {
        checkParser(tParser);
    //#ChannelEventHandler.java:112: method: void com.dmdirc.ChannelEventHandler.onChannelTopic(IRCParser, ChannelInfo, bool)
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): " - "._tainted
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): __Descendant_Table[others]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): bIsJoinTopic
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): cChannel
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Channel.__Dispatch_Table.addTopic(Lcom/dmdirc/Topic;)V
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/actions/CoreActionType.CHANNEL_GOTTOPIC
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): com/dmdirc/actions/CoreActionType.CHANNEL_TOPICCHANGE
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): tParser
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.__Tag
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.__Tag
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.channelInfo
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.myState
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.myState.__Tag
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.server
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.server.__Tag
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.server.myState
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.server.myState.__Tag
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.topics
    //#input(void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.window
    //#pre[2] (void onChannelTopic(IRCParser, ChannelInfo, bool)): cChannel != null
    //#pre[5] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner != null
    //#pre[7] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner != null
    //#pre[9] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[10] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.channelInfo != null
    //#pre[21] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.topics != null
    //#pre[22] (void onChannelTopic(IRCParser, ChannelInfo, bool)): this.owner.window != null
    //#pre[15] (void onChannelTopic(IRCParser, ChannelInfo, bool)): (soft) this.owner.server != null
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.parser.irc.ChannelInfo:getName
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.ui.messages.Styliser:stipControlCodes
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.parser.irc.ChannelInfo:getTopic
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:setTitle
    //#unanalyzed(void onChannelTopic(IRCParser, ChannelInfo, bool)): Effects-of-calling:com.dmdirc.util.RollingList:add
    //#test_vector(void onChannelTopic(IRCParser, ChannelInfo, bool)): bIsJoinTopic: {0}, {1}

        final Topic newTopic = new Topic(cChannel.getTopic(),
    //#ChannelEventHandler.java:114: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getTopic()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getTopic()
    //#ChannelEventHandler.java:114: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getTopicUser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getTopicUser()
    //#ChannelEventHandler.java:114: Warning: method not available - call not analyzed
    //#    call on long com.dmdirc.parser.irc.ChannelInfo:getTopicTime()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: long com.dmdirc.parser.irc.ChannelInfo:getTopicTime()
                cChannel.getTopicUser(), cChannel.getTopicTime());

        if (bIsJoinTopic) {
            owner.doNotification("channelTopicDiscovered", CoreActionType.CHANNEL_GOTTOPIC,
    //#ChannelEventHandler.java:118: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    newTopic);
        } else {
            owner.doNotification("channelTopicChanged", CoreActionType.CHANNEL_TOPICCHANGE,
    //#ChannelEventHandler.java:121: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getTopicUser()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getTopicUser()
    //#ChannelEventHandler.java:121: Warning: method not available - call not analyzed
    //#    call on ChannelClientInfo com.dmdirc.parser.irc.ChannelInfo:getUser(String, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: ChannelClientInfo com.dmdirc.parser.irc.ChannelInfo:getUser(String, bool)
    //#ChannelEventHandler.java:121: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelInfo:getTopic()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelInfo:getTopic()
    //#ChannelEventHandler.java:121: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelTopic(IRCParser, ChannelInfo, bool)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    cChannel.getUser(cChannel.getTopicUser(), true), cChannel.getTopic());
        }

        owner.addTopic(newTopic);
    }
    //#ChannelEventHandler.java:126: end of method: void com.dmdirc.ChannelEventHandler.onChannelTopic(IRCParser, ChannelInfo, bool)

    /** {@inheritDoc} */
    @Override
    public void onChannelJoin(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient) {
        checkParser(tParser);
    //#ChannelEventHandler.java:132: method: void com.dmdirc.ChannelEventHandler.onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): __Descendant_Table[others]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): cChannelClient
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Channel.__Dispatch_Table.addClient(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): com/dmdirc/actions/CoreActionType.CHANNEL_JOIN
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): tParser
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.__Tag
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.__Tag
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.myState
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.myState.__Tag
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.server
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.server.__Tag
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.server.myState
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.server.myState.__Tag
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.tabCompleter
    //#input(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.window
    //#pre[1] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): cChannelClient != null
    //#pre[4] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[5] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner != null
    //#pre[6] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner != null
    //#pre[8] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[19] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.tabCompleter != null
    //#pre[20] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): this.owner.window != null
    //#pre[13] (void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): (soft) this.owner.server != null
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:addEntry
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:addName
    //#unanalyzed(void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname

        owner.doNotification("channelJoin", CoreActionType.CHANNEL_JOIN, cChannelClient);
    //#ChannelEventHandler.java:134: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
        owner.addClient(cChannelClient);
    }
    //#ChannelEventHandler.java:136: end of method: void com.dmdirc.ChannelEventHandler.onChannelJoin(IRCParser, ChannelInfo, ChannelClientInfo)

    /** {@inheritDoc} */
    @Override
    public void onChannelPart(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sReason) {
        checkParser(tParser);
    //#ChannelEventHandler.java:142: method: void com.dmdirc.ChannelEventHandler.onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): ""._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Part"._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Reason"._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Self"._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): "channel"._tainted
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.removeClient(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.resetWindow()V
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/CustomWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/CustomWindow]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/FrameContainer]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/GlobalWindow]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/MessageTarget]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Query]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Raw]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/WritableFrameContainer]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCChatWindow]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCFrame]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCPlugin$3]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCSendWindow]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/GlobalWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/MessageTarget.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Query.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Raw.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/WritableFrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/actions/CoreActionType.CHANNEL_PART
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCChatWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCFrame.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCPlugin$3.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCSendWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): sReason
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): tParser
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.changer
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.config
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.listeners
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState.__Tag
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState.__Tag
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter
    //#input(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window
    //#output(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.icon
    //#output(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.onChannel
    //#pre[1] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient != null
    //#pre[4] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): sReason != null
    //#pre[7] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[8] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[9] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[11] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[20] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server != null
    //#pre[21] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[25] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser != null
    //#pre[26] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter != null
    //#pre[27] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window != null
    //#pre[13] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): (soft) this.owner.config != null
    //#pre[14] (void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): (soft) this.owner.listeners != null
    //#post(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.icon == One-of{old this.owner.icon, &"channel-inactive"}
    //#post(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): possibly_updated(this.owner.onChannel)
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:setIcon
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:removeName
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getFrame
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.interfaces.IconChangeListener:iconChanged
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:removeListener
    //#unanalyzed(void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener

        owner.doNotification("channel"
    //#ChannelEventHandler.java:144: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                + (isMyself(cChannelClient) ? "Self" : "") + "Part"
                + (sReason.isEmpty() ? "" : "Reason"), CoreActionType.CHANNEL_PART,
                cChannelClient, sReason);
        owner.removeClient(cChannelClient);
    }
    //#ChannelEventHandler.java:149: end of method: void com.dmdirc.ChannelEventHandler.onChannelPart(IRCParser, ChannelInfo, ChannelClientInfo, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelKick(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cKickedClient, final ChannelClientInfo cKickedByClient,
            final String sReason, final String sKickedByHost) {
        checkParser(tParser);
    //#ChannelEventHandler.java:156: method: void com.dmdirc.ChannelEventHandler.onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): ""._tainted
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): "Reason"._tainted
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): "channelKick"._tainted
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): cKickedByClient
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): cKickedClient
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.removeClient(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.resetWindow()V
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/CustomWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/CustomWindow]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/FrameContainer]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/GlobalWindow]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/MessageTarget]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Query]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Raw]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/WritableFrameContainer]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCChatWindow]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCFrame]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCPlugin$3]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCSendWindow]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/FrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/GlobalWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/MessageTarget.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Query.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Raw.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/WritableFrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_KICK
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/addons/dcc/DCCChatWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/addons/dcc/DCCFrame.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/addons/dcc/DCCPlugin$3.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/addons/dcc/DCCSendWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): sReason
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.changer
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.config
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.listeners
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.parser
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.tabCompleter
    //#input(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.window
    //#output(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.icon
    //#output(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.onChannel
    //#pre[2] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): cKickedClient != null
    //#pre[5] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): sReason != null
    //#pre[8] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[9] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[10] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[12] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[21] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server != null
    //#pre[22] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[26] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.parser != null
    //#pre[27] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.tabCompleter != null
    //#pre[28] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.window != null
    //#pre[14] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): (soft) this.owner.config != null
    //#pre[15] (void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): (soft) this.owner.listeners != null
    //#post(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.icon == One-of{old this.owner.icon, &"channel-inactive"}
    //#post(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): possibly_updated(this.owner.onChannel)
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:setIcon
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:removeName
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getFrame
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.interfaces.IconChangeListener:iconChanged
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:removeListener
    //#unanalyzed(void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener

        owner.doNotification("channelKick" + (sReason.isEmpty() ? "" : "Reason"),
    //#ChannelEventHandler.java:158: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                CoreActionType.CHANNEL_KICK, cKickedByClient, cKickedClient, sReason);
        owner.removeClient(cKickedClient);
    }
    //#ChannelEventHandler.java:161: end of method: void com.dmdirc.ChannelEventHandler.onChannelKick(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelQuit(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sReason) {
        checkParser(tParser);
    //#ChannelEventHandler.java:167: method: void com.dmdirc.ChannelEventHandler.onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): ""._tainted
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Reason"._tainted
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): "channelQuit"._tainted
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.removeClient(Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.resetWindow()V
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/CustomWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/CustomWindow]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/FrameContainer]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/GlobalWindow]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/MessageTarget]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Query]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Raw]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/WritableFrameContainer]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCChatWindow]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCFrame]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCPlugin$3]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[com/dmdirc/addons/dcc/DCCSendWindow]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/FrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/GlobalWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/MessageTarget.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Query.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Raw.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/WritableFrameContainer.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/actions/CoreActionType.CHANNEL_QUIT
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCChatWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCFrame.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCPlugin$3.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/addons/dcc/DCCSendWindow.__Dispatch_Table.getFrame()Lcom/dmdirc/ui/interfaces/Window;
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): sReason
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): tParser
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.changer
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.config
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.listeners
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState.__Tag
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState.__Tag
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter
    //#input(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window
    //#output(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.icon
    //#output(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.onChannel
    //#pre[1] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient != null
    //#pre[4] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): sReason != null
    //#pre[7] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[8] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[9] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[11] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[20] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server != null
    //#pre[21] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[25] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser != null
    //#pre[26] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter != null
    //#pre[27] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window != null
    //#pre[13] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): (soft) this.owner.config != null
    //#pre[14] (void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): (soft) this.owner.listeners != null
    //#post(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.icon == One-of{old this.owner.icon, &"channel-inactive"}
    //#post(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): possibly_updated(this.owner.onChannel)
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getNickname
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:setIcon
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:removeName
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getFrame
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.interfaces.IconChangeListener:iconChanged
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:removeListener
    //#unanalyzed(void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:addChangeListener

        owner.doNotification("channelQuit" + (sReason.isEmpty() ? "" : "Reason"),
    //#ChannelEventHandler.java:169: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                CoreActionType.CHANNEL_QUIT, cChannelClient, sReason);
        owner.removeClient(cChannelClient);
    }
    //#ChannelEventHandler.java:172: end of method: void com.dmdirc.ChannelEventHandler.onChannelQuit(IRCParser, ChannelInfo, ChannelClientInfo, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelAction(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sMessage,
            final String sHost) {
        checkParser(tParser);
    //#ChannelEventHandler.java:179: method: void com.dmdirc.ChannelEventHandler.onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_ACTION
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sMessage
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#input(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.parser
    //#pre[1] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient != null
    //#pre[5] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[7] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[9] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[14] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server != null
    //#pre[15] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[19] (void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.parser != null
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.Object:equals

        owner.doNotification(
    //#ChannelEventHandler.java:181: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                isMyself(cChannelClient) ? "channelSelfExternalAction" : "channelAction",
                CoreActionType.CHANNEL_ACTION, cChannelClient, sMessage);
    }
    //#ChannelEventHandler.java:184: end of method: void com.dmdirc.ChannelEventHandler.onChannelAction(IRCParser, ChannelInfo, ChannelClientInfo, String, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelNickChanged(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sOldNick) {
        checkParser(tParser);
    //#ChannelEventHandler.java:190: method: void com.dmdirc.ChannelEventHandler.onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Descendant_Table[others]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.refreshClients()V
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.__Dispatch_Table.renameClient(Ljava/lang/String;Ljava/lang/String;)V
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Channel.com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): com/dmdirc/actions/CoreActionType.CHANNEL_NICKCHANGE
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): sOldNick
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): tParser
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.myState.__Tag
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.myState.__Tag
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter
    //#input(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window
    //#pre[1] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): cChannelClient != null
    //#pre[5] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[7] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner != null
    //#pre[9] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[14] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server != null
    //#pre[15] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[19] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.server.parser != null
    //#pre[20] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.tabCompleter != null
    //#pre[21] (void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): this.owner.window != null
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:addEntry
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#unanalyzed(void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry

        owner.doNotification(
    //#ChannelEventHandler.java:192: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                isMyself(cChannelClient) ? "channelSelfNickChange" : "channelNickChange",
                CoreActionType.CHANNEL_NICKCHANGE, cChannelClient, sOldNick);
        owner.renameClient(sOldNick, cChannelClient.getNickname());
    //#ChannelEventHandler.java:195: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    }
    //#ChannelEventHandler.java:196: end of method: void com.dmdirc.ChannelEventHandler.onChannelNickChanged(IRCParser, ChannelInfo, ChannelClientInfo, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelModeChanged(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sHost,
            final String sModes) {
        checkParser(tParser);
    //#ChannelEventHandler.java:203: method: void com.dmdirc.ChannelEventHandler.onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.refreshClients()V
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_MODECHANGE
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_MODESDISCOVERED
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sHost
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sModes
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.parser
    //#input(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.window
    //#pre[2] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sHost != null
    //#pre[6] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[7] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[8] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[10] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[21] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.window != null
    //#pre[1] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) cChannelClient != null
    //#pre[3] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) sModes != null
    //#pre[15] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) this.owner.server != null
    //#pre[16] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) this.owner.server.__Tag == com/dmdirc/Server
    //#pre[20] (void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) this.owner.server.parser != null
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.ChannelClientInfo:getClient
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:getMyself
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.ui.interfaces.ChannelWindow:updateNames
    //#test_vector(void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): java.lang.String:isEmpty(...)@205: {0}, {1}

        if (sHost.isEmpty()) {
            owner.doNotification(sModes.length() <= 1 ? "channelNoModes"
    //#ChannelEventHandler.java:206: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    : "channelModeDiscovered", CoreActionType.CHANNEL_MODESDISCOVERED,
                    sModes.length() <= 1 ? "" : sModes);
        } else {
            owner.doNotification(isMyself(cChannelClient) ? "channelSelfModeChanged"
    //#ChannelEventHandler.java:210: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    : "channelModeChanged", CoreActionType.CHANNEL_MODECHANGE,
                    cChannelClient, sModes);
        }

        owner.refreshClients();
    }
    //#ChannelEventHandler.java:216: end of method: void com.dmdirc.ChannelEventHandler.onChannelModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, String, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelUserModeChanged(final IRCParser tParser,
            final ChannelInfo cChannel, final ChannelClientInfo cChangedClient,
            final ChannelClientInfo cSetByClient, final String sHost, final String sMode) {
        checkParser(tParser);
    //#ChannelEventHandler.java:223: method: void com.dmdirc.ChannelEventHandler.onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): "channelSplitUserMode_"._tainted
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): cChangedClient
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): cSetByClient
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_USERMODECHANGE
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): sMode
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): sMode._tainted
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#pre[7] (void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[8] (void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[9] (void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[16] (void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): (soft) this.owner.server != null
    //#presumption(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com.dmdirc.Channel:getConfigManager(...)@225 != null
    //#presumption(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com.dmdirc.Channel:getConfigManager(...)@228 != null
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#test_vector(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com.dmdirc.config.ConfigManager:getOptionBool(...)@225: {0}, {1}
    //#test_vector(void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)): com.dmdirc.config.ConfigManager:hasOptionString(...)@228: {1}, {0}

        if (owner.getConfigManager().getOptionBool("channel", "splitusermodes")) {
    //#ChannelEventHandler.java:225: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.Channel:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.Channel:getConfigManager()
    //#ChannelEventHandler.java:225: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
            String format = "channelSplitUserMode_" + sMode;

            if (!owner.getConfigManager().hasOptionString("formatter", format)) {
    //#ChannelEventHandler.java:228: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.Channel:getConfigManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: ConfigManager com.dmdirc.Channel:getConfigManager()
    //#ChannelEventHandler.java:228: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
                format = "channelSplitUserMode_default";
            }

            owner.doNotification(format, CoreActionType.CHANNEL_USERMODECHANGE,
    //#ChannelEventHandler.java:232: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    cSetByClient, cChangedClient, sMode);
        }
    }
    //#ChannelEventHandler.java:235: end of method: void com.dmdirc.ChannelEventHandler.onChannelUserModeChanged(IRCParser, ChannelInfo, ChannelClientInfo, ChannelClientInfo, String, String)

    /** {@inheritDoc} */
    @Override
    public void onChannelCTCP(final IRCParser tParser, final ChannelInfo cChannel,
            final ChannelClientInfo cChannelClient, final String sType,
            final String sMessage, final String sHost) {
        checkParser(tParser);
    //#ChannelEventHandler.java:242: method: void com.dmdirc.ChannelEventHandler.onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): " - http:..www.dmdirc.com."._tainted
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): "DMDirc "._tainted
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): __Descendant_Table[others]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): cChannelClient
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/Server.__Dispatch_Table.sendCTCPReply(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_CTCP
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): sMessage
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): sType
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): tParser
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.__Tag
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.__Tag
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.myState
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.myState.__Tag
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.__Tag
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.config
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.myState
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.myState.__Tag
    //#input(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.parser
    //#pre[1] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): cChannelClient != null
    //#pre[3] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): sType != null
    //#pre[6] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[7] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner != null
    //#pre[8] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner != null
    //#pre[10] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[15] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server != null
    //#pre[16] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): this.owner.server.__Tag == com/dmdirc/Server
    //#pre[17] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): (soft) this.owner.server.config != null
    //#pre[21] (void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): (soft) this.owner.server.parser != null
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:getConfigManager
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:sendCTCPReply

        owner.doNotification("channelCTCP", CoreActionType.CHANNEL_CTCP,
    //#ChannelEventHandler.java:244: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                cChannelClient, sType, sMessage);
        owner.getServer().sendCTCPReply(cChannelClient.getNickname(), sType, sMessage);
    //#ChannelEventHandler.java:246: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)
    //#    unanalyzed callee: String com.dmdirc.parser.irc.ChannelClientInfo:getNickname()
    }
    //#ChannelEventHandler.java:247: end of method: void com.dmdirc.ChannelEventHandler.onChannelCTCP(IRCParser, ChannelInfo, ChannelClientInfo, String, String, String)

    /** {@inheritDoc} */
    @Override
    public void onAwayStateOther(final IRCParser tParser,
            final ClientInfo client, final boolean state) {
        checkParser(tParser);
    //#ChannelEventHandler.java:253: method: void com.dmdirc.ChannelEventHandler.onAwayStateOther(IRCParser, ClientInfo, bool)
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): __Descendant_Table[others]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): client
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Channel.__Dispatch_Table.getChannelInfo()Lcom/dmdirc/parser/irc/ChannelInfo;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/actions/CoreActionType.CHANNEL_USERAWAY
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): com/dmdirc/actions/CoreActionType.CHANNEL_USERBACK
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): state
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): tParser
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.__Tag
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.__Tag
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.channelInfo
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.myState
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.myState.__Tag
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.server
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.server.__Tag
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.server.myState
    //#input(void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.server.myState.__Tag
    //#pre[5] (void onAwayStateOther(IRCParser, ClientInfo, bool)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner != null
    //#pre[7] (void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner != null
    //#pre[9] (void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.__Tag == com/dmdirc/Channel
    //#pre[10] (void onAwayStateOther(IRCParser, ClientInfo, bool)): this.owner.channelInfo != null
    //#pre[15] (void onAwayStateOther(IRCParser, ClientInfo, bool)): (soft) this.owner.server != null
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:getServer
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:getParser
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:getStatus
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onAwayStateOther(IRCParser, ClientInfo, bool)): Effects-of-calling:java.lang.IllegalArgumentException
    //#test_vector(void onAwayStateOther(IRCParser, ClientInfo, bool)): com.dmdirc.parser.irc.ChannelInfo:getUser(...)@255: Addr_Set{null}, Inverse{null}

        final ChannelClientInfo channelClient = owner.getChannelInfo().getUser(client);
    //#ChannelEventHandler.java:255: Warning: method not available - call not analyzed
    //#    call on ChannelClientInfo com.dmdirc.parser.irc.ChannelInfo:getUser(ClientInfo)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onAwayStateOther(IRCParser, ClientInfo, bool)
    //#    unanalyzed callee: ChannelClientInfo com.dmdirc.parser.irc.ChannelInfo:getUser(ClientInfo)

        if (channelClient != null) {
            owner.doNotification(state ? "channelUserAway" : "channelUserBack",
    //#ChannelEventHandler.java:258: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onAwayStateOther(IRCParser, ClientInfo, bool)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                    state ? CoreActionType.CHANNEL_USERAWAY : CoreActionType.CHANNEL_USERBACK,
                    channelClient);
        }
    }
    //#ChannelEventHandler.java:262: end of method: void com.dmdirc.ChannelEventHandler.onAwayStateOther(IRCParser, ClientInfo, bool)

    /** {@inheritDoc} */
    @Override
    public void onChannelNotice(final IRCParser tParser,
            final ChannelInfo cChannel, final ChannelClientInfo cChannelClient,
            final String sMessage, final String sHost) {
        checkParser(tParser);
    //#ChannelEventHandler.java:269: method: void com.dmdirc.ChannelEventHandler.onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): "Event called from a parser that's not in use.&#10;&#10; "._tainted
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Descendant_Table[others]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): cChannelClient
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[com/dmdirc/Channel]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Descendant_Table[others]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Channel.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/EventHandler]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ServerEventHandler]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Descendant_Table[others]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/EventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getParser()Lcom/dmdirc/parser/irc/IRCParser;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/Server.__Dispatch_Table.getStatus()Lcom/dmdirc/ServerStatus;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerEventHandler.__Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[com/dmdirc/ServerStatus]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Descendant_Table[others]
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/ServerStatus.__Dispatch_Table.getTransitionHistory()Ljava/lang/String;
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): com/dmdirc/actions/CoreActionType.CHANNEL_NOTICE
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): sMessage
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): tParser
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.__Tag
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.myState.__Tag
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.__Tag
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState
    //#input(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner.server.myState.__Tag
    //#pre[5] (void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.__Tag == com/dmdirc/ChannelEventHandler
    //#pre[6] (void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[7] (void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): this.owner != null
    //#pre[14] (void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): (soft) this.owner.server != null
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getServer
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getParser
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.parser.irc.IRCParser:disconnect
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:getStatus
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:com.dmdirc.util.RollingList:getList
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)): Effects-of-calling:java.lang.IllegalArgumentException

        owner.doNotification("channelNotice", CoreActionType.CHANNEL_NOTICE,
    //#ChannelEventHandler.java:271: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.ChannelEventHandler
    //#    method: void onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)
    //#    unanalyzed callee: void com.dmdirc.Channel:doNotification(String, ActionType, Object[])
                cChannelClient, sMessage);
    }
    //#ChannelEventHandler.java:273: end of method: void com.dmdirc.ChannelEventHandler.onChannelNotice(IRCParser, ChannelInfo, ChannelClientInfo, String, String)

}
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.addCallback(Lcom/dmdirc/parser/irc/callbacks/CallbackManager;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.getServer()Lcom/dmdirc/Server;
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.isMyself(Lcom/dmdirc/parser/irc/ChannelClientInfo;)Z
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onAwayStateOther(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ClientInfo;Z)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelAction(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelCTCP(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelGotNames(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelJoin(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelKick(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelMessage(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelModeChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelNickChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelNotice(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelPart(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelQuit(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelTopic(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Z)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelUserModeChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.registerCallbacks()V
    //#output(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.unregisterCallbacks()V
    //#output(com.dmdirc.ChannelEventHandler__static_init): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler]
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Descendant_Table[com/dmdirc/ChannelEventHandler] == &__Dispatch_Table
    //#post(com.dmdirc.ChannelEventHandler__static_init): com/dmdirc/EventHandler.__Descendant_Table[com/dmdirc/ChannelEventHandler] == &__Dispatch_Table
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.addCallback(Lcom/dmdirc/parser/irc/callbacks/CallbackManager;Ljava/lang/String;)V == &addCallback
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.checkParser(Lcom/dmdirc/parser/irc/IRCParser;)V == &com/dmdirc/EventHandler.checkParser
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.getServer()Lcom/dmdirc/Server; == &getServer
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.isMyself(Lcom/dmdirc/parser/irc/ChannelClientInfo;)Z == &isMyself
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onAwayStateOther(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ClientInfo;Z)V == &onAwayStateOther
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelAction(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelAction
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelCTCP(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V == &onChannelCTCP
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelGotNames(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;)V == &onChannelGotNames
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelJoin(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;)V == &onChannelJoin
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelKick(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelKick
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelMessage(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelMessage
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelModeChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelModeChanged
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelNickChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V == &onChannelNickChanged
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelNotice(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelNotice
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelPart(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V == &onChannelPart
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelQuit(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;)V == &onChannelQuit
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelTopic(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Z)V == &onChannelTopic
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.onChannelUserModeChanged(Lcom/dmdirc/parser/irc/IRCParser;Lcom/dmdirc/parser/irc/ChannelInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Lcom/dmdirc/parser/irc/ChannelClientInfo;Ljava/lang/String;Ljava/lang/String;)V == &onChannelUserModeChanged
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.registerCallbacks()V == &com/dmdirc/EventHandler.registerCallbacks
    //#post(com.dmdirc.ChannelEventHandler__static_init): __Dispatch_Table.unregisterCallbacks()V == &com/dmdirc/EventHandler.unregisterCallbacks
    //#ChannelEventHandler.java:: end of method: com.dmdirc.ChannelEventHandler.com.dmdirc.ChannelEventHandler__static_init
    //#ChannelEventHandler.java:: end of class: com.dmdirc.ChannelEventHandler
