//# 24 errors, 998 messages
//#
/*
    //#SettingsPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#SettingsPanel.java:1:1: method: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init
    //#SettingsPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType
 * 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.expandingsettings;

import com.dmdirc.config.Identity;
import com.dmdirc.addons.ui_swing.components.text.TextLabel;
import com.dmdirc.addons.ui_swing.UIUtilities;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import net.miginfocom.swing.MigLayout;

/**
 * Settings panel.
 */
public final class SettingsPanel 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 = 2;
    /** Config manager. */
    private final transient Identity config;

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

        /** Text field. */
        TEXTFIELD,
    //#SettingsPanel.java:57: method: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): CHECKBOX
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): COLOUR
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): SPINNER
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): TEXTFIELD
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType]
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#1) num objects
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): TEXTFIELD.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#2) num objects
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): CHECKBOX.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#3) num objects
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): COLOUR.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#4) num objects
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): SPINNER.__Tag
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType[](SettingsPanel$OptionType__static_init#5) num objects
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES.length
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[0]
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[1]
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[2]
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[3]
    //#new obj(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#1)
    //#new obj(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#2)
    //#new obj(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#3)
    //#new obj(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#4)
    //#new obj(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType[](SettingsPanel$OptionType__static_init#5)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES == &new SettingsPanel$OptionType[](SettingsPanel$OptionType__static_init#5)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): CHECKBOX == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#2)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[1] == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#2)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): COLOUR == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#3)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[2] == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#3)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): SPINNER == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#4)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[3] == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#4)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): TEXTFIELD == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES[0] == &new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#2) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#3) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType(SettingsPanel$OptionType__static_init#4) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): new SettingsPanel$OptionType[](SettingsPanel$OptionType__static_init#5) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): TEXTFIELD.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): CHECKBOX.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): COLOUR.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): SPINNER.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): $VALUES.length == 4
    //#unanalyzed(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init): Effects-of-calling:java.lang.Enum
        /** Check box. */
        CHECKBOX,
        /** Colour chooser. */
        COLOUR,
        /** Number spinner. */
        SPINNER
    //#SettingsPanel.java:63: end of method: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType__static_init
    }
    /** config option -> name. */
    private Map<String, String> names;
    /** config option -> type. */
    private Map<String, OptionType> types;
    /** Info label. */
    private TextLabel infoLabel;
    /** Current options panel. */
    private CurrentOptionsPanel currentOptionsPanel;
    /** Add option panel. */
    private AddOptionPanel addOptionPanel;
    /** Current options scroll pane. */
    private JScrollPane scrollPane;

    /**
     * Creates a new instance of SettingsPanel.
     *
     * @param config Config to use
     * @param infoText Info blurb.
     */
    public SettingsPanel(final Identity config, final String infoText) {
        super();
    //#SettingsPanel.java:85: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)
    //#input(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel.java.lang.Boolean.TRUE
    //#input(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): config
    //#input(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): infoText
    //#input(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputCheckbox
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputColourChooser
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputCurrent
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputNone
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputSpinner
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputText
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addOptionButton
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addOptionComboBox
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).parent
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).command
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).editButton
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).listeners
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).previewPanel
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).showHex
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).showIRC
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).value
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).window
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).checkBoxes
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).colours
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).parent
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).spinners
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).textFields
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new EventListenerList(ColourChooser#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(ColourChooser#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JCheckBox(initComponents#7) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JComboBox(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JLabel(initComponents#10) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JPanel(ColourChooser#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JScrollPane(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JSpinner(initComponents#8) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JTextField(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new TextLabel(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.addOptionPanel
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.config
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.currentOptionsPanel
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.infoLabel
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.names
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.scrollPane
    //#output(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.types
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new EventListenerList(ColourChooser#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(ColourChooser#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JCheckBox(initComponents#7)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JComboBox(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JLabel(initComponents#10)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JPanel(ColourChooser#5)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JScrollPane(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JSpinner(initComponents#8)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JTextField(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new TextLabel(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.addOptionPanel == &new AddOptionPanel(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.config == config
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): init'ed(this.config)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.currentOptionsPanel == &new CurrentOptionsPanel(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.infoLabel == &new TextLabel(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.names == &new LinkedHashMap(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.scrollPane == &new JScrollPane(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): this.types == &new LinkedHashMap(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).showHex == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).showIRC == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new EventListenerList(ColourChooser#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new HashMap(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(ColourChooser#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JButton(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JCheckBox(initComponents#7) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JComboBox(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JLabel(initComponents#10) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JPanel(ColourChooser#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JScrollPane(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JSpinner(initComponents#8) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new JTextField(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new LinkedHashMap(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new TextLabel(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputCheckbox == &new JCheckBox(initComponents#7)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputColourChooser == &new ColourChooser(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputCurrent == &new JLabel(initComponents#10)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputNone == &new JLabel(initComponents#10)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputSpinner == &new JSpinner(initComponents#8)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addInputText == &new JTextField(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addOptionButton == &new JButton(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).addOptionComboBox == &new JComboBox(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).parent == this
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new AddOptionPanel(initComponents#4).parent != null
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).parent == new AddOptionPanel(initComponents#4).parent
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).__Tag == com/dmdirc/addons/ui_swing/components/ColourChooser
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).command == &""
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).editButton == &new JButton(ColourChooser#2)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).listeners == &new EventListenerList(ColourChooser#1)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).previewPanel == &new JPanel(ColourChooser#5)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new ColourChooser(initComponents#5).value == &"ffffff"
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): init'ed(new ColourChooser(initComponents#5).window)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).checkBoxes == &new HashMap(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).colours == &new HashMap(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).spinners == &new HashMap(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): new CurrentOptionsPanel(initComponents#5).textFields == &new HashMap(initComponents#1)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.util.LinkedHashMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JScrollPane:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JScrollPane:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JScrollPane:getViewport
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JViewport:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.DefaultComboBoxModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JComboBox
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.AddOptionCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JComboBox:setRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JCheckBox:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JComboBox:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JComboBox:putClientProperty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JComboBox:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:removeAll
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setLayout

        this.setOpaque(UIUtilities.getTabbedPaneOpaque());
    //#SettingsPanel.java:87: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:setOpaque(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:setOpaque(bool)
        this.config = config;

        initComponents(infoText);
        layoutComponents();
    }
    //#SettingsPanel.java:92: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel(Identity, String)

    /**
     * Initialises the components.
     *
     * @param infoText Info blurb.
     */
    private void initComponents(final String infoText) {
        names = new LinkedHashMap<String, String>();
    //#SettingsPanel.java:100: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.initComponents(String)
    //#input(void initComponents(String)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(void initComponents(String)): com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel.java.lang.Boolean.TRUE
    //#input(void initComponents(String)): infoText
    //#input(void initComponents(String)): this
    //#output(void initComponents(String)): new AddOptionPanel(initComponents#4) num objects
    //#output(void initComponents(String)): this.addOptionPanel.__Tag
    //#output(void initComponents(String)): this.addOptionPanel.addInputCheckbox
    //#output(void initComponents(String)): this.addOptionPanel.addInputColourChooser
    //#output(void initComponents(String)): this.addOptionPanel.addInputCurrent
    //#output(void initComponents(String)): this.addOptionPanel.addInputNone
    //#output(void initComponents(String)): this.addOptionPanel.addInputSpinner
    //#output(void initComponents(String)): this.addOptionPanel.addInputText
    //#output(void initComponents(String)): this.addOptionPanel.addOptionButton
    //#output(void initComponents(String)): this.addOptionPanel.addOptionComboBox
    //#output(void initComponents(String)): this.addOptionPanel.parent
    //#output(void initComponents(String)): new ColourChooser(initComponents#5) num objects
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).__Tag
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).command
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).editButton
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).listeners
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).previewPanel
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).showHex
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).showIRC
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).value
    //#output(void initComponents(String)): new ColourChooser(initComponents#5).window
    //#output(void initComponents(String)): new CurrentOptionsPanel(initComponents#5) num objects
    //#output(void initComponents(String)): this.currentOptionsPanel.__Tag
    //#output(void initComponents(String)): this.currentOptionsPanel.checkBoxes
    //#output(void initComponents(String)): this.currentOptionsPanel.colours
    //#output(void initComponents(String)): this.currentOptionsPanel.parent
    //#output(void initComponents(String)): this.currentOptionsPanel.spinners
    //#output(void initComponents(String)): this.currentOptionsPanel.textFields
    //#output(void initComponents(String)): new EventListenerList(ColourChooser#1) num objects
    //#output(void initComponents(String)): new HashMap(initComponents#1) num objects
    //#output(void initComponents(String)): new HashMap(initComponents#2) num objects
    //#output(void initComponents(String)): new HashMap(initComponents#3) num objects
    //#output(void initComponents(String)): new HashMap(initComponents#4) num objects
    //#output(void initComponents(String)): new JButton(ColourChooser#2) num objects
    //#output(void initComponents(String)): new JButton(initComponents#3) num objects
    //#output(void initComponents(String)): new JCheckBox(initComponents#7) num objects
    //#output(void initComponents(String)): new JComboBox(initComponents#1) num objects
    //#output(void initComponents(String)): new JLabel(initComponents#10) num objects
    //#output(void initComponents(String)): new JPanel(ColourChooser#5) num objects
    //#output(void initComponents(String)): new JScrollPane(initComponents#6) num objects
    //#output(void initComponents(String)): new JSpinner(initComponents#8) num objects
    //#output(void initComponents(String)): new JTextField(initComponents#6) num objects
    //#output(void initComponents(String)): new LinkedHashMap(initComponents#1) num objects
    //#output(void initComponents(String)): new LinkedHashMap(initComponents#2) num objects
    //#output(void initComponents(String)): new TextLabel(initComponents#3) num objects
    //#output(void initComponents(String)): this.addOptionPanel
    //#output(void initComponents(String)): this.currentOptionsPanel
    //#output(void initComponents(String)): this.infoLabel
    //#output(void initComponents(String)): this.names
    //#output(void initComponents(String)): this.scrollPane
    //#output(void initComponents(String)): this.types
    //#new obj(void initComponents(String)): new AddOptionPanel(initComponents#4)
    //#new obj(void initComponents(String)): new ColourChooser(initComponents#5)
    //#new obj(void initComponents(String)): new CurrentOptionsPanel(initComponents#5)
    //#new obj(void initComponents(String)): new EventListenerList(ColourChooser#1)
    //#new obj(void initComponents(String)): new HashMap(initComponents#1)
    //#new obj(void initComponents(String)): new HashMap(initComponents#2)
    //#new obj(void initComponents(String)): new HashMap(initComponents#3)
    //#new obj(void initComponents(String)): new HashMap(initComponents#4)
    //#new obj(void initComponents(String)): new JButton(ColourChooser#2)
    //#new obj(void initComponents(String)): new JButton(initComponents#3)
    //#new obj(void initComponents(String)): new JCheckBox(initComponents#7)
    //#new obj(void initComponents(String)): new JComboBox(initComponents#1)
    //#new obj(void initComponents(String)): new JLabel(initComponents#10)
    //#new obj(void initComponents(String)): new JPanel(ColourChooser#5)
    //#new obj(void initComponents(String)): new JScrollPane(initComponents#6)
    //#new obj(void initComponents(String)): new JSpinner(initComponents#8)
    //#new obj(void initComponents(String)): new JTextField(initComponents#6)
    //#new obj(void initComponents(String)): new LinkedHashMap(initComponents#1)
    //#new obj(void initComponents(String)): new LinkedHashMap(initComponents#2)
    //#new obj(void initComponents(String)): new TextLabel(initComponents#3)
    //#presumption(void initComponents(String)): javax.swing.JScrollPane:getViewport(...)@115 != null
    //#post(void initComponents(String)): this.addOptionPanel == &new AddOptionPanel(initComponents#4)
    //#post(void initComponents(String)): this.currentOptionsPanel == &new CurrentOptionsPanel(initComponents#5)
    //#post(void initComponents(String)): this.infoLabel == &new TextLabel(initComponents#3)
    //#post(void initComponents(String)): this.names == &new LinkedHashMap(initComponents#1)
    //#post(void initComponents(String)): this.scrollPane == &new JScrollPane(initComponents#6)
    //#post(void initComponents(String)): this.types == &new LinkedHashMap(initComponents#2)
    //#post(void initComponents(String)): new AddOptionPanel(initComponents#4) num objects == 1
    //#post(void initComponents(String)): new ColourChooser(initComponents#5) num objects == 1
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).showHex == 1
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).showIRC == 1
    //#post(void initComponents(String)): new CurrentOptionsPanel(initComponents#5) num objects == 1
    //#post(void initComponents(String)): new EventListenerList(ColourChooser#1) num objects == 1
    //#post(void initComponents(String)): new HashMap(initComponents#1) num objects == 1
    //#post(void initComponents(String)): new HashMap(initComponents#2) num objects == 1
    //#post(void initComponents(String)): new HashMap(initComponents#3) num objects == 1
    //#post(void initComponents(String)): new HashMap(initComponents#4) num objects == 1
    //#post(void initComponents(String)): new JButton(ColourChooser#2) num objects == 1
    //#post(void initComponents(String)): new JButton(initComponents#3) num objects == 1
    //#post(void initComponents(String)): new JCheckBox(initComponents#7) num objects == 1
    //#post(void initComponents(String)): new JComboBox(initComponents#1) num objects == 1
    //#post(void initComponents(String)): new JLabel(initComponents#10) num objects == 1
    //#post(void initComponents(String)): new JPanel(ColourChooser#5) num objects == 1
    //#post(void initComponents(String)): new JScrollPane(initComponents#6) num objects == 1
    //#post(void initComponents(String)): new JSpinner(initComponents#8) num objects == 1
    //#post(void initComponents(String)): new JTextField(initComponents#6) num objects == 1
    //#post(void initComponents(String)): new LinkedHashMap(initComponents#1) num objects == 1
    //#post(void initComponents(String)): new LinkedHashMap(initComponents#2) num objects == 1
    //#post(void initComponents(String)): new TextLabel(initComponents#3) num objects == 1
    //#post(void initComponents(String)): this.addOptionPanel.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/AddOptionPanel
    //#post(void initComponents(String)): this.addOptionPanel.addInputCheckbox == &new JCheckBox(initComponents#7)
    //#post(void initComponents(String)): this.addOptionPanel.addInputColourChooser == &new ColourChooser(initComponents#5)
    //#post(void initComponents(String)): this.addOptionPanel.addInputCurrent == &new JLabel(initComponents#10)
    //#post(void initComponents(String)): this.addOptionPanel.addInputNone == &new JLabel(initComponents#10)
    //#post(void initComponents(String)): this.addOptionPanel.addInputSpinner == &new JSpinner(initComponents#8)
    //#post(void initComponents(String)): this.addOptionPanel.addInputText == &new JTextField(initComponents#6)
    //#post(void initComponents(String)): this.addOptionPanel.addOptionButton == &new JButton(initComponents#3)
    //#post(void initComponents(String)): this.addOptionPanel.addOptionComboBox == &new JComboBox(initComponents#1)
    //#post(void initComponents(String)): this.addOptionPanel.parent == this
    //#post(void initComponents(String)): this.addOptionPanel.parent != null
    //#post(void initComponents(String)): this.currentOptionsPanel.parent == this.addOptionPanel.parent
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).__Tag == com/dmdirc/addons/ui_swing/components/ColourChooser
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).command == &""
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).editButton == &new JButton(ColourChooser#2)
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).listeners == &new EventListenerList(ColourChooser#1)
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).previewPanel == &new JPanel(ColourChooser#5)
    //#post(void initComponents(String)): new ColourChooser(initComponents#5).value == &"ffffff"
    //#post(void initComponents(String)): init'ed(new ColourChooser(initComponents#5).window)
    //#post(void initComponents(String)): this.currentOptionsPanel.__Tag == com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel
    //#post(void initComponents(String)): this.currentOptionsPanel.checkBoxes == &new HashMap(initComponents#2)
    //#post(void initComponents(String)): this.currentOptionsPanel.colours == &new HashMap(initComponents#3)
    //#post(void initComponents(String)): this.currentOptionsPanel.spinners == &new HashMap(initComponents#4)
    //#post(void initComponents(String)): this.currentOptionsPanel.textFields == &new HashMap(initComponents#1)
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setOpaque
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void initComponents(String)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void initComponents(String)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void initComponents(String)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.DefaultComboBoxModel
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JComboBox
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.AddOptionCellRenderer
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JComboBox:setRenderer
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JCheckBox:setOpaque
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JComboBox:setEnabled
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JComboBox:putClientProperty
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JComboBox:addActionListener
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JTextField:getActionMap
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.AbstractAction
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.ActionMap:put
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.JTextField:getInputMap
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.KeyStroke:getKeyStroke
    //#unanalyzed(void initComponents(String)): Effects-of-calling:javax.swing.InputMap:put
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setVisible
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:removeAll
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:add
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setOpaque
    //#unanalyzed(void initComponents(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setLayout
        types = new LinkedHashMap<String, OptionType>();

        infoLabel = new TextLabel(infoText);
    //#SettingsPanel.java:103: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.text.TextLabel(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void initComponents(String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.text.TextLabel(String)

        addOptionPanel =
                new AddOptionPanel(this);
        currentOptionsPanel =
                new CurrentOptionsPanel(this);
        scrollPane = new JScrollPane(currentOptionsPanel);

        scrollPane.setBorder(BorderFactory.createTitledBorder("Current settings"));
        addOptionPanel.setBorder(BorderFactory.createTitledBorder("Add new setting"));
    //#SettingsPanel.java:112: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void initComponents(String)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setBorder(Border)
        
        scrollPane.setOpaque(UIUtilities.getTabbedPaneOpaque());
        scrollPane.getViewport().setOpaque(UIUtilities.getTabbedPaneOpaque());
    }
    //#SettingsPanel.java:116: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.initComponents(String)

    /** 
     * Lays out the components.
     */
    private void layoutComponents() {
        setLayout(new MigLayout("fill, wrap 1"));
    //#SettingsPanel.java:122: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.layoutComponents()
    //#SettingsPanel.java:122: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#SettingsPanel.java:122: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:setLayout(LayoutManager)
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.addOptionPanel
    //#input(void layoutComponents()): this.infoLabel
    //#input(void layoutComponents()): this.scrollPane
    //#pre[2] (void layoutComponents()): init'ed(this.addOptionPanel)
    //#pre[3] (void layoutComponents()): init'ed(this.infoLabel)
    //#pre[4] (void layoutComponents()): init'ed(this.scrollPane)

        add(infoLabel, "growx, pushx");
    //#SettingsPanel.java:124: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
        add(scrollPane, "grow, push");
    //#SettingsPanel.java:125: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
        add(addOptionPanel, "growx, pushx");
    //#SettingsPanel.java:126: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel:add(Component, Object)
    }
    //#SettingsPanel.java:127: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.layoutComponents()

    /**
     * Adds an option to the settings panel.
     *
     * @param optionName Option name
     * @param displayName Display name
     * @param type Option type
     */
    public void addOption(final String optionName,
            final String displayName,
            final OptionType type) {
        if (config == null) {
    //#SettingsPanel.java:139: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addOption(String, String, SettingsPanel$OptionType)
    //#input(void addOption(String, String, SettingsPanel$OptionType)): ": "._tainted
    //#input(void addOption(String, String, SettingsPanel$OptionType)): "Illegal Type: "._tainted
    //#input(void addOption(String, String, SettingsPanel$OptionType)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1).length
    //#input(void addOption(String, String, SettingsPanel$OptionType)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295]
    //#input(void addOption(String, String, SettingsPanel$OptionType)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(void addOption(String, String, SettingsPanel$OptionType)): com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel$1.$SwitchMap$com$dmdirc$addons$ui_swing$components$expandingsettings$SettingsPanel$OptionType
    //#input(void addOption(String, String, SettingsPanel$OptionType)): displayName
    //#input(void addOption(String, String, SettingsPanel$OptionType)): optionName
    //#input(void addOption(String, String, SettingsPanel$OptionType)): optionName._tainted
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this...names
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.addOptionPanel
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.addOptionPanel.addOptionButton
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.addOptionPanel.addOptionComboBox
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.config
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel.checkBoxes
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel.colours
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel.parent
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel.spinners
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.currentOptionsPanel.textFields
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.names
    //#input(void addOption(String, String, SettingsPanel$OptionType)): this.types
    //#input(void addOption(String, String, SettingsPanel$OptionType)): type
    //#input(void addOption(String, String, SettingsPanel$OptionType)): type._tainted
    //#pre[1] (void addOption(String, String, SettingsPanel$OptionType)): (soft) com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295] in {1..4}
    //#pre[3] (void addOption(String, String, SettingsPanel$OptionType)): (soft) optionName != null
    //#pre[6] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this...names != null
    //#pre[7] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.addOptionPanel != null
    //#pre[8] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.addOptionPanel.addOptionButton != null
    //#pre[9] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.addOptionPanel.addOptionComboBox != null
    //#pre[11] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel != null
    //#pre[12] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.checkBoxes != null
    //#pre[13] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.colours != null
    //#pre[14] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.parent != null
    //#pre[15] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.spinners != null
    //#pre[16] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.textFields != null
    //#pre[17] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.names != null
    //#pre[18] (void addOption(String, String, SettingsPanel$OptionType)): (soft) this.types != null
    //#pre[19] (void addOption(String, String, SettingsPanel$OptionType)): (soft) type != null
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel:setLabelFor
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setVisible
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setLayout
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:removeAll
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:getOptionName
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType:ordinal
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JSpinner:setValue
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:addOption
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JComboBox:setEnabled
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JComboBox:getModel
    //#unanalyzed(void addOption(String, String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.DefaultComboBoxModel:addElement
    //#test_vector(void addOption(String, String, SettingsPanel$OptionType)): this.config: Inverse{null}, Addr_Set{null}
    //#test_vector(void addOption(String, String, SettingsPanel$OptionType)): com.dmdirc.config.Identity:hasOptionString(...)@151: {0}, {1}
    //#test_vector(void addOption(String, String, SettingsPanel$OptionType)): java.lang.String:indexOf(...)@143: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
            return;
        }

        if (optionName.indexOf('.') == -1) {
            return;
        }
        final String[] splitOption = optionName.split("\\.");

        names.put(optionName, displayName);
        types.put(optionName, type);

        if (config.hasOptionString(splitOption[0], splitOption[1])) {
    //#SettingsPanel.java:151: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:151: ?!array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: HIGH
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_5
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:151: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:151: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:151: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.Identity:hasOptionString(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    unanalyzed callee: bool com.dmdirc.config.Identity:hasOptionString(String, String)
            addCurrentOption(optionName, type,
    //#SettingsPanel.java:152: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_6
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:152: ?array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: MEDIUM
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_6
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-Inf..0}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:152: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_6
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:152: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    basic block: bb_6
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:152: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.Identity:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void addOption(String, String, SettingsPanel$OptionType)
    //#    unanalyzed callee: String com.dmdirc.config.Identity:getOption(String, String)
                    config.getOption(splitOption[0], splitOption[1]));
        } else {
            addAddableOption(optionName);
        }
    }
    //#SettingsPanel.java:157: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addOption(String, String, SettingsPanel$OptionType)

    /** Updates the options. */
    public void update() {
        addOptionPanel.clearOptions();
    //#SettingsPanel.java:161: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.update()
    //#input(void update()): ": "._tainted
    //#input(void update()): "Illegal Type: "._tainted
    //#input(void update()): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1).length
    //#input(void update()): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295]
    //#input(void update()): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(void update()): com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel$1.$SwitchMap$com$dmdirc$addons$ui_swing$components$expandingsettings$SettingsPanel$OptionType
    //#input(void update()): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType]
    //#input(void update()): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[others]
    //#input(void update()): this
    //#input(void update()): this...names
    //#input(void update()): this.addOptionPanel
    //#input(void update()): this.addOptionPanel.addInputNone
    //#input(void update()): this.addOptionPanel.addOptionButton
    //#input(void update()): this.addOptionPanel.addOptionComboBox
    //#input(void update()): this.config
    //#input(void update()): this.currentOptionsPanel
    //#input(void update()): this.currentOptionsPanel.checkBoxes
    //#input(void update()): this.currentOptionsPanel.colours
    //#input(void update()): this.currentOptionsPanel.parent
    //#input(void update()): this.currentOptionsPanel.spinners
    //#input(void update()): this.currentOptionsPanel.textFields
    //#input(void update()): this.types
    //#output(void update()): this.addOptionPanel.addInputCurrent
    //#pre[4] (void update()): this.addOptionPanel != null
    //#pre[5] (void update()): init'ed(this.addOptionPanel.addInputNone)
    //#pre[7] (void update()): this.addOptionPanel.addOptionComboBox != null
    //#pre[9] (void update()): this.currentOptionsPanel != null
    //#pre[10] (void update()): this.currentOptionsPanel.checkBoxes != null
    //#pre[11] (void update()): this.currentOptionsPanel.colours != null
    //#pre[13] (void update()): this.currentOptionsPanel.spinners != null
    //#pre[14] (void update()): this.currentOptionsPanel.textFields != null
    //#pre[15] (void update()): this.types != null
    //#pre[1] (void update()): (soft) com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295] in {1..4}
    //#pre[3] (void update()): (soft) this...names != null
    //#pre[6] (void update()): (soft) this.addOptionPanel.addOptionButton != null
    //#pre[8] (void update()): (soft) this.config != null
    //#pre[12] (void update()): (soft) this.currentOptionsPanel.parent != null
    //#presumption(void update()): java.util.Iterator:next(...)@164 != null
    //#presumption(void update()): java.util.Map$Entry:getValue(...).__Tag@168 == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#presumption(void update()): java.util.Map:entrySet(...)@164 != null
    //#presumption(void update()): java.util.Map_Entry:getKey(...)@165 != null
    //#presumption(void update()): java.util.Map_Entry:getValue(...)@168 != null
    //#post(void update()): this.addOptionPanel.addInputCurrent == this.addOptionPanel.addInputNone
    //#post(void update()): init'ed(this.addOptionPanel.addInputCurrent)
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void update()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void update()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void update()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void update()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void update()): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
    //#unanalyzed(void update()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void update()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void update()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JLabel:setLabelFor
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setVisible
    //#unanalyzed(void update()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setLayout
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:removeAll
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void update()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void update()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void update()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void update()): Effects-of-calling:getOptionName
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType:ordinal
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void update()): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void update()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(void update()): Effects-of-calling:isWindowsUI
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void update()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void update()): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JSpinner:setValue
    //#unanalyzed(void update()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void update()): Effects-of-calling:addOption
    //#unanalyzed(void update()): Effects-of-calling:java.util.Map:clear
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JComboBox:setEnabled
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:setVisible
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:removeAll
    //#unanalyzed(void update()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.AddOptionPanel:add
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JComboBox:getModel
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.DefaultComboBoxModel:addElement
    //#unanalyzed(void update()): Effects-of-calling:javax.swing.JComboBox:removeAllItems
    //#test_vector(void update()): com.dmdirc.config.Identity:hasOptionString(...)@167: {0}, {1}
    //#test_vector(void update()): java.util.Iterator:hasNext(...)@164: {0}, {1}
        currentOptionsPanel.clearOptions();

        for (Entry<String, OptionType> entry : types.entrySet()) {
            final String[] splitOption = entry.getKey().split("\\.");

            if (config.hasOptionString(splitOption[0], splitOption[1])) {
    //#SettingsPanel.java:167: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_3
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:167: ?!array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: HIGH
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_3
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:167: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_3
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:167: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_3
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:167: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.Identity:hasOptionString(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    unanalyzed callee: bool com.dmdirc.config.Identity:hasOptionString(String, String)
                addCurrentOption(entry.getKey(), entry.getValue(),
    //#SettingsPanel.java:168: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_8
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:168: ?array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: MEDIUM
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_8
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-Inf..0}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:168: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_8
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:168: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    basic block: bb_8
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:168: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.Identity:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void update()
    //#    unanalyzed callee: String com.dmdirc.config.Identity:getOption(String, String)
                        config.getOption(splitOption[0], splitOption[1]));
            } else {
                addAddableOption(entry.getKey());
            }
        }
    }
    //#SettingsPanel.java:174: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.update()

    /** Saves the options to the config. */
    public void save() {
        for (Entry<String, OptionType> entry : types.entrySet()) {
    //#SettingsPanel.java:178: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.save()
    //#input(void save()): "Illegal Type: "._tainted
    //#input(void save()): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1).length
    //#input(void save()): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295]
    //#input(void save()): com/dmdirc/addons/ui_swing/components/ColourChooser.__Descendant_Table[com/dmdirc/addons/ui_swing/components/ColourChooser]
    //#input(void save()): com/dmdirc/addons/ui_swing/components/ColourChooser.__Descendant_Table[others]
    //#input(void save()): com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel$1.$SwitchMap$com$dmdirc$addons$ui_swing$components$expandingsettings$SettingsPanel$OptionType
    //#input(void save()): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType]
    //#input(void save()): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[others]
    //#input(void save()): this
    //#input(void save()): this.config
    //#input(void save()): this.currentOptionsPanel
    //#input(void save()): this.currentOptionsPanel.checkBoxes
    //#input(void save()): this.currentOptionsPanel.colours
    //#input(void save()): this.currentOptionsPanel.spinners
    //#input(void save()): this.currentOptionsPanel.textFields
    //#input(void save()): this.types
    //#pre[9] (void save()): this.types != null
    //#pre[1] (void save()): (soft) com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295] in {1..4}
    //#pre[3] (void save()): (soft) this.config != null
    //#pre[4] (void save()): (soft) this.currentOptionsPanel != null
    //#pre[5] (void save()): (soft) this.currentOptionsPanel.checkBoxes != null
    //#pre[6] (void save()): (soft) this.currentOptionsPanel.colours != null
    //#pre[7] (void save()): (soft) this.currentOptionsPanel.spinners != null
    //#pre[8] (void save()): (soft) this.currentOptionsPanel.textFields != null
    //#presumption(void save()): java.util.Iterator:next(...)@178 != null
    //#presumption(void save()): java.util.Map$Entry:getValue(...).__Tag@179 == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#presumption(void save()): java.util.Map:entrySet(...)@178 != null
    //#presumption(void save()): java.util.Map_Entry:getKey(...)@182 != null
    //#presumption(void save()): java.util.Map_Entry:getValue(...)@179 != null
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void save()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType:ordinal
    //#unanalyzed(void save()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void save()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void save()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.JCheckBox:isSelected
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.JSpinner:getValue
    //#unanalyzed(void save()): Effects-of-calling:java.lang.Object:toString
    //#test_vector(void save()): java.util.Iterator:hasNext(...)@178: {0}, {1}
            final String value =
    //#SettingsPanel.java:179: Warning: unused assignment in callee
    //#    Unused assignment to (java.lang.Object:toString(...)._tainted) in getOption
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
                    currentOptionsPanel.getOption(entry.getKey(),
                    entry.getValue());
            final String[] splitOption = entry.getKey().split("\\.");
            if (value == null) {
                config.unsetOption(splitOption[0], splitOption[1]);
    //#SettingsPanel.java:184: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_4
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:184: ?!array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: HIGH
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_4
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:184: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_4
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:184: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_4
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:184: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:unsetOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:unsetOption(String, String)
            } else {
                config.setOption(splitOption[0], splitOption[1], value);
    //#SettingsPanel.java:186: ?use of default init
    //#    init'ed(splitOption.length)
    //#    severity: LOW
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#SettingsPanel.java:186: ?!array index out of bounds
    //#    splitOption.length >= 2
    //#    severity: HIGH
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_5
    //#    assertion: splitOption.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#SettingsPanel.java:186: ?use of default init
    //#    init'ed(splitOption[0])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:186: ?use of default init
    //#    init'ed(splitOption[1])
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    basic block: bb_5
    //#    assertion: init'ed(splitOption[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#SettingsPanel.java:186: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, String)
            }
        }
    }
    //#SettingsPanel.java:189: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.save()

    /**
     * Adds a current option.
     *
     * @param optionName option to add
     * @param type Option type
     * @param value Option value
     */
    protected void addCurrentOption(final String optionName,
            final OptionType type, final String value) {
        currentOptionsPanel.addOption(optionName, type, value);
    //#SettingsPanel.java:200: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addCurrentOption(String, SettingsPanel$OptionType, String)
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): ": "._tainted
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): "Illegal Type: "._tainted
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1).length
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295]
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel$1.$SwitchMap$com$dmdirc$addons$ui_swing$components$expandingsettings$SettingsPanel$OptionType
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): optionName
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this...names
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.checkBoxes
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.colours
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.parent
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.spinners
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.textFields
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): type
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): type._tainted
    //#input(void addCurrentOption(String, SettingsPanel$OptionType, String)): value
    //#pre[5] (void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel != null
    //#pre[6] (void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.checkBoxes != null
    //#pre[7] (void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.colours != null
    //#pre[9] (void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.spinners != null
    //#pre[10] (void addCurrentOption(String, SettingsPanel$OptionType, String)): this.currentOptionsPanel.textFields != null
    //#pre[11] (void addCurrentOption(String, SettingsPanel$OptionType, String)): type != null
    //#pre[1] (void addCurrentOption(String, SettingsPanel$OptionType, String)): (soft) com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295] in {1..4}
    //#pre[4] (void addCurrentOption(String, SettingsPanel$OptionType, String)): (soft) this...names != null
    //#pre[8] (void addCurrentOption(String, SettingsPanel$OptionType, String)): (soft) this.currentOptionsPanel.parent != null
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JLabel:setLabelFor
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setVisible
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setLayout
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:removeAll
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:getOptionName
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType:ordinal
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:javax.swing.JSpinner:setValue
    //#unanalyzed(void addCurrentOption(String, SettingsPanel$OptionType, String)): Effects-of-calling:java.lang.IllegalArgumentException
    }
    //#SettingsPanel.java:201: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addCurrentOption(String, SettingsPanel$OptionType, String)

    /**
     * Deletes a current option.
     *
     * @param optionName Option to delete
     * @param type Option type
     */
    protected void removeCurrentOption(final String optionName,
            final OptionType type) {
        currentOptionsPanel.delOption(optionName, type);
    //#SettingsPanel.java:211: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.removeCurrentOption(String, SettingsPanel$OptionType)
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): ": "._tainted
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): "Illegal Type: "._tainted
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1).length
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295]
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): com/dmdirc/addons/ui_swing/components/expandingsettings/CurrentOptionsPanel$1.$SwitchMap$com$dmdirc$addons$ui_swing$components$expandingsettings$SettingsPanel$OptionType
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): optionName
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this...names
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.checkBoxes
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.colours
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.parent
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.spinners
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.textFields
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): type
    //#input(void removeCurrentOption(String, SettingsPanel$OptionType)): type._tainted
    //#pre[5] (void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel != null
    //#pre[6] (void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.checkBoxes != null
    //#pre[7] (void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.colours != null
    //#pre[9] (void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.spinners != null
    //#pre[10] (void removeCurrentOption(String, SettingsPanel$OptionType)): this.currentOptionsPanel.textFields != null
    //#pre[11] (void removeCurrentOption(String, SettingsPanel$OptionType)): type != null
    //#pre[1] (void removeCurrentOption(String, SettingsPanel$OptionType)): (soft) com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel$1__static_init.new int[](CurrentOptionsPanel$1__static_init#1)[0..4_294_967_295] in {1..4}
    //#pre[4] (void removeCurrentOption(String, SettingsPanel$OptionType)): (soft) this...names != null
    //#pre[8] (void removeCurrentOption(String, SettingsPanel$OptionType)): (soft) this.currentOptionsPanel.parent != null
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JLabel:setLabelFor
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setVisible
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:setLayout
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.CurrentOptionsPanel:removeAll
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:getOptionName
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType:ordinal
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(void removeCurrentOption(String, SettingsPanel$OptionType)): Effects-of-calling:java.util.Map:get
    }
    //#SettingsPanel.java:212: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.removeCurrentOption(String, SettingsPanel$OptionType)

    /**
     * Adds an addable option.
     *
     * @param optionName Option name
     */
    protected void addAddableOption(final String optionName) {
        addOptionPanel.addOption(optionName);
    //#SettingsPanel.java:220: method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addAddableOption(String)
    //#input(void addAddableOption(String)): optionName
    //#input(void addAddableOption(String)): this
    //#input(void addAddableOption(String)): this.addOptionPanel
    //#input(void addAddableOption(String)): this.addOptionPanel.addOptionButton
    //#input(void addAddableOption(String)): this.addOptionPanel.addOptionComboBox
    //#pre[3] (void addAddableOption(String)): this.addOptionPanel != null
    //#pre[4] (void addAddableOption(String)): this.addOptionPanel.addOptionButton != null
    //#pre[5] (void addAddableOption(String)): this.addOptionPanel.addOptionComboBox != null
    //#unanalyzed(void addAddableOption(String)): Effects-of-calling:javax.swing.JComboBox:setEnabled
    //#unanalyzed(void addAddableOption(String)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void addAddableOption(String)): Effects-of-calling:javax.swing.JComboBox:getModel
    //#unanalyzed(void addAddableOption(String)): Effects-of-calling:javax.swing.DefaultComboBoxModel:addElement
    }
    //#SettingsPanel.java:221: end of method: void com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.addAddableOption(String)

    /**
     * Returns the display name for a config option.
     *
     * @param optionName Option name to return the name for
     *
     * @return Display name for a specified option
     */
    public String getOptionName(final String optionName) {
        return names.get(optionName);
    //#SettingsPanel.java:231: method: String com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.getOptionName(String)
    //#input(String getOptionName(String)): optionName
    //#input(String getOptionName(String)): this
    //#input(String getOptionName(String)): this.names
    //#output(String getOptionName(String)): return_value
    //#pre[3] (String getOptionName(String)): this.names != null
    //#post(String getOptionName(String)): init'ed(return_value)
    //#SettingsPanel.java:231: end of method: String com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.getOptionName(String)
    }

    /**
     * Returns the option type for a config option.
     *
     * @param optionName Option name to return the type of
     *
     * @return Option type for a specified option
     */
    public OptionType getOptionType(final String optionName) {
        return types.get(optionName);
    //#SettingsPanel.java:242: method: SettingsPanel$OptionType com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.getOptionType(String)
    //#input(SettingsPanel$OptionType getOptionType(String)): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType]
    //#input(SettingsPanel$OptionType getOptionType(String)): com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType.__Descendant_Table[others]
    //#input(SettingsPanel$OptionType getOptionType(String)): optionName
    //#input(SettingsPanel$OptionType getOptionType(String)): this
    //#input(SettingsPanel$OptionType getOptionType(String)): this.types
    //#output(SettingsPanel$OptionType getOptionType(String)): return_value
    //#pre[3] (SettingsPanel$OptionType getOptionType(String)): this.types != null
    //#presumption(SettingsPanel$OptionType getOptionType(String)): java.util.Map:get(...).__Tag@242 == com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType
    //#post(SettingsPanel$OptionType getOptionType(String)): init'ed(return_value)
    //#SettingsPanel.java:242: end of method: SettingsPanel$OptionType com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.getOptionType(String)
    }
}
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel]
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addAddableOption(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addCurrentOption(Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addOption(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;)V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.getOptionName(Ljava/lang/String;)Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.getOptionType(Ljava/lang/String;)Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.initComponents(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.removeCurrentOption(Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;)V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.save()V
    //#output(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.update()V
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addAddableOption(Ljava/lang/String;)V == &addAddableOption
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addCurrentOption(Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;Ljava/lang/String;)V == &addCurrentOption
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.addOption(Ljava/lang/String;Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;)V == &addOption
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.getOptionName(Ljava/lang/String;)Ljava/lang/String; == &getOptionName
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.getOptionType(Ljava/lang/String;)Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType; == &getOptionType
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.initComponents(Ljava/lang/String;)V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.removeCurrentOption(Ljava/lang/String;Lcom/dmdirc/addons/ui_swing/components/expandingsettings/SettingsPanel$OptionType;)V == &removeCurrentOption
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.save()V == &save
    //#post(com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init): __Dispatch_Table.update()V == &update
    //#SettingsPanel.java:: end of method: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel.com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel__static_init
    //#SettingsPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel
    //#SettingsPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel$OptionType
