//# 0 errors, 313 messages
//#
/*
    //#SubstitutionsPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment
    //#SubstitutionsPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#SubstitutionsPanel.java:1:1: method: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__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.components.substitutions;

import com.dmdirc.addons.ui_swing.components.text.TextLabel;

import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;

import net.miginfocom.swing.MigLayout;

/**
 * Generic substitutions panel
 * 
 * @param <T> Type of substitution
 */
public abstract class SubstitutionsPanel<T> extends JPanel {

    /**
     * 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;
    /** Substitions list. */
    protected List<SubstitutionLabel> substitutions;
    /** Description. */
    private String description;
    /** Seperator alignment. */
    private Alignment alignment;

    /** Separator alignment enum. */
    public enum Alignment {
    //#SubstitutionsPanel.java:57: method: SubstitutionsPanel$Alignment[] com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.values()
    //#input(SubstitutionsPanel$Alignment[] values()): $VALUES
    //#input(SubstitutionsPanel$Alignment[] values()): $VALUES.length
    //#input(SubstitutionsPanel$Alignment[] values()): $VALUES[0..2]
    //#output(SubstitutionsPanel$Alignment[] values()): new SubstitutionsPanel$Alignment[](values#1) num objects
    //#output(SubstitutionsPanel$Alignment[] values()): return_value.length
    //#output(SubstitutionsPanel$Alignment[] values()): return_value[0..2]
    //#output(SubstitutionsPanel$Alignment[] values()): return_value
    //#new obj(SubstitutionsPanel$Alignment[] values()): new SubstitutionsPanel$Alignment[](values#1)
    //#pre[1] (SubstitutionsPanel$Alignment[] values()): (soft) init'ed($VALUES[0..2])
    //#post(SubstitutionsPanel$Alignment[] values()): return_value == &new SubstitutionsPanel$Alignment[](values#1)
    //#post(SubstitutionsPanel$Alignment[] values()): new SubstitutionsPanel$Alignment[](values#1) num objects == 1
    //#post(SubstitutionsPanel$Alignment[] values()): return_value.length == 2
    //#post(SubstitutionsPanel$Alignment[] values()): return_value[0..2] == One-of{$VALUES[0..2], undefined}
    //#SubstitutionsPanel.java:57: end of method: SubstitutionsPanel$Alignment[] com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.values()
    //#SubstitutionsPanel.java:57: method: SubstitutionsPanel$Alignment com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.valueOf(String)
    //#input(SubstitutionsPanel$Alignment valueOf(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment]
    //#input(SubstitutionsPanel$Alignment valueOf(String)): __Descendant_Table[others]
    //#input(SubstitutionsPanel$Alignment valueOf(String)): name
    //#output(SubstitutionsPanel$Alignment valueOf(String)): return_value
    //#presumption(SubstitutionsPanel$Alignment valueOf(String)): java.lang.Enum:valueOf(...).__Tag@57 == com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment
    //#post(SubstitutionsPanel$Alignment valueOf(String)): init'ed(return_value)
    //#SubstitutionsPanel.java:57: end of method: SubstitutionsPanel$Alignment com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.valueOf(String)
    //#SubstitutionsPanel.java:57: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment(String, int)
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment(String, int)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment(String, int)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment(String, int)): this
    //#SubstitutionsPanel.java:57: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment(String, int)

