//# 1 errors, 845 messages
//#
/*
    //#ActionConditionsTreePanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1
    //#ActionConditionsTreePanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#ActionConditionsTreePanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init
 * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.dmdirc.addons.ui_swing.dialogs.actioneditor;

import com.dmdirc.config.prefs.validator.ConditionRuleValidator;
import com.dmdirc.actions.ConditionTree;
import com.dmdirc.actions.ConditionTreeFactory;
import com.dmdirc.actions.ConditionTreeFactory.ConditionTreeFactoryType;
import com.dmdirc.addons.ui_swing.components.text.TextLabel;
import com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import net.miginfocom.swing.MigLayout;

/**
 * Action conditions tree panel.
 */
public class ActionConditionsTreePanel extends JPanel implements ActionListener,
        PropertyChangeListener, DocumentListener {

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 1;
    /** Button group. */
    private ButtonGroup group;
    /** All triggers button. */
    private JRadioButton allButton;
    /** One trigger button. */
    private JRadioButton oneButton;
    /** Custom rule button. */
    private JRadioButton customButton;
    /** Custom rule field. */
    private ValidatingJTextField rule;
    /** Condition tree factory. */
    private ConditionTreeFactory treeFactory;
    /** Condition count. */
    private int conditionCount = 0;
    /** Condition rule validator. */
    private ConditionRuleValidator treeValidator;
    /** validates. */
    private boolean validates = true;

    /** 
     * Instantiates the panel.
     */
    public ActionConditionsTreePanel() {
        super();
    //#ActionConditionsTreePanel.java:80: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): "; "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): "body { font-family: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): "font-size: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): "pt; }"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1).length
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getDocument()Ljavax/swing/text/Document;
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setEnabled(Z)V
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1.$SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ButtonGroup(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionRuleValidator(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JLabel(ValidatingJTextField#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JTextField(ValidatingJTextField#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).errorIcon
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).textField
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).validator
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.allButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.conditionCount
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.customButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.group
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.oneButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.rule
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.treeFactory
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.treeValidator
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.validates
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ButtonGroup(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionRuleValidator(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JLabel(ValidatingJTextField#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JTextField(ValidatingJTextField#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6)
    //#pre[1] (void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): (soft) init'ed(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295])
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length >= 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.allButton == &new JRadioButton(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): init'ed(this.conditionCount)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.customButton == &new JRadioButton(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.group == &new ButtonGroup(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.oneButton == &new JRadioButton(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.rule == &new ValidatingJTextField(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.treeFactory == One-of{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1), &new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2), &new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.treeFactory in Addr_Set{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1),&new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2),&new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.treeValidator == &new ConditionRuleValidator(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).validator == &new ConditionRuleValidator(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): this.validates == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ButtonGroup(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionRuleValidator(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JLabel(ValidatingJTextField#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JRadioButton(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new JTextField(ValidatingJTextField#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).errorIcon == &new JLabel(ValidatingJTextField#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): new ValidatingJTextField(initComponents#6).textField == &new JTextField(ValidatingJTextField#1)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.ButtonGroup
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JRadioButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.config.prefs.validator.ConditionRuleValidator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.Document:addDocumentListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.ButtonGroup:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getType
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getConditionTree
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:sortTreeFactory
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.ButtonGroup:clearSelection
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JRadioButton:setSelected
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTree:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTree:parseString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:javax.swing.JRadioButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addPropertyChangeListener

        initComponents();
        addListeners();
        layoutComponents();

        selectTreeButton();
    }
    //#ActionConditionsTreePanel.java:87: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel()

    /** Initialises the components. */
    private void initComponents() {
        group = new ButtonGroup();
    //#ActionConditionsTreePanel.java:91: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.initComponents()
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void initComponents()): this
    //#input(void initComponents()): this.conditionCount
    //#output(void initComponents()): new ButtonGroup(initComponents#1) num objects
    //#output(void initComponents()): new ConditionRuleValidator(initComponents#5) num objects
    //#output(void initComponents()): new JLabel(ValidatingJTextField#1) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#2) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#3) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#4) num objects
    //#output(void initComponents()): new JTextField(ValidatingJTextField#1) num objects
    //#output(void initComponents()): new ValidatingJTextField(initComponents#6) num objects
    //#output(void initComponents()): this.rule.__Tag
    //#output(void initComponents()): this.rule.errorIcon
    //#output(void initComponents()): this.rule.textField
    //#output(void initComponents()): this.rule.validator
    //#output(void initComponents()): this.allButton
    //#output(void initComponents()): this.customButton
    //#output(void initComponents()): this.group
    //#output(void initComponents()): this.oneButton
    //#output(void initComponents()): this.rule
    //#output(void initComponents()): this.treeValidator
    //#new obj(void initComponents()): new ButtonGroup(initComponents#1)
    //#new obj(void initComponents()): new ConditionRuleValidator(initComponents#5)
    //#new obj(void initComponents()): new JLabel(ValidatingJTextField#1)
    //#new obj(void initComponents()): new JRadioButton(initComponents#2)
    //#new obj(void initComponents()): new JRadioButton(initComponents#3)
    //#new obj(void initComponents()): new JRadioButton(initComponents#4)
    //#new obj(void initComponents()): new JTextField(ValidatingJTextField#1)
    //#new obj(void initComponents()): new ValidatingJTextField(initComponents#6)
    //#pre[2] (void initComponents()): init'ed(this.conditionCount)
    //#post(void initComponents()): this.allButton == &new JRadioButton(initComponents#2)
    //#post(void initComponents()): this.customButton == &new JRadioButton(initComponents#4)
    //#post(void initComponents()): this.group == &new ButtonGroup(initComponents#1)
    //#post(void initComponents()): this.oneButton == &new JRadioButton(initComponents#3)
    //#post(void initComponents()): this.rule == &new ValidatingJTextField(initComponents#6)
    //#post(void initComponents()): this.treeValidator == &new ConditionRuleValidator(initComponents#5)
    //#post(void initComponents()): this.rule.validator == &new ConditionRuleValidator(initComponents#5)
    //#post(void initComponents()): new ButtonGroup(initComponents#1) num objects == 1
    //#post(void initComponents()): new ConditionRuleValidator(initComponents#5) num objects == 1
    //#post(void initComponents()): new JLabel(ValidatingJTextField#1) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#2) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#3) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#4) num objects == 1
    //#post(void initComponents()): new JTextField(ValidatingJTextField#1) num objects == 1
    //#post(void initComponents()): new ValidatingJTextField(initComponents#6) num objects == 1
    //#post(void initComponents()): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#post(void initComponents()): this.rule.errorIcon == &new JLabel(ValidatingJTextField#1)
    //#post(void initComponents()): this.rule.textField == &new JTextField(ValidatingJTextField#1)
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:getDocument
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JComponent
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:setLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:add
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.text.Document:addDocumentListener
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField
        allButton = new JRadioButton("All of the conditions are true");
        oneButton = new JRadioButton("At least one of the conditions is true");
        customButton = new JRadioButton("The conditions match a custom rule");
        treeValidator = new ConditionRuleValidator(conditionCount);
    //#ActionConditionsTreePanel.java:95: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.validator.ConditionRuleValidator(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.config.prefs.validator.ConditionRuleValidator(int)

        rule = new ValidatingJTextField(treeValidator);

        group.add(allButton);
        group.add(oneButton);
        group.add(customButton);
    }
    //#ActionConditionsTreePanel.java:102: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.initComponents()

    /** Adds the listeners. */
    private void addListeners() {
        allButton.addActionListener(this);
    //#ActionConditionsTreePanel.java:106: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.addListeners()
    //#input(void addListeners()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void addListeners()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void addListeners()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getDocument()Ljavax/swing/text/Document;
    //#input(void addListeners()): this
    //#input(void addListeners()): this.allButton
    //#input(void addListeners()): this.customButton
    //#input(void addListeners()): this.oneButton
    //#input(void addListeners()): this.rule
    //#input(void addListeners()): this.rule.__Tag
    //#input(void addListeners()): this.rule.textField
    //#pre[2] (void addListeners()): this.allButton != null
    //#pre[3] (void addListeners()): this.customButton != null
    //#pre[4] (void addListeners()): this.oneButton != null
    //#pre[5] (void addListeners()): this.rule != null
    //#pre[6] (void addListeners()): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[7] (void addListeners()): this.rule.textField != null
    //#presumption(void addListeners()): javax.swing.JTextField:getDocument(...)@332 != null
    //#unanalyzed(void addListeners()): Effects-of-calling:javax.swing.JTextField:getDocument
        oneButton.addActionListener(this);
        customButton.addActionListener(this);
        rule.addPropertyChangeListener("validationResult", this);
    //#ActionConditionsTreePanel.java:109: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addPropertyChangeListener(String, PropertyChangeListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void addListeners()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addPropertyChangeListener(String, PropertyChangeListener)
        rule.getDocument().addDocumentListener(this);
    }
    //#ActionConditionsTreePanel.java:111: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.addListeners()

    /** Lays out the components. */
    private void layoutComponents() {
        setLayout(new MigLayout("fill, wrap 1, pack, hidemode 3"));
    //#ActionConditionsTreePanel.java:115: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.layoutComponents()
    //#ActionConditionsTreePanel.java:115: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#ActionConditionsTreePanel.java:115: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:setLayout(LayoutManager)
    //#input(void layoutComponents()): "; "._tainted
    //#input(void layoutComponents()): "body { font-family: "._tainted
    //#input(void layoutComponents()): "font-size: "._tainted
    //#input(void layoutComponents()): "pt; }"._tainted
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.allButton
    //#input(void layoutComponents()): this.customButton
    //#input(void layoutComponents()): this.oneButton
    //#input(void layoutComponents()): this.rule
    //#pre[2] (void layoutComponents()): init'ed(this.allButton)
    //#pre[3] (void layoutComponents()): init'ed(this.customButton)
    //#pre[4] (void layoutComponents()): init'ed(this.oneButton)
    //#pre[5] (void layoutComponents()): init'ed(this.rule)
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void layoutComponents()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void layoutComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void layoutComponents()): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
        add(new TextLabel("Only execute this action if..."), "growx, pushx");
    //#ActionConditionsTreePanel.java:116: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
        add(allButton, "growx, pushx");
    //#ActionConditionsTreePanel.java:117: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
        add(oneButton, "growx, pushx");
    //#ActionConditionsTreePanel.java:118: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
        add(customButton, "growx, pushx");
    //#ActionConditionsTreePanel.java:119: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
        add(rule, "growx, pushx");
    //#ActionConditionsTreePanel.java:120: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:add(Component, Object)
    }
    //#ActionConditionsTreePanel.java:121: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.layoutComponents()

    /**
     * Selects the appropriate radio button for the tree.
     */
    private void selectTreeButton() {
        group.clearSelection();
    //#ActionConditionsTreePanel.java:127: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.selectTreeButton()
    //#input(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#input(void selectTreeButton()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1).length
    //#input(void selectTreeButton()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295]
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setEnabled(Z)V
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void selectTreeButton()): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1.$SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType
    //#input(void selectTreeButton()): this
    //#input(void selectTreeButton()): this.allButton
    //#input(void selectTreeButton()): this.conditionCount
    //#input(void selectTreeButton()): this.customButton
    //#input(void selectTreeButton()): this.group
    //#input(void selectTreeButton()): this.oneButton
    //#input(void selectTreeButton()): this.rule
    //#input(void selectTreeButton()): this.rule.__Tag
    //#input(void selectTreeButton()): this.rule.errorIcon
    //#input(void selectTreeButton()): this.rule.textField
    //#input(void selectTreeButton()): this.rule.validator
    //#input(void selectTreeButton()): this.treeFactory
    //#input(void selectTreeButton()): this.validates
    //#output(void selectTreeButton()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void selectTreeButton()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void selectTreeButton()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void selectTreeButton()): this.treeFactory
    //#output(void selectTreeButton()): this.validates
    //#new obj(void selectTreeButton()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void selectTreeButton()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void selectTreeButton()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#pre[2] (void selectTreeButton()): init'ed(this.treeFactory)
    //#pre[8] (void selectTreeButton()): this.group != null
    //#pre[10] (void selectTreeButton()): this.rule != null
    //#pre[11] (void selectTreeButton()): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[12] (void selectTreeButton()): this.rule.errorIcon != null
    //#pre[13] (void selectTreeButton()): this.rule.textField != null
    //#pre[1] (void selectTreeButton()): (soft) init'ed(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295])
    //#pre[3] (void selectTreeButton()): (soft) init'ed(this.validates)
    //#pre[5] (void selectTreeButton()): (soft) this.allButton != null
    //#pre[6] (void selectTreeButton()): (soft) init'ed(this.conditionCount)
    //#pre[7] (void selectTreeButton()): (soft) this.customButton != null
    //#pre[9] (void selectTreeButton()): (soft) this.oneButton != null
    //#pre[14] (void selectTreeButton()): (soft) this.rule.validator != null
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION != null
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length >= 1
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 < com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory:getConditionTree(...)@143 != null
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory:getType(...)@132 != null
    //#presumption(void selectTreeButton()): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 >= 0
    //#post(void selectTreeButton()): this.treeFactory == One-of{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1), &new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2), &new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void selectTreeButton()): this.treeFactory in Addr_Set{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1),&new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2),&new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void selectTreeButton()): init'ed(this.validates)
    //#post(void selectTreeButton()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void selectTreeButton()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void selectTreeButton()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.actions.ConditionTree:parseString
    //#unanalyzed(void selectTreeButton()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    //#test_vector(void selectTreeButton()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295]: {1}, {2}, {-2_147_483_648..0, 3..4_294_967_295}
    //#test_vector(void selectTreeButton()): this.treeFactory: Inverse{null}, Addr_Set{null}
        final ConditionTreeFactoryType type;
        if (treeFactory == null) {
            type = ConditionTreeFactoryType.CONJUNCTION;
        } else {
            type = treeFactory.getType();
    //#ActionConditionsTreePanel.java:132: Warning: method not available - call not analyzed
    //#    call on ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory:getType()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void selectTreeButton()
    //#    unanalyzed callee: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory:getType()
        }

        switch (type) {
    //#ActionConditionsTreePanel.java:135: method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init
    //#ActionConditionsTreePanel.java:135: Warning: method not available - call not analyzed
    //#    call on ConditionTreeFactory$ConditionTreeFactoryType[] com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1
    //#    method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init
    //#    unanalyzed callee: ConditionTreeFactory$ConditionTreeFactoryType[] com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values()
    //#ActionConditionsTreePanel.java:135: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1
    //#    method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init
    //#    unanalyzed callee: int com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal()
    //#input(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CUSTOM
    //#input(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.DISJUNCTION
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): new int[](ActionConditionsTreePanel$1__static_init#1) num objects
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType.length
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType[0..4_294_967_295]
    //#new obj(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): new int[](ActionConditionsTreePanel$1__static_init#1)
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CUSTOM != null
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.DISJUNCTION != null
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length@135 >= 1
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 < com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length@135
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:ordinal(...)@135 < com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length@135
    //#presumption(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): com.dmdirc.actions.ConditionTreeFactory_ConditionTreeFactoryType:values(...)@135 != null
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType == &new int[](ActionConditionsTreePanel$1__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): new int[](ActionConditionsTreePanel$1__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType.length >= 1
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init): $SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType[0..4_294_967_295] in {0..2}, if init'ed
    //#ActionConditionsTreePanel.java:135: end of method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init
    //#ActionConditionsTreePanel.java:135: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void selectTreeButton()
    //#    unanalyzed callee: int com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal()
            case DISJUNCTION:
                oneButton.setSelected(true);
                rule.setText("");
                rule.setEnabled(false);
                break;
            case CUSTOM:
                customButton.setSelected(true);
                rule.setText(treeFactory.getConditionTree(conditionCount).
    //#ActionConditionsTreePanel.java:143: ?null dereference
    //#    this.treeFactory != null
    //#    severity: MEDIUM
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void selectTreeButton()
    //#    basic block: bb_6
    //#    assertion: this.treeFactory != null
    //#    VN: this.treeFactory
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#ActionConditionsTreePanel.java:143: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void selectTreeButton()
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#ActionConditionsTreePanel.java:143: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.actions.ConditionTree:toString()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void selectTreeButton()
    //#    unanalyzed callee: String com.dmdirc.actions.ConditionTree:toString()
                        toString());
                rule.setEnabled(true);
                break;
            default:
                allButton.setSelected(true);
                rule.setText("");
                rule.setEnabled(false);
                break;
        }

        sortTreeFactory();
    }
    //#ActionConditionsTreePanel.java:155: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.selectTreeButton()

    /** Sorts the tree factory out. */
    private void sortTreeFactory() {
        if (group.getSelection().equals(allButton.getModel())) {
    //#ActionConditionsTreePanel.java:159: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.sortTreeFactory()
    //#input(void sortTreeFactory()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void sortTreeFactory()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void sortTreeFactory()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void sortTreeFactory()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void sortTreeFactory()): this
    //#input(void sortTreeFactory()): this.allButton
    //#input(void sortTreeFactory()): this.group
    //#input(void sortTreeFactory()): this.oneButton
    //#input(void sortTreeFactory()): this.rule
    //#input(void sortTreeFactory()): this.rule.__Tag
    //#input(void sortTreeFactory()): this.rule.errorIcon
    //#input(void sortTreeFactory()): this.rule.textField
    //#input(void sortTreeFactory()): this.rule.validator
    //#input(void sortTreeFactory()): this.validates
    //#output(void sortTreeFactory()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void sortTreeFactory()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void sortTreeFactory()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void sortTreeFactory()): this.treeFactory
    //#output(void sortTreeFactory()): this.validates
    //#new obj(void sortTreeFactory()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void sortTreeFactory()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void sortTreeFactory()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#pre[3] (void sortTreeFactory()): this.allButton != null
    //#pre[4] (void sortTreeFactory()): this.group != null
    //#pre[1] (void sortTreeFactory()): (soft) init'ed(this.validates)
    //#pre[5] (void sortTreeFactory()): (soft) this.oneButton != null
    //#pre[6] (void sortTreeFactory()): (soft) this.rule != null
    //#pre[7] (void sortTreeFactory()): (soft) this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[8] (void sortTreeFactory()): (soft) this.rule.errorIcon != null
    //#pre[9] (void sortTreeFactory()): (soft) this.rule.textField != null
    //#pre[10] (void sortTreeFactory()): (soft) this.rule.validator != null
    //#presumption(void sortTreeFactory()): javax.swing.ButtonGroup:getSelection(...)@159 != null
    //#presumption(void sortTreeFactory()): javax.swing.ButtonGroup:getSelection(...)@162 != null
    //#post(void sortTreeFactory()): this.treeFactory in Addr_Set{&new ConditionTreeFactory$CustomFactory(sortTreeFactory#3),&new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2),&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)}
    //#post(void sortTreeFactory()): init'ed(this.validates)
    //#post(void sortTreeFactory()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void sortTreeFactory()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void sortTreeFactory()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void sortTreeFactory()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#test_vector(void sortTreeFactory()): java.lang.Object:equals(...)@159: {0}, {1}
    //#test_vector(void sortTreeFactory()): java.lang.Object:equals(...)@162: {0}, {1}
            treeFactory = new ConditionTreeFactory.ConjunctionFactory();
    //#ActionConditionsTreePanel.java:160: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: void com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory()
            firePropertyChange("validationResult", validates, true);
    //#ActionConditionsTreePanel.java:161: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, bool, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, bool, bool)
        } else if (group.getSelection().equals(oneButton.getModel())) {
            treeFactory = new ConditionTreeFactory.DisjunctionFactory();
    //#ActionConditionsTreePanel.java:163: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: void com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory()
            firePropertyChange("validationResult", validates, true);
    //#ActionConditionsTreePanel.java:164: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, bool, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, bool, bool)
            validates = true;
        } else {
            treeFactory =
    //#ActionConditionsTreePanel.java:167: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#ActionConditionsTreePanel.java:167: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void sortTreeFactory()
    //#    unanalyzed callee: void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
                    new ConditionTreeFactory.CustomFactory(ConditionTree.parseString(rule.getText()));
            rule.checkError();
        }
        
    }
    //#ActionConditionsTreePanel.java:172: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.sortTreeFactory()

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        rule.setEnabled(e.getSource().equals(customButton));
    //#ActionConditionsTreePanel.java:181: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setEnabled(Z)V
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.allButton
    //#input(void actionPerformed(ActionEvent)): this.customButton
    //#input(void actionPerformed(ActionEvent)): this.group
    //#input(void actionPerformed(ActionEvent)): this.oneButton
    //#input(void actionPerformed(ActionEvent)): this.rule
    //#input(void actionPerformed(ActionEvent)): this.rule.__Tag
    //#input(void actionPerformed(ActionEvent)): this.rule.errorIcon
    //#input(void actionPerformed(ActionEvent)): this.rule.textField
    //#input(void actionPerformed(ActionEvent)): this.rule.validator
    //#input(void actionPerformed(ActionEvent)): this.validates
    //#output(void actionPerformed(ActionEvent)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void actionPerformed(ActionEvent)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void actionPerformed(ActionEvent)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void actionPerformed(ActionEvent)): this.treeFactory
    //#output(void actionPerformed(ActionEvent)): this.validates
    //#new obj(void actionPerformed(ActionEvent)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void actionPerformed(ActionEvent)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void actionPerformed(ActionEvent)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[4] (void actionPerformed(ActionEvent)): this.allButton != null
    //#pre[5] (void actionPerformed(ActionEvent)): init'ed(this.customButton)
    //#pre[6] (void actionPerformed(ActionEvent)): this.group != null
    //#pre[8] (void actionPerformed(ActionEvent)): this.rule != null
    //#pre[9] (void actionPerformed(ActionEvent)): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[10] (void actionPerformed(ActionEvent)): this.rule.errorIcon != null
    //#pre[11] (void actionPerformed(ActionEvent)): this.rule.textField != null
    //#pre[2] (void actionPerformed(ActionEvent)): (soft) init'ed(this.validates)
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.oneButton != null
    //#pre[12] (void actionPerformed(ActionEvent)): (soft) this.rule.validator != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@181 != null
    //#post(void actionPerformed(ActionEvent)): this.treeFactory == One-of{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1), &new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2), &new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void actionPerformed(ActionEvent)): this.treeFactory in Addr_Set{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1),&new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2),&new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void actionPerformed(ActionEvent)): init'ed(this.validates)
    //#post(void actionPerformed(ActionEvent)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void actionPerformed(ActionEvent)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void actionPerformed(ActionEvent)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.actions.ConditionTree:parseString
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$CustomFactory
        sortTreeFactory();
    }
    //#ActionConditionsTreePanel.java:183: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.actionPerformed(ActionEvent)

    /** {@inheritDoc} */
    @Override
    public void setEnabled(final boolean enabled) {
        allButton.setEnabled(enabled);
    //#ActionConditionsTreePanel.java:188: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setEnabled(bool)
    //#input(void setEnabled(bool)): enabled
    //#input(void setEnabled(bool)): this
    //#input(void setEnabled(bool)): this.allButton
    //#input(void setEnabled(bool)): this.customButton
    //#input(void setEnabled(bool)): this.oneButton
    //#pre[3] (void setEnabled(bool)): this.allButton != null
    //#pre[4] (void setEnabled(bool)): this.customButton != null
    //#pre[5] (void setEnabled(bool)): this.oneButton != null
        oneButton.setEnabled(enabled);
        customButton.setEnabled(enabled);
    }
    //#ActionConditionsTreePanel.java:191: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setEnabled(bool)

    /**
     * Returns the selected rule type.
     * 
     * @param conditionCount Condition count
     * 
     * @return Selected rule type
     */
    public ConditionTreeFactoryType getRuleType(final int conditionCount) {
        if (conditionCount >= 2) {
    //#ActionConditionsTreePanel.java:201: method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.getRuleType(int)
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): conditionCount
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): this
    //#input(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): this.treeFactory
    //#output(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): return_value
    //#pre[3] (ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): (soft) this.treeFactory != null
    //#presumption(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): init'ed(com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION)
    //#post(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): init'ed(return_value)
    //#test_vector(ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)): conditionCount: {-2_147_483_648..1}, {2..4_294_967_295}
            return treeFactory.getType();
    //#ActionConditionsTreePanel.java:202: Warning: method not available - call not analyzed
    //#    call on ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory:getType()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: ConditionTreeFactory$ConditionTreeFactoryType getRuleType(int)
    //#    unanalyzed callee: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.actions.ConditionTreeFactory:getType()
        } else {
            return ConditionTreeFactoryType.CONJUNCTION;
    //#ActionConditionsTreePanel.java:204: end of method: ConditionTreeFactory$ConditionTreeFactoryType com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.getRuleType(int)
        }
    }

    /**
     * Returns the current custom rule.
     * 
     * @param conditionCount number of conditions
     * 
     * @return Custom rule
     */
    public ConditionTree getRule(final int conditionCount) {
        treeFactory.getConditionTree(conditionCount);
    //#ActionConditionsTreePanel.java:216: method: ConditionTree com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.getRule(int)
    //#ActionConditionsTreePanel.java:216: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: ConditionTree getRule(int)
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#input(ConditionTree getRule(int)): conditionCount
    //#input(ConditionTree getRule(int)): this
    //#input(ConditionTree getRule(int)): this.treeFactory
    //#output(ConditionTree getRule(int)): return_value
    //#pre[3] (ConditionTree getRule(int)): this.treeFactory != null
    //#post(ConditionTree getRule(int)): init'ed(return_value)
        return treeFactory.getConditionTree(conditionCount);
    //#ActionConditionsTreePanel.java:217: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: ConditionTree getRule(int)
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTreeFactory:getConditionTree(int)
    //#ActionConditionsTreePanel.java:217: end of method: ConditionTree com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.getRule(int)
    }

    /**
     * Sets the tree rule.
     * 
     * @param conditionCount condition count
     * @param tree new condition tree
     */
    public void setRule(final int conditionCount, final ConditionTree tree) {
        if (tree != null && conditionCount >= 2) {
    //#ActionConditionsTreePanel.java:227: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setRule(int, ConditionTree)
    //#input(void setRule(int, ConditionTree)): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#input(void setRule(int, ConditionTree)): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1).length
    //#input(void setRule(int, ConditionTree)): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295]
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setEnabled(Z)V
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void setRule(int, ConditionTree)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1.$SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType
    //#input(void setRule(int, ConditionTree)): conditionCount
    //#input(void setRule(int, ConditionTree)): this
    //#input(void setRule(int, ConditionTree)): this.allButton
    //#input(void setRule(int, ConditionTree)): this.customButton
    //#input(void setRule(int, ConditionTree)): this.group
    //#input(void setRule(int, ConditionTree)): this.oneButton
    //#input(void setRule(int, ConditionTree)): this.rule
    //#input(void setRule(int, ConditionTree)): this.rule.__Tag
    //#input(void setRule(int, ConditionTree)): this.rule.errorIcon
    //#input(void setRule(int, ConditionTree)): this.rule.textField
    //#input(void setRule(int, ConditionTree)): this.rule.validator
    //#input(void setRule(int, ConditionTree)): this.validates
    //#input(void setRule(int, ConditionTree)): tree
    //#output(void setRule(int, ConditionTree)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void setRule(int, ConditionTree)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void setRule(int, ConditionTree)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void setRule(int, ConditionTree)): this.conditionCount
    //#output(void setRule(int, ConditionTree)): this.treeFactory
    //#output(void setRule(int, ConditionTree)): this.validates
    //#new obj(void setRule(int, ConditionTree)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void setRule(int, ConditionTree)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void setRule(int, ConditionTree)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#pre[5] (void setRule(int, ConditionTree)): (soft) init'ed(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295])
    //#pre[9] (void setRule(int, ConditionTree)): (soft) init'ed(this.validates)
    //#pre[11] (void setRule(int, ConditionTree)): (soft) this.allButton != null
    //#pre[12] (void setRule(int, ConditionTree)): (soft) this.customButton != null
    //#pre[13] (void setRule(int, ConditionTree)): (soft) this.group != null
    //#pre[14] (void setRule(int, ConditionTree)): (soft) this.oneButton != null
    //#pre[15] (void setRule(int, ConditionTree)): (soft) this.rule != null
    //#pre[16] (void setRule(int, ConditionTree)): (soft) this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[17] (void setRule(int, ConditionTree)): (soft) this.rule.errorIcon != null
    //#pre[18] (void setRule(int, ConditionTree)): (soft) this.rule.textField != null
    //#pre[19] (void setRule(int, ConditionTree)): (soft) this.rule.validator != null
    //#presumption(void setRule(int, ConditionTree)): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length >= 1
    //#post(void setRule(int, ConditionTree)): this.conditionCount == One-of{old this.conditionCount, conditionCount}
    //#post(void setRule(int, ConditionTree)): this.treeFactory == One-of{old this.treeFactory, &new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1), &new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2), &new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void setRule(int, ConditionTree)): init'ed(this.validates)
    //#post(void setRule(int, ConditionTree)): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void setRule(int, ConditionTree)): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void setRule(int, ConditionTree)): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getType
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getConditionTree
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:sortTreeFactory
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.ButtonGroup:clearSelection
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JRadioButton:setSelected
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTree:toString
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTree:parseString
    //#unanalyzed(void setRule(int, ConditionTree)): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    //#test_vector(void setRule(int, ConditionTree)): conditionCount: {-2_147_483_648..1}, {2..4_294_967_295}
    //#test_vector(void setRule(int, ConditionTree)): tree: Addr_Set{null}, Inverse{null}
            this.conditionCount = conditionCount;
            treeFactory = ConditionTreeFactory.getFactory(tree, conditionCount);
    //#ActionConditionsTreePanel.java:229: Warning: method not available - call not analyzed
    //#    call on ConditionTreeFactory com.dmdirc.actions.ConditionTreeFactory:getFactory(ConditionTree, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void setRule(int, ConditionTree)
    //#    unanalyzed callee: ConditionTreeFactory com.dmdirc.actions.ConditionTreeFactory:getFactory(ConditionTree, int)
            selectTreeButton();
        }
    }
    //#ActionConditionsTreePanel.java:232: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setRule(int, ConditionTree)
    
    /**
     * Sets the new condition count.
     * 
     * @param conditionCount new condition count.
     */
    public void setConditionCount(final int conditionCount) {
        this.conditionCount = conditionCount;
    //#ActionConditionsTreePanel.java:240: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setConditionCount(int)
    //#input(void setConditionCount(int)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void setConditionCount(int)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void setConditionCount(int)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void setConditionCount(int)): conditionCount
    //#input(void setConditionCount(int)): this
    //#input(void setConditionCount(int)): this.rule
    //#input(void setConditionCount(int)): this.rule.__Tag
    //#input(void setConditionCount(int)): this.rule.errorIcon
    //#input(void setConditionCount(int)): this.rule.textField
    //#input(void setConditionCount(int)): this.rule.validator
    //#input(void setConditionCount(int)): this.treeValidator
    //#output(void setConditionCount(int)): this.conditionCount
    //#pre[3] (void setConditionCount(int)): this.rule != null
    //#pre[4] (void setConditionCount(int)): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[5] (void setConditionCount(int)): this.rule.errorIcon != null
    //#pre[6] (void setConditionCount(int)): this.rule.textField != null
    //#pre[8] (void setConditionCount(int)): this.treeValidator != null
    //#pre[7] (void setConditionCount(int)): (soft) this.rule.validator != null
    //#post(void setConditionCount(int)): this.conditionCount == conditionCount
    //#post(void setConditionCount(int)): init'ed(this.conditionCount)
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void setConditionCount(int)): Effects-of-calling:javax.swing.JLabel:setVisible
        treeValidator.setArgs(conditionCount);
    //#ActionConditionsTreePanel.java:241: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.validator.ConditionRuleValidator:setArgs(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void setConditionCount(int)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.validator.ConditionRuleValidator:setArgs(int)
        rule.checkError();
    }
    //#ActionConditionsTreePanel.java:243: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.setConditionCount(int)

    /** {@inheritDoc} */
    @Override
    public void propertyChange(final PropertyChangeEvent evt) {
        firePropertyChange("validationResult", validates, evt.getNewValue());
    //#ActionConditionsTreePanel.java:248: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.propertyChange(PropertyChangeEvent)
    //#ActionConditionsTreePanel.java:248: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, Object, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void propertyChange(PropertyChangeEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange(String, Object, Object)
    //#input(void propertyChange(PropertyChangeEvent)): evt
    //#input(void propertyChange(PropertyChangeEvent)): this
    //#input(void propertyChange(PropertyChangeEvent)): this.validates
    //#output(void propertyChange(PropertyChangeEvent)): this.validates
    //#pre[1] (void propertyChange(PropertyChangeEvent)): evt != null
    //#pre[2] (void propertyChange(PropertyChangeEvent)): init'ed(this.validates)
    //#presumption(void propertyChange(PropertyChangeEvent)): java.beans.PropertyChangeEvent:getNewValue(...)@249 != null
    //#post(void propertyChange(PropertyChangeEvent)): init'ed(this.validates)
        validates = (Boolean) evt.getNewValue();
    }
    //#ActionConditionsTreePanel.java:250: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.propertyChange(PropertyChangeEvent)

    /** Validates the conditions. */
    public void validateConditions() {
        selectTreeButton();
    //#ActionConditionsTreePanel.java:254: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.validateConditions()
    //#input(void validateConditions()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType.CONJUNCTION
    //#input(void validateConditions()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1).length
    //#input(void validateConditions()): com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295]
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.checkError()V
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setEnabled(Z)V
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void validateConditions()): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel$1.$SwitchMap$com$dmdirc$actions$ConditionTreeFactory$ConditionTreeFactoryType
    //#input(void validateConditions()): this
    //#input(void validateConditions()): this.allButton
    //#input(void validateConditions()): this.conditionCount
    //#input(void validateConditions()): this.customButton
    //#input(void validateConditions()): this.group
    //#input(void validateConditions()): this.oneButton
    //#input(void validateConditions()): this.rule
    //#input(void validateConditions()): this.rule.__Tag
    //#input(void validateConditions()): this.rule.errorIcon
    //#input(void validateConditions()): this.rule.textField
    //#input(void validateConditions()): this.rule.validator
    //#input(void validateConditions()): this.treeFactory
    //#input(void validateConditions()): this.validates
    //#output(void validateConditions()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects
    //#output(void validateConditions()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects
    //#output(void validateConditions()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects
    //#output(void validateConditions()): this.treeFactory
    //#output(void validateConditions()): this.validates
    //#new obj(void validateConditions()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1)
    //#new obj(void validateConditions()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)
    //#new obj(void validateConditions()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2)
    //#pre[2] (void validateConditions()): init'ed(this.treeFactory)
    //#pre[8] (void validateConditions()): this.group != null
    //#pre[10] (void validateConditions()): this.rule != null
    //#pre[11] (void validateConditions()): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[12] (void validateConditions()): this.rule.errorIcon != null
    //#pre[13] (void validateConditions()): this.rule.textField != null
    //#pre[1] (void validateConditions()): (soft) init'ed(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1__static_init.new int[](ActionConditionsTreePanel$1__static_init#1)[0..4_294_967_295])
    //#pre[3] (void validateConditions()): (soft) init'ed(this.validates)
    //#pre[5] (void validateConditions()): (soft) this.allButton != null
    //#pre[6] (void validateConditions()): (soft) init'ed(this.conditionCount)
    //#pre[7] (void validateConditions()): (soft) this.customButton != null
    //#pre[9] (void validateConditions()): (soft) this.oneButton != null
    //#pre[14] (void validateConditions()): (soft) this.rule.validator != null
    //#presumption(void validateConditions()): com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:values(...).length >= 1
    //#post(void validateConditions()): this.treeFactory == One-of{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1), &new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2), &new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void validateConditions()): this.treeFactory in Addr_Set{&new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1),&new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2),&new ConditionTreeFactory$CustomFactory(sortTreeFactory#3)}
    //#post(void validateConditions()): init'ed(this.validates)
    //#post(void validateConditions()): new ConditionTreeFactory$ConjunctionFactory(sortTreeFactory#1) num objects <= 1
    //#post(void validateConditions()): new ConditionTreeFactory$CustomFactory(sortTreeFactory#3) num objects <= 1
    //#post(void validateConditions()): new ConditionTreeFactory$DisjunctionFactory(sortTreeFactory#2) num objects <= 1
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JTextField:isEnabled
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.config.prefs.validator.Validator:validate
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:getFailureReason
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JLabel:setToolTipText
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JLabel:isVisible
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.config.prefs.validator.ValidationResponse:isFailure
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:firePropertyChange
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JLabel:setVisible
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getType
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory:getConditionTree
    //#unanalyzed(void validateConditions()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void validateConditions()): Effects-of-calling:sortTreeFactory
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.ButtonGroup:clearSelection
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConditionTreeFactoryType:ordinal
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JRadioButton:setSelected
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTree:toString
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void validateConditions()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$ConjunctionFactory
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel:firePropertyChange
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$DisjunctionFactory
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTree:parseString
    //#unanalyzed(void validateConditions()): Effects-of-calling:com.dmdirc.actions.ConditionTreeFactory$CustomFactory
    }
    //#ActionConditionsTreePanel.java:255: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.validateConditions()

    /** {@inheritDoc} */
    @Override
    public void insertUpdate(final DocumentEvent e) {
        treeFactory =
    //#ActionConditionsTreePanel.java:260: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.insertUpdate(DocumentEvent)
    //#ActionConditionsTreePanel.java:260: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void insertUpdate(DocumentEvent)
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#ActionConditionsTreePanel.java:260: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void insertUpdate(DocumentEvent)
    //#    unanalyzed callee: void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#input(void insertUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void insertUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void insertUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void insertUpdate(DocumentEvent)): this
    //#input(void insertUpdate(DocumentEvent)): this.rule
    //#input(void insertUpdate(DocumentEvent)): this.rule.__Tag
    //#input(void insertUpdate(DocumentEvent)): this.rule.textField
    //#output(void insertUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(insertUpdate#1) num objects
    //#output(void insertUpdate(DocumentEvent)): this.treeFactory
    //#new obj(void insertUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(insertUpdate#1)
    //#pre[2] (void insertUpdate(DocumentEvent)): this.rule != null
    //#pre[3] (void insertUpdate(DocumentEvent)): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[4] (void insertUpdate(DocumentEvent)): this.rule.textField != null
    //#post(void insertUpdate(DocumentEvent)): this.treeFactory == &new ConditionTreeFactory$CustomFactory(insertUpdate#1)
    //#post(void insertUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(insertUpdate#1) num objects == 1
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JTextField:getText
                new ConditionTreeFactory.CustomFactory(ConditionTree.parseString(rule.getText()));
    }
    //#ActionConditionsTreePanel.java:262: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.insertUpdate(DocumentEvent)

    /** {@inheritDoc} */
    @Override
    public void removeUpdate(final DocumentEvent e) {
        treeFactory =
    //#ActionConditionsTreePanel.java:267: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.removeUpdate(DocumentEvent)
    //#ActionConditionsTreePanel.java:267: Warning: method not available - call not analyzed
    //#    call on ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void removeUpdate(DocumentEvent)
    //#    unanalyzed callee: ConditionTree com.dmdirc.actions.ConditionTree:parseString(String)
    //#ActionConditionsTreePanel.java:267: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
    //#    method: void removeUpdate(DocumentEvent)
    //#    unanalyzed callee: void com.dmdirc.actions.ConditionTreeFactory$CustomFactory(ConditionTree)
    //#input(void removeUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField]
    //#input(void removeUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Descendant_Table[others]
    //#input(void removeUpdate(DocumentEvent)): com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void removeUpdate(DocumentEvent)): this
    //#input(void removeUpdate(DocumentEvent)): this.rule
    //#input(void removeUpdate(DocumentEvent)): this.rule.__Tag
    //#input(void removeUpdate(DocumentEvent)): this.rule.textField
    //#output(void removeUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(removeUpdate#1) num objects
    //#output(void removeUpdate(DocumentEvent)): this.treeFactory
    //#new obj(void removeUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(removeUpdate#1)
    //#pre[2] (void removeUpdate(DocumentEvent)): this.rule != null
    //#pre[3] (void removeUpdate(DocumentEvent)): this.rule.__Tag == com/dmdirc/addons/ui_swing/components/validating/ValidatingJTextField
    //#pre[4] (void removeUpdate(DocumentEvent)): this.rule.textField != null
    //#post(void removeUpdate(DocumentEvent)): this.treeFactory == &new ConditionTreeFactory$CustomFactory(removeUpdate#1)
    //#post(void removeUpdate(DocumentEvent)): new ConditionTreeFactory$CustomFactory(removeUpdate#1) num objects == 1
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JTextField:getText
                new ConditionTreeFactory.CustomFactory(ConditionTree.parseString(rule.getText()));
    }
    //#ActionConditionsTreePanel.java:269: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.removeUpdate(DocumentEvent)

    /** {@inheritDoc} */
    @Override
    public void changedUpdate(final DocumentEvent e) {
    //Ignore
    }
    //#ActionConditionsTreePanel.java:275: method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.changedUpdate(DocumentEvent)
    //#ActionConditionsTreePanel.java:275: end of method: void com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.changedUpdate(DocumentEvent)
}
    //#ActionConditionsTreePanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel$1
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.getRule(I)Lcom/dmdirc/actions/ConditionTree;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.getRuleType(I)Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.propertyChange(Ljava/beans/PropertyChangeEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.selectTreeButton()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setConditionCount(I)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setEnabled(Z)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setRule(ILcom/dmdirc/actions/ConditionTree;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.sortTreeFactory()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.validateConditions()V
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionConditionsTreePanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V == &changedUpdate
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.getRule(I)Lcom/dmdirc/actions/ConditionTree; == &getRule
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.getRuleType(I)Lcom/dmdirc/actions/ConditionTreeFactory$ConditionTreeFactoryType; == &getRuleType
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V == &insertUpdate
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.propertyChange(Ljava/beans/PropertyChangeEvent;)V == &propertyChange
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V == &removeUpdate
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.selectTreeButton()V == &selectTreeButton
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setConditionCount(I)V == &setConditionCount
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setEnabled(Z)V == &setEnabled
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.setRule(ILcom/dmdirc/actions/ConditionTree;)V == &setRule
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.sortTreeFactory()V == &sortTreeFactory
    //#post(com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init): __Dispatch_Table.validateConditions()V == &validateConditions
    //#ActionConditionsTreePanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel.com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel__static_init
    //#ActionConditionsTreePanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsTreePanel
