//# 0 errors, 353 messages
//#
/*
    //#ConditionTreeFactory.java:1:1: class: com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType
    //#ConditionTreeFactory.java:1:1: class: com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    //#ConditionTreeFactory.java:1:1: method: com.dmdirc.actions.ConditionTreeFactory$CustomFactory.com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init
    //#ConditionTreeFactory.java:1:1: class: com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#ConditionTreeFactory.java:1:1: method: com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init
    //#ConditionTreeFactory.java:1:1: class: com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#ConditionTreeFactory.java:1:1: method: com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init
    //#ConditionTreeFactory.java:1:1: class: com.dmdirc.actions.ConditionTreeFactory
    //#ConditionTreeFactory.java:1:1: method: com.dmdirc.actions.ConditionTreeFactory.com.dmdirc.actions.ConditionTreeFactory__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.actions;

/**
 * Provides methods to automatically generated condition tree for a specified
 * number of arguments.
 * 
 * @since 0.6
 * @author chris
 */
public abstract class ConditionTreeFactory {
    //#ConditionTreeFactory.java:32: method: void com.dmdirc.actions.ConditionTreeFactory.com.dmdirc.actions.ConditionTreeFactory()
        
    /**
     * Retrieves a condition tree for the specified number of arguments.
     * 
     * @param args The number of arguments in the {@link Action}
     * @return A ConditionTree for the specified number of args
     */
    public abstract ConditionTree getConditionTree(final int args);
    
    /**
     * Retrieves the type this of factory.
     * 
     * @return This factory's type
     */
    public abstract ConditionTreeFactoryType getType();
    