        /** Horizontal separator. */
        HORIZONTAL,
    //#SubstitutionsPanel.java:60: method: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): HORIZONTAL
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): VERTICAL
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment]
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#1) num objects
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): HORIZONTAL.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2) num objects
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): VERTICAL.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment[](SubstitutionsPanel$Alignment__static_init#3) num objects
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES.length
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES[0]
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES[1]
    //#new obj(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#1)
    //#new obj(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2)
    //#new obj(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment[](SubstitutionsPanel$Alignment__static_init#3)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES == &new SubstitutionsPanel$Alignment[](SubstitutionsPanel$Alignment__static_init#3)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): HORIZONTAL == &new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES[0] == &new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): VERTICAL == &new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES[1] == &new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2)
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): new SubstitutionsPanel$Alignment[](SubstitutionsPanel$Alignment__static_init#3) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): HORIZONTAL.__Tag == com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): VERTICAL.__Tag == com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): $VALUES.length == 2
    //#unanalyzed(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init): Effects-of-calling:java.lang.Enum
        /** Vertical separator. */
        VERTICAL;
    //#SubstitutionsPanel.java:62: end of method: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init
    }

    /** 
     * Instantiates the panel.
     * 
     * @param description Description
     */
    public SubstitutionsPanel(final String description) {
        this(description, Alignment.VERTICAL, null);
    //#SubstitutionsPanel.java:71: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)
    //#SubstitutionsPanel.java:71: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)
    //#    suspicious precondition index: [2]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): __Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): description
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.alignment
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.description
    //#pre[2] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.alignment == &com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init.new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2)
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): this.description == description
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): init'ed(this.description)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:setType
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SubstitutionsPanel.java:72: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String)

    /** 
     * Instantiates the panel.
     * 
     * @param description Description
     * @param type Action type
     */
    public SubstitutionsPanel(final String description, final T type) {
        this(description, Alignment.VERTICAL, type);
    //#SubstitutionsPanel.java:81: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)
    //#SubstitutionsPanel.java:81: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)
    //#    suspicious precondition index: [2]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): __Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): description
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.__Tag
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): type
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.alignment
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.description
    //#pre[2] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.alignment == &com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment__static_init.new SubstitutionsPanel$Alignment(SubstitutionsPanel$Alignment__static_init#2)
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): this.description == description
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): init'ed(this.description)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:setType
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SubstitutionsPanel.java:82: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, Object)

    /** 
     * Instantiates the panel.
     * 
     * @param description Description
     * @param alignment Alignment of the separator
     */
    public SubstitutionsPanel(final String description,
            final Alignment alignment) {
        this(description, alignment, null);
    //#SubstitutionsPanel.java:92: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)
    //#SubstitutionsPanel.java:92: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)
    //#    suspicious precondition index: [3]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): __Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): alignment
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): description
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.alignment
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.description
    //#pre[1] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): alignment != null
    //#pre[3] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.alignment == alignment
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.alignment != null
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): this.description == description
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): init'ed(this.description)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:setType
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#SubstitutionsPanel.java:93: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment)

    /** 
     * Instantiates the panel.
     * 
     * @param description Description
     * @param alignment Alignment of the separator
     * @param type Action type
     */
    public SubstitutionsPanel(final String description,
            final Alignment alignment, final T type) {
        super();
    //#SubstitutionsPanel.java:104: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)
    //#SubstitutionsPanel.java:104: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)
    //#    suspicious precondition index: [3]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): __Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): alignment
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Lcom/dmdirc/actions/interfaces/ActionType;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel.__Dispatch_Table.setType(Ljava/lang/Object;)V
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): description
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.__Tag
    //#input(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): type
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.alignment
    //#output(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.description
    //#pre[1] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): alignment != null
    //#pre[3] (void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.__Tag == old this.__Tag
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.__Tag in {com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionSubstitutionsPanel, com/dmdirc/addons/ui_swing/dialogs/aliases/AliasSubstitutionsPanel}
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.alignment == alignment
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.alignment != null
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): this.description == description
    //#post(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): init'ed(this.description)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

        this.description = description;
        this.alignment = alignment;

        initComponents();
        addListeners();
        setType(type);
    }
    //#SubstitutionsPanel.java:112: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel(String, SubstitutionsPanel$Alignment, Object)

    /** Initialises the components. */
    private void initComponents() {
        setBorder(BorderFactory.createTitledBorder(getBorder(), "Substitutions"));
    //#SubstitutionsPanel.java:116: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.initComponents()
    //#SubstitutionsPanel.java:116: Warning: method not available - call not analyzed
    //#    call on Border com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: Border com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getBorder()
    //#SubstitutionsPanel.java:116: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setBorder(Border)
    //#input(void initComponents()): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#input(void initComponents()): this
    //#input(void initComponents()): this.alignment
    //#pre[2] (void initComponents()): this.alignment != null
    //#test_vector(void initComponents()): com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel_Alignment:equals(...)@117: {0}, {1}
        if (alignment.equals(Alignment.VERTICAL)) {
    //#SubstitutionsPanel.java:117: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals(Object)
            setLayout(new MigLayout("fill, wrap 4, pack"));
    //#SubstitutionsPanel.java:118: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#SubstitutionsPanel.java:118: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout(LayoutManager)
        } else {
            setLayout(new MigLayout("fill, wrap 3, pack"));
    //#SubstitutionsPanel.java:120: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#SubstitutionsPanel.java:120: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setLayout(LayoutManager)
        }
    }
    //#SubstitutionsPanel.java:122: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.initComponents()

    /** Adds the listeners. */
    private void addListeners() {
    }
    //#SubstitutionsPanel.java:126: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.addListeners()
    //#SubstitutionsPanel.java:126: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.addListeners()

    /** Lays out the components. */
    protected void layoutComponents() {
        final boolean visible = isVisible();
    //#SubstitutionsPanel.java:130: method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.layoutComponents()
    //#SubstitutionsPanel.java:130: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:isVisible()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:isVisible()
    //#input(void layoutComponents()): ". Drag and drop, or click on an item when "._tainted
    //#input(void layoutComponents()): "; "._tainted
    //#input(void layoutComponents()): "body { font-family: "._tainted
    //#input(void layoutComponents()): "editing the field, to insert it."._tainted
    //#input(void layoutComponents()): "font-size: "._tainted
    //#input(void layoutComponents()): "pt; }"._tainted
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionLabel]
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionLabel.__Descendant_Table[others]
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel$Alignment.VERTICAL
    //#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.alignment
    //#input(void layoutComponents()): this.description
    //#input(void layoutComponents()): this.description._tainted
    //#input(void layoutComponents()): this.substitutions
    //#pre[2] (void layoutComponents()): this.alignment != null
    //#pre[3] (void layoutComponents()): init'ed(this.description)
    //#pre[5] (void layoutComponents()): this.substitutions != null
    //#presumption(void layoutComponents()): java.util.Iterator:next(...).__Tag@145 == com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionLabel
    //#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
    //#test_vector(void layoutComponents()): com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getComponentCount(...)@149: {-2_147_483_648..1, 3..4_294_967_295}, {2}
    //#test_vector(void layoutComponents()): com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel_Alignment:equals(...)@137: {0}, {1}
    //#test_vector(void layoutComponents()): java.util.Iterator:hasNext(...)@145: {0}, {1}
        setVisible(false);
    //#SubstitutionsPanel.java:131: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setVisible(bool)
        removeAll();
    //#SubstitutionsPanel.java:132: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:removeAll()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:removeAll()

        final TextLabel textLabel = new TextLabel(description +
                ". Drag and drop, or click on an item when " +
                "editing the field, to insert it.");
        if (alignment.equals(Alignment.VERTICAL)) {
    //#SubstitutionsPanel.java:137: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment:equals(Object)
            add(textLabel, "spany, aligny top, wmin 225, wmax 225");
    //#SubstitutionsPanel.java:138: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
            add(new JSeparator(JSeparator.VERTICAL), "growy, pushy, spany");
    //#SubstitutionsPanel.java:139: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
        } else {
            add(textLabel, "spanx, aligny top");
    //#SubstitutionsPanel.java:141: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
            add(new JSeparator(JSeparator.HORIZONTAL), "growy, pushy, spanx");
    //#SubstitutionsPanel.java:142: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
        }

        for (SubstitutionLabel label : substitutions) {
            add(label, "sgx subslabel, aligny top, growx, pushx");
    //#SubstitutionsPanel.java:146: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
        }

        if (getComponentCount() == 2) {
    //#SubstitutionsPanel.java:149: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getComponentCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:getComponentCount()
            add(new JLabel("No substitutions."),
    //#SubstitutionsPanel.java:150: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:add(Component, Object)
                    "growx, pushx, aligny top, align center");
        }

        setVisible(visible);
    //#SubstitutionsPanel.java:154: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel:setVisible(bool)
    }
    //#SubstitutionsPanel.java:155: end of method: void com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.layoutComponents()

    /**
     * Sets the type for this substitution panel.
     * 
     * @param type New action type
     */
    public abstract void setType(final T type);
}
    //#SubstitutionsPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel$Alignment
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel]
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.setType(Ljava/lang/Object;)V
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/substitutions/SubstitutionsPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init): __Dispatch_Table.setType(Ljava/lang/Object;)V == &setType
    //#SubstitutionsPanel.java:: end of method: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel.com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel__static_init
    //#SubstitutionsPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.substitutions.SubstitutionsPanel