    /**
     * The possible types of ConditionTreeFactories
     */
    public static enum ConditionTreeFactoryType {
    //#ConditionTreeFactory.java:52: method: ConditionTreeFactory$ConditionTreeFactoryType[] com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.values()
    //#input(ConditionTreeFactory$ConditionTreeFactoryType[] values()): $VALUES
    //#input(ConditionTreeFactory$ConditionTreeFactoryType[] values()): $VALUES.length
    //#input(ConditionTreeFactory$ConditionTreeFactoryType[] values()): $VALUES[0..3]
    //#output(ConditionTreeFactory$ConditionTreeFactoryType[] values()): new ConditionTreeFactory$ConditionTreeFactoryType[](values#1) num objects
    //#output(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value.length
    //#output(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value[0..3]
    //#output(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value
    //#new obj(ConditionTreeFactory$ConditionTreeFactoryType[] values()): new ConditionTreeFactory$ConditionTreeFactoryType[](values#1)
    //#pre[1] (ConditionTreeFactory$ConditionTreeFactoryType[] values()): (soft) init'ed($VALUES[0..3])
    //#post(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value == &new ConditionTreeFactory$ConditionTreeFactoryType[](values#1)
    //#post(ConditionTreeFactory$ConditionTreeFactoryType[] values()): new ConditionTreeFactory$ConditionTreeFactoryType[](values#1) num objects == 1
    //#post(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value.length == 3
    //#post(ConditionTreeFactory$ConditionTreeFactoryType[] values()): return_value[0..3] == One-of{$VALUES[0..3], undefined}
    //#ConditionTreeFactory.java:52: end of method: ConditionTreeFactory$ConditionTreeFactoryType[] com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.values()
    //#ConditionTreeFactory.java:52: method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.valueOf(String)
    //#input(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType]
    //#input(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): __Descendant_Table[others]
    //#input(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): name
    //#output(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): return_value
    //#presumption(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): java.lang.Enum:valueOf(...).__Tag@52 == com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType
    //#post(ConditionTreeFactory$ConditionTreeFactoryType valueOf(String)): init'ed(return_value)
    //#ConditionTreeFactory.java:52: end of method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.valueOf(String)
    //#ConditionTreeFactory.java:52: method: void com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType(String, int)
    //#input(void com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType(String, int)): Param_1
    //#input(void com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType(String, int)): Param_2
    //#input(void com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType(String, int)): this
    //#ConditionTreeFactory.java:52: end of method: void com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType(String, int)
        /** Factories that produce disjunction (OR) trees. */
        DISJUNCTION,
    //#ConditionTreeFactory.java:54: method: com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CONJUNCTION
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CUSTOM
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): DISJUNCTION
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType]
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1) num objects
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): DISJUNCTION.__Tag
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2) num objects
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CONJUNCTION.__Tag
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3) num objects
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CUSTOM.__Tag
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType[](ConditionTreeFactory$ConditionTreeFactoryType__static_init#4) num objects
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES.length
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[0]
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[1]
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[2]
    //#new obj(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1)
    //#new obj(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2)
    //#new obj(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3)
    //#new obj(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType[](ConditionTreeFactory$ConditionTreeFactoryType__static_init#4)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES == &new ConditionTreeFactory$ConditionTreeFactoryType[](ConditionTreeFactory$ConditionTreeFactoryType__static_init#4)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CONJUNCTION == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[1] == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CUSTOM == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[2] == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): DISJUNCTION == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES[0] == &new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1)
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1) num objects == 1
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2) num objects == 1
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3) num objects == 1
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): new ConditionTreeFactory$ConditionTreeFactoryType[](ConditionTreeFactory$ConditionTreeFactoryType__static_init#4) num objects == 1
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): DISJUNCTION.__Tag == com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CONJUNCTION.__Tag == com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): CUSTOM.__Tag == com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): $VALUES.length == 3
    //#unanalyzed(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init): Effects-of-calling:java.lang.Enum
        /** Factories that produce conjunction (AND) trees. */
        CONJUNCTION,
        /** Factories that produce custom trees. */
        CUSTOM,
    //#ConditionTreeFactory.java:58: end of method: com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init
    }
    
    /**
     * Creates condition trees where the arguments are conjoined together.
     */
    public static class ConjunctionFactory extends ConditionTreeFactory {
    //#ConditionTreeFactory.java:64: method: void com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory()
    //#input(void com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory()): this
    //#ConditionTreeFactory.java:64: end of method: void com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory()

        /** {@inheritDoc} */
        @Override
        public ConditionTree getConditionTree(final int args) {
            return ConditionTree.createConjunction(args);
    //#ConditionTreeFactory.java:69: method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.getConditionTree(int)
    //#input(ConditionTree getConditionTree(int)): args
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.AND
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.NOOP
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.NOT
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.OR
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.VAR
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[com/dmdirc/actions/ConditionTree]
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[others]
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3) num objects
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).__Tag
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).argument
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).leftArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).op
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).rightArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1) num objects
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).__Tag
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).argument
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).leftArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).op
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).rightArg
    //#output(ConditionTree getConditionTree(int)): return_value
    //#new obj(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3)
    //#new obj(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1)
    //#post(ConditionTree getConditionTree(int)): init'ed(return_value)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3) num objects <= 1
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).__Tag == com/dmdirc/actions/ConditionTree
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).argument == -1
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).leftArg == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).op == &com.dmdirc.actions.ConditionTree$OPERATION__static_init.new ConditionTree$OPERATION(ConditionTree$OPERATION__static_init#5)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).rightArg == null
    //#post(ConditionTree getConditionTree(int)): init'ed(new ConditionTree(readTerm#1) num objects)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).__Tag not init'ed, if init'ed
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).argument == 0, if init'ed
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).leftArg == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).op == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).rightArg == null
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:pollFirst
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:instanceof
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:charValue
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:isEmpty
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:readTerm
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.ArrayDeque
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:pollLast
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:addFirst
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:parseStack
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:poll
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:add
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:size
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:length
    //#ConditionTreeFactory.java:69: end of method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.getConditionTree(int)
        }

        /** {@inheritDoc} */
        @Override
        public ConditionTreeFactoryType getType() {
            return ConditionTreeFactoryType.CONJUNCTION;
    //#ConditionTreeFactory.java:75: method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.getType()
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getType()): com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#output(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value
    //#post(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value == &com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init.new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#2)
    //#ConditionTreeFactory.java:75: end of method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.getType()
        }
        
    }

    /**
     * Creates condition trees where the arguments are disjoined together.
     */
    public static class DisjunctionFactory extends ConditionTreeFactory {
    //#ConditionTreeFactory.java:83: method: void com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory()
    //#input(void com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory()): this
    //#ConditionTreeFactory.java:83: end of method: void com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory()

        /** {@inheritDoc} */
        @Override
        public ConditionTree getConditionTree(final int args) {
            return ConditionTree.createDisjunction(args);
    //#ConditionTreeFactory.java:88: method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.getConditionTree(int)
    //#input(ConditionTree getConditionTree(int)): args
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.AND
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.NOOP
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.NOT
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.OR
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree$OPERATION.VAR
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[com/dmdirc/actions/ConditionTree]
    //#input(ConditionTree getConditionTree(int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[others]
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3) num objects
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).__Tag
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).argument
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).leftArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).op
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).rightArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1) num objects
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).__Tag
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).argument
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).leftArg
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).op
    //#output(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).rightArg
    //#output(ConditionTree getConditionTree(int)): return_value
    //#new obj(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3)
    //#new obj(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1)
    //#post(ConditionTree getConditionTree(int)): init'ed(return_value)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3) num objects <= 1
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).__Tag == com/dmdirc/actions/ConditionTree
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).argument == -1
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).leftArg == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).op == &com.dmdirc.actions.ConditionTree$OPERATION__static_init.new ConditionTree$OPERATION(ConditionTree$OPERATION__static_init#5)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(parseStack#3).rightArg == null
    //#post(ConditionTree getConditionTree(int)): init'ed(new ConditionTree(readTerm#1) num objects)
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).__Tag not init'ed, if init'ed
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).argument == 0, if init'ed
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).leftArg == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).op == null
    //#post(ConditionTree getConditionTree(int)): new ConditionTree(readTerm#1).rightArg == null
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:pollFirst
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:instanceof
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:charValue
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:isEmpty
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:readTerm
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.ArrayDeque
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:pollLast
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:addFirst
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:parseStack
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:poll
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:add
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.util.Deque:size
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(ConditionTree getConditionTree(int)): Effects-of-calling:java.lang.StringBuilder:length
    //#ConditionTreeFactory.java:88: end of method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.getConditionTree(int)
        }
        
        /** {@inheritDoc} */
        @Override
        public ConditionTreeFactoryType getType() {
            return ConditionTreeFactoryType.DISJUNCTION;
    //#ConditionTreeFactory.java:94: method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.getType()
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getType()): com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType.DISJUNCTION
    //#output(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value
    //#post(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value == &com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init.new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#1)
    //#ConditionTreeFactory.java:94: end of method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.getType()
        }
        
    }
    
    /**
     * Creates condition trees with a custom structure.
     */
    public static class CustomFactory extends ConditionTreeFactory {
    //#ConditionTreeFactory.java:102: end of method: void com.dmdirc.actions.ConditionTreeFactory.com.dmdirc.actions.ConditionTreeFactory()
        
        /** The condition tree to use. */
        protected final ConditionTree tree;

        /**
         * Creates a new CustomFactory for the specified tree.
         * 
         * @param tree The tree to use
         */
        public CustomFactory(final ConditionTree tree) {
    //#ConditionTreeFactory.java:112: method: void com.dmdirc.actions.ConditionTreeFactory$CustomFactory.com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#input(void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)): this
    //#input(void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)): tree
    //#output(void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)): this.tree
    //#post(void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)): this.tree == tree
    //#post(void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)): init'ed(this.tree)
            this.tree = tree;
        }
    //#ConditionTreeFactory.java:114: end of method: void com.dmdirc.actions.ConditionTreeFactory$CustomFactory.com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)

        /** {@inheritDoc} */
        @Override
        public ConditionTree getConditionTree(final int args) {
            return tree;
    //#ConditionTreeFactory.java:119: method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$CustomFactory.getConditionTree(int)
    //#input(ConditionTree getConditionTree(int)): this
    //#input(ConditionTree getConditionTree(int)): this.tree
    //#output(ConditionTree getConditionTree(int)): return_value
    //#post(ConditionTree getConditionTree(int)): return_value == this.tree
    //#post(ConditionTree getConditionTree(int)): init'ed(return_value)
    //#ConditionTreeFactory.java:119: end of method: ConditionTree com.dmdirc.actions.ConditionTreeFactory$CustomFactory.getConditionTree(int)
        }
        
        /** {@inheritDoc} */
        @Override
        public ConditionTreeFactoryType getType() {
            return ConditionTreeFactoryType.CUSTOM;
    //#ConditionTreeFactory.java:125: method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$CustomFactory.getType()
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getType()): com/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType.CUSTOM
    //#output(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value
    //#post(ConditionTreeFactory$ConditionTreeFactoryType getType()): return_value == &com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType__static_init.new ConditionTreeFactory$ConditionTreeFactoryType(ConditionTreeFactory$ConditionTreeFactoryType__static_init#3)
    //#ConditionTreeFactory.java:125: end of method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory$CustomFactory.getType()
        }
        
    }
    
    /**
     * Retrieves a factory that will extrapolate the specified
     * {@link ConditionTree} for different number of arguments, if applicable.
     * 
     * @param tree The {@link ConditionTree} that's in use
     * @param args The number of conditions currently in use
     * @return A {@link ConditionTreeFactory} that will create relevant
     * {@link ConditionTree}s
     */
    public static ConditionTreeFactory getFactory(final ConditionTree tree, final int args) {
        if (tree.equals(ConditionTree.createConjunction(args))) {
    //#ConditionTreeFactory.java:140: method: ConditionTreeFactory com.dmdirc.actions.ConditionTreeFactory.getFactory(ConditionTree, int)
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): "!"._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): "&amp;"._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): "("._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): ")"._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): "|"._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): args
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com.dmdirc.actions.ConditionTree$1__static_init.new int[](ConditionTree$1__static_init#1).length
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com.dmdirc.actions.ConditionTree$1__static_init.new int[](ConditionTree$1__static_init#1)[0..4_294_967_295]
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$1.$SwitchMap$com$dmdirc$actions$ConditionTree$OPERATION
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$OPERATION.AND
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$OPERATION.NOOP
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$OPERATION.NOT
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$OPERATION.OR
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree$OPERATION.VAR
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[com/dmdirc/actions/ConditionTree]
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree.__Descendant_Table[others]
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): com/dmdirc/actions/ConditionTree.__Dispatch_Table.toString()Ljava/lang/String;
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree..._tainted
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree.__Tag
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree.argument
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree.leftArg
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree.op
    //#input(ConditionTreeFactory getFactory(ConditionTree, int)): tree.rightArg
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$ConjunctionFactory(getFactory#1) num objects
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$ConjunctionFactory(getFactory#1).__Tag
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3) num objects
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3).__Tag
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3).tree
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$DisjunctionFactory(getFactory#2) num objects
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$DisjunctionFactory(getFactory#2).__Tag
    //#output(ConditionTreeFactory getFactory(ConditionTree, int)): return_value
    //#new obj(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$ConjunctionFactory(getFactory#1)
    //#new obj(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3)
    //#new obj(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$DisjunctionFactory(getFactory#2)
    //#pre[3] (ConditionTreeFactory getFactory(ConditionTree, int)): tree != null
    //#pre[2] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) init'ed(com.dmdirc.actions.ConditionTree$1__static_init.new int[](ConditionTree$1__static_init#1)[0..4_294_967_295])
    //#pre[5] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) tree.__Tag == com/dmdirc/actions/ConditionTree
    //#pre[6] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) init'ed(tree.argument)
    //#pre[7] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) init'ed(tree.leftArg)
    //#pre[8] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) tree.op != null
    //#pre[9] (ConditionTreeFactory getFactory(ConditionTree, int)): (soft) init'ed(tree.rightArg)
    //#presumption(ConditionTreeFactory getFactory(ConditionTree, int)): createConjunction(...).op != null
    //#presumption(ConditionTreeFactory getFactory(ConditionTree, int)): createDisjunction(...).op != null
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): return_value in Addr_Set{&new ConditionTreeFactory$CustomFactory(getFactory#3),&new ConditionTreeFactory$DisjunctionFactory(getFactory#2),&new ConditionTreeFactory$ConjunctionFactory(getFactory#1)}
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$ConjunctionFactory(getFactory#1) num objects <= 1
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$ConjunctionFactory(getFactory#1).__Tag == com/dmdirc/actions/ConditionTreeFactory$ConjunctionFactory
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3) num objects <= 1
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3).__Tag == com/dmdirc/actions/ConditionTreeFactory$CustomFactory
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3).tree == tree
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$CustomFactory(getFactory#3).tree != null
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$DisjunctionFactory(getFactory#2) num objects <= 1
    //#post(ConditionTreeFactory getFactory(ConditionTree, int)): new ConditionTreeFactory$DisjunctionFactory(getFactory#2).__Tag == com/dmdirc/actions/ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:pollFirst
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.Character:instanceof
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.Character:charValue
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:isEmpty
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:readTerm
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.ArrayDeque
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:pollLast
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:addFirst
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:parseStack
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:poll
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:add
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.util.Deque:size
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.StringBuilder:length
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:com.dmdirc.actions.ConditionTree$OPERATION:ordinal
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(ConditionTreeFactory getFactory(ConditionTree, int)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory
            return new ConjunctionFactory();
        } else if (tree.equals(ConditionTree.createDisjunction(args))) {
            return new DisjunctionFactory();
        } else {
            return new CustomFactory(tree);
    //#ConditionTreeFactory.java:145: end of method: ConditionTreeFactory com.dmdirc.actions.ConditionTreeFactory.getFactory(ConditionTree, int)
        }
    }

}
    //#ConditionTreeFactory.java:: end of class: com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType
    //#output(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$CustomFactory]
    //#output(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree;
    //#output(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType;
    //#output(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$CustomFactory]
    //#post(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$CustomFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$CustomFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree; == &getConditionTree
    //#post(com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType; == &getType
    //#ConditionTreeFactory.java:: end of method: com.dmdirc.actions.ConditionTreeFactory$CustomFactory.com.dmdirc.actions.ConditionTreeFactory$CustomFactory__static_init
    //#ConditionTreeFactory.java:: end of class: com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    //#output(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$DisjunctionFactory]
    //#output(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree;
    //#output(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType;
    //#output(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$DisjunctionFactory]
    //#post(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$DisjunctionFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$DisjunctionFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree; == &getConditionTree
    //#post(com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType; == &getType
    //#ConditionTreeFactory.java:: end of method: com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory__static_init
    //#ConditionTreeFactory.java:: end of class: com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConjunctionFactory]
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree;
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType;
    //#output(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConjunctionFactory]
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConjunctionFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): com/dmdirc/actions/ConditionTreeFactory.__Descendant_Table[com/dmdirc/actions/ConditionTreeFactory$ConjunctionFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree; == &getConditionTree
    //#post(com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType; == &getType
    //#ConditionTreeFactory.java:: end of method: com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory.com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory__static_init
    //#ConditionTreeFactory.java:: end of class: com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#output(com.dmdirc.actions.ConditionTreeFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory]
    //#output(com.dmdirc.actions.ConditionTreeFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree;
    //#output(com.dmdirc.actions.ConditionTreeFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType;
    //#post(com.dmdirc.actions.ConditionTreeFactory__static_init): __Descendant_Table[com/dmdirc/actions/ConditionTreeFactory] == &__Dispatch_Table
    //#post(com.dmdirc.actions.ConditionTreeFactory__static_init): __Dispatch_Table.getConditionTree(I)Lcom/dmdirc/actions/ConditionTree; == &getConditionTree
    //#post(com.dmdirc.actions.ConditionTreeFactory__static_init): __Dispatch_Table.getType()Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType; == &getType
    //#ConditionTreeFactory.java:: end of method: com.dmdirc.actions.ConditionTreeFactory.com.dmdirc.actions.ConditionTreeFactory__static_init
    //#ConditionTreeFactory.java:: end of class: com.dmdirc.actions.ConditionTreeFactory
