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

package com.dmdirc.addons.ui_swing;

import com.dmdirc.config.prefs.PreferencesSetting;
import com.dmdirc.config.prefs.validator.NumericalValidator;
import com.dmdirc.addons.ui_swing.components.ColourChooser;
import com.dmdirc.addons.ui_swing.components.FontPicker;
import com.dmdirc.addons.ui_swing.components.OptionalColourChooser;
import com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay;
import com.dmdirc.addons.ui_swing.components.durationeditor.DurationListener;
import com.dmdirc.addons.ui_swing.components.renderers.MapEntryRenderer;
import com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Map;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * Provides methods for constructing a JComponent from a PreferencesSetting.
 */
public final class PrefsComponentFactory {

    /**
     * Creates a new instance of PrefsComponentFactory.
     */
    private PrefsComponentFactory() {
    //#PrefsComponentFactory.java:60: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory.com.dmdirc.addons.ui_swing.PrefsComponentFactory()
        // Shouldn't be initialised
    }
    //#PrefsComponentFactory.java:62: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory.com.dmdirc.addons.ui_swing.PrefsComponentFactory()

    /**
     * Retrieves the component for the specified setting. Components are
     * initialised with the current value(s) of the setting, and have listeners
     * added to update the setting whenever the components are changed.
     *
     * @param setting The setting whose component is being requested
     * @return An appropriate JComponent descendant
     */
    public static JComponent getComponent(final PreferencesSetting setting) {
        JComponent option;

        switch (setting.getType()) {
    //#PrefsComponentFactory.java:75: method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9.com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init
    //#PrefsComponentFactory.java:75: Warning: method not available - call not analyzed
    //#    call on PreferencesType[] com.dmdirc.config.prefs.PreferencesType:values()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9
    //#    method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init
    //#    unanalyzed callee: PreferencesType[] com.dmdirc.config.prefs.PreferencesType:values()
    //#PrefsComponentFactory.java:75: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.prefs.PreferencesType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9
    //#    method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init
    //#    unanalyzed callee: int com.dmdirc.config.prefs.PreferencesType:ordinal()
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.BOOLEAN
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.COLOUR
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.DURATION
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.FONT
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.INTEGER
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.MULTICHOICE
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.OPTIONALCOLOUR
    //#input(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.TEXT
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$9]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): new int[](PrefsComponentFactory$9__static_init#1) num objects
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType.length
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType[0..4_294_967_295]
    //#new obj(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): new int[](PrefsComponentFactory$9__static_init#1)
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.BOOLEAN != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.COLOUR != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.DURATION != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.FONT != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.INTEGER != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.MULTICHOICE != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.OPTIONALCOLOUR != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType.TEXT != null
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length@75
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:values(...).length@75 >= 1
    //#presumption(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): com.dmdirc.config.prefs.PreferencesType:values(...)@75 != null
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType == &new int[](PrefsComponentFactory$9__static_init#1)
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$9] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): new int[](PrefsComponentFactory$9__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType.length >= 1
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init): $SwitchMap$com$dmdirc$config$prefs$PreferencesType[0..4_294_967_295] in {0..8}, if init'ed
    //#PrefsComponentFactory.java:75: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9.com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init
    //#PrefsComponentFactory.java:75: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getComponent(PreferencesSetting)
    //#PrefsComponentFactory.java:75: Warning: method not available - call not analyzed
    //#    call on PreferencesType com.dmdirc.config.prefs.PreferencesSetting:getType()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComponent(PreferencesSetting)
    //#    unanalyzed callee: PreferencesType com.dmdirc.config.prefs.PreferencesSetting:getType()
    //#PrefsComponentFactory.java:75: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.prefs.PreferencesType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComponent(PreferencesSetting)
    //#    unanalyzed callee: int com.dmdirc.config.prefs.PreferencesType:ordinal()
    //#input(JComponent getComponent(PreferencesSetting)): " is not a valid option type"._tainted
    //#input(JComponent getComponent(PreferencesSetting)): com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init.new int[](PrefsComponentFactory$9__static_init#1).length
    //#input(JComponent getComponent(PreferencesSetting)): com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init.new int[](PrefsComponentFactory$9__static_init#1)[0..4_294_967_295]
    //#input(JComponent getComponent(PreferencesSetting)): com/dmdirc/addons/ui_swing/PrefsComponentFactory$9.$SwitchMap$com$dmdirc$config$prefs$PreferencesType
    //#input(JComponent getComponent(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(JComponent getComponent(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/OptionalColourChooser.java.awt.Color.DARK_GRAY
    //#input(JComponent getComponent(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(JComponent getComponent(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.__Dispatch_Table.addDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V
    //#input(JComponent getComponent(PreferencesSetting)): setting
    //#output(JComponent getComponent(PreferencesSetting)): java.lang.String:substring(...)._tainted
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).__Tag
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).command
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).editButton
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).listeners
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).previewPanel
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).showHex
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).showIRC
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).value
    //#output(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).window
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).__Tag
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).button
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).duration
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).durationLabel
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).listeners
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).window
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).__Tag
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).button
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).duration
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).durationLabel
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).listeners
    //#output(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).window
    //#output(JComponent getComponent(PreferencesSetting)): new EventListenerList(ColourChooser#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new EventListenerList(ColourChooser#1).__Lock
    //#output(JComponent getComponent(PreferencesSetting)): new FontPicker(getFontOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new FontPicker(getFontOption#1).__Tag
    //#output(JComponent getComponent(PreferencesSetting)): new JButton(ColourChooser#2) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JButton(OptionalColourChooser#2) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JButton(initComponents#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JCheckBox(getBooleanOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JComboBox(getComboOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JLabel(initComponents#2) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JPanel(ColourChooser#5) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JPanel(OptionalColourChooser#5) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#3) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#5) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new ListenerList(DurationDisplay#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new ListenerList(DurationDisplay#1).__Lock
    //#output(JComponent getComponent(PreferencesSetting)): new ListenerList(OptionalColourChooser#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).__Tag
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).editButton
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).enabled
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).listeners
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).previewPanel
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).showHex
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).showIRC
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).value
    //#output(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).window
    //#output(JComponent getComponent(PreferencesSetting)): new ValidatingJTextField(getTextOption#1) num objects
    //#output(JComponent getComponent(PreferencesSetting)): return_value
    //#new obj(JComponent getComponent(PreferencesSetting)): java.lang.String:substring(...)
    //#new obj(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2)
    //#new obj(JComponent getComponent(PreferencesSetting)): new EventListenerList(ColourChooser#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new FontPicker(getFontOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JButton(ColourChooser#2)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JButton(OptionalColourChooser#2)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JButton(initComponents#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JCheckBox(getBooleanOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JComboBox(getComboOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JLabel(initComponents#2)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JPanel(ColourChooser#5)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JPanel(OptionalColourChooser#5)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#3)
    //#new obj(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#5)
    //#new obj(JComponent getComponent(PreferencesSetting)): new ListenerList(DurationDisplay#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new ListenerList(OptionalColourChooser#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1)
    //#new obj(JComponent getComponent(PreferencesSetting)): new ValidatingJTextField(getTextOption#1)
    //#pre[2] (JComponent getComponent(PreferencesSetting)): setting != null
    //#pre[1] (JComponent getComponent(PreferencesSetting)): (soft) com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init.new int[](PrefsComponentFactory$9__static_init#1)[0..4_294_967_295] in {1..8}
    //#presumption(JComponent getComponent(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getType(...)@75 != null
    //#presumption(JComponent getComponent(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 >= 0
    //#presumption(JComponent getComponent(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesType:values(...).length >= 1
    //#presumption(JComponent getComponent(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesType:ordinal(...)@75 < com.dmdirc.config.prefs.PreferencesType:values(...).length
    //#presumption(JComponent getComponent(PreferencesSetting)): javax.swing.JComponent:getFont(...)@105 != null
    //#post(JComponent getComponent(PreferencesSetting)): java.lang.String:substring(...)._tainted == 0
    //#post(JComponent getComponent(PreferencesSetting)): return_value in Addr_Set{&new ValidatingJTextField(getTextOption#1),&new JCheckBox(getBooleanOption#1),&new JComboBox(getComboOption#1),&new JSpinner(getIntegerOption#1),&new JSpinner(getIntegerOption#3),&new JSpinner(getIntegerOption#5),&new DurationDisplay(getDurationOption#1),&new DurationDisplay(getDurationOption#2),&new ColourChooser(getColourOption#1),&new OptionalColourChooser(getOptionalColourOption#1),&new FontPicker(getFontOption#1)}
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).__Tag == com/dmdirc/addons/ui_swing/components/ColourChooser
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).command == &""
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).editButton == &new JButton(ColourChooser#2)
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).listeners == &new EventListenerList(ColourChooser#1)
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).previewPanel == &new JPanel(ColourChooser#5)
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).showHex == 1
    //#post(JComponent getComponent(PreferencesSetting)): new ColourChooser(getColourOption#1).showIRC == 1
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new ColourChooser(getColourOption#1).value)
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new ColourChooser(getColourOption#1).window)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).__Tag == com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).button == &new JButton(initComponents#1)
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new DurationDisplay(getDurationOption#1).duration)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).durationLabel == &new JLabel(initComponents#2)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).listeners == &new ListenerList(DurationDisplay#1)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#1).window == null
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).__Tag == com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).button == &new JButton(initComponents#1)
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new DurationDisplay(getDurationOption#2).duration)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).durationLabel == &new JLabel(initComponents#2)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).listeners == &new ListenerList(DurationDisplay#1)
    //#post(JComponent getComponent(PreferencesSetting)): new DurationDisplay(getDurationOption#2).window == null
    //#post(JComponent getComponent(PreferencesSetting)): new EventListenerList(ColourChooser#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new EventListenerList(ColourChooser#1).__Lock)
    //#post(JComponent getComponent(PreferencesSetting)): new FontPicker(getFontOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new FontPicker(getFontOption#1).__Tag == com/dmdirc/addons/ui_swing/components/FontPicker
    //#post(JComponent getComponent(PreferencesSetting)): new JButton(ColourChooser#2) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JButton(OptionalColourChooser#2) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JButton(initComponents#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JCheckBox(getBooleanOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JComboBox(getComboOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JLabel(initComponents#2) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JPanel(ColourChooser#5) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JPanel(OptionalColourChooser#5) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#3) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new JSpinner(getIntegerOption#5) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new ListenerList(DurationDisplay#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new ListenerList(DurationDisplay#1).__Lock)
    //#post(JComponent getComponent(PreferencesSetting)): new ListenerList(OptionalColourChooser#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1) num objects <= 1
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).__Tag == com/dmdirc/addons/ui_swing/components/OptionalColourChooser
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).editButton == &new JButton(OptionalColourChooser#2)
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).enabled == &new JCheckBox(OptionalColourChooser#7)
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).listeners == &new ListenerList(OptionalColourChooser#1)
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).previewPanel == &new JPanel(OptionalColourChooser#5)
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).showHex == 1
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).showIRC == 1
    //#post(JComponent getComponent(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1).value in Addr_Set{&"0",&java.lang.String:substring(...)}
    //#post(JComponent getComponent(PreferencesSetting)): init'ed(new OptionalColourChooser(getOptionalColourOption#1).window)
    //#post(JComponent getComponent(PreferencesSetting)): new ValidatingJTextField(getTextOption#1) num objects <= 1
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getValidator
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getValue
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:setText
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.event.KeyAdapter
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addKeyListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Boolean:parseBoolean
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:setSelected
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:addChangeListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getComboOptions
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Set:toArray
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.MapEntryRenderer
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox:setRenderer
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox:setEditable
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox:setSelectedItem
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox:addActionListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.validator.NumericalValidator:instanceof
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.validator.NumericalValidator:getMin
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.config.prefs.validator.NumericalValidator:getMax
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JSpinner:setValue
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JSpinner:addChangeListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory$5
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:addDurationListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:isWindowsUI
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.event.EventListenerList:add
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:setPreferredSize
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:addActionListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setLayout
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:add
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList:add
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.DefaultComboBoxModel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.GraphicsEnvironment:getLocalGraphicsEnvironment
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.GraphicsEnvironment:getAvailableFontFamilyNames
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:getFont
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:getModel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.awt.Font
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.DefaultComboBoxModel:addElement
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.FontListCellRenderer
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:setRenderer
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:addActionListener
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Long:valueOf
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(JComponent getComponent(PreferencesSetting)): Effects-of-calling:java.lang.Class:getName
    //#test_vector(JComponent getComponent(PreferencesSetting)): com.dmdirc.addons.ui_swing.PrefsComponentFactory$9__static_init.new int[](PrefsComponentFactory$9__static_init#1)[0..4_294_967_295]: {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}
            case TEXT:
                option = getTextOption(setting);
                break;
            case BOOLEAN:
                option = getBooleanOption(setting);
                break;
            case MULTICHOICE:
                option = getComboOption(setting);
                break;
            case INTEGER:
                option = getIntegerOption(setting);
                break;
            case DURATION:
                option = getDurationOption(setting);
                break;
            case COLOUR:
                option = getColourOption(setting);
                break;
            case OPTIONALCOLOUR:
                option = getOptionalColourOption(setting);
                break;
            case FONT:
                option = getFontOption(setting);
                break;
            default:
                throw new IllegalArgumentException(setting.getType()
                        + " is not a valid option type");
        }

        option.setPreferredSize(new Dimension(Short.MAX_VALUE, option.getFont().
                getSize()));

        return option;
    //#PrefsComponentFactory.java:108: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getComponent(PreferencesSetting)
    }

    /**
     * Initialises and returns a ValidatingJTextField for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getTextOption(final PreferencesSetting setting) {
        final ValidatingJTextField option = new ValidatingJTextField(setting.getValidator());
    //#PrefsComponentFactory.java:118: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getTextOption(PreferencesSetting)
    //#PrefsComponentFactory.java:118: Warning: method not available - call not analyzed
    //#    call on Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getTextOption(PreferencesSetting)
    //#    unanalyzed callee: Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#PrefsComponentFactory.java:118: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField(Validator)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getTextOption(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField(Validator)
    //#input(JComponent getTextOption(PreferencesSetting)): setting
    //#output(JComponent getTextOption(PreferencesSetting)): new ValidatingJTextField(getTextOption#1) num objects
    //#output(JComponent getTextOption(PreferencesSetting)): return_value
    //#new obj(JComponent getTextOption(PreferencesSetting)): new ValidatingJTextField(getTextOption#1)
    //#pre[1] (JComponent getTextOption(PreferencesSetting)): setting != null
    //#post(JComponent getTextOption(PreferencesSetting)): return_value == &new ValidatingJTextField(getTextOption#1)
    //#post(JComponent getTextOption(PreferencesSetting)): new ValidatingJTextField(getTextOption#1) num objects == 1
    //#unanalyzed(JComponent getTextOption(PreferencesSetting)): Effects-of-calling:java.awt.event.KeyAdapter
        option.setText(setting.getValue());
    //#PrefsComponentFactory.java:119: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getTextOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#PrefsComponentFactory.java:119: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:setText(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getTextOption(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:setText(String)

        option.addKeyListener(new KeyAdapter() {
    //#PrefsComponentFactory.java:121: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1.com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:121: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1.com.dmdirc.addons.ui_swing.PrefsComponentFactory$1(PreferencesSetting)
    //#PrefsComponentFactory.java:121: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addKeyListener(KeyListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getTextOption(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField:addKeyListener(KeyListener)
            @Override
            public void keyReleased(final KeyEvent e) {
                setting.setValue(((JTextField) e.getSource()).getText());
    //#PrefsComponentFactory.java:124: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1.keyReleased(KeyEvent)
    //#PrefsComponentFactory.java:124: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$1
    //#    method: void keyReleased(KeyEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void keyReleased(KeyEvent)): e
    //#input(void keyReleased(KeyEvent)): this
    //#input(void keyReleased(KeyEvent)): this.val$setting
    //#pre[1] (void keyReleased(KeyEvent)): e != null
    //#pre[3] (void keyReleased(KeyEvent)): this.val$setting != null
    //#presumption(void keyReleased(KeyEvent)): java.awt.event.KeyEvent:getSource(...)@124 != null
            }
    //#PrefsComponentFactory.java:125: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$1.keyReleased(KeyEvent)
        });

        return option;
    //#PrefsComponentFactory.java:128: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getTextOption(PreferencesSetting)
    }

    /**
     * Initialises and returns a JCheckBox for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getBooleanOption(final PreferencesSetting setting) {
        final JCheckBox option = new JCheckBox();
    //#PrefsComponentFactory.java:138: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getBooleanOption(PreferencesSetting)
    //#input(JComponent getBooleanOption(PreferencesSetting)): setting
    //#output(JComponent getBooleanOption(PreferencesSetting)): new JCheckBox(getBooleanOption#1) num objects
    //#output(JComponent getBooleanOption(PreferencesSetting)): return_value
    //#new obj(JComponent getBooleanOption(PreferencesSetting)): new JCheckBox(getBooleanOption#1)
    //#pre[1] (JComponent getBooleanOption(PreferencesSetting)): setting != null
    //#post(JComponent getBooleanOption(PreferencesSetting)): return_value == &new JCheckBox(getBooleanOption#1)
    //#post(JComponent getBooleanOption(PreferencesSetting)): new JCheckBox(getBooleanOption#1) num objects == 1
        option.setSelected(Boolean.parseBoolean(setting.getValue()));
    //#PrefsComponentFactory.java:139: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getBooleanOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
        option.addChangeListener(new ChangeListener() {
    //#PrefsComponentFactory.java:140: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2.com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:140: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2.com.dmdirc.addons.ui_swing.PrefsComponentFactory$2(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void stateChanged(final ChangeEvent e) {
                setting.setValue(String.valueOf(((JCheckBox) e.getSource()).isSelected()));
    //#PrefsComponentFactory.java:145: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2.stateChanged(ChangeEvent)
    //#PrefsComponentFactory.java:145: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$2
    //#    method: void stateChanged(ChangeEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void stateChanged(ChangeEvent)): e
    //#input(void stateChanged(ChangeEvent)): this
    //#input(void stateChanged(ChangeEvent)): this.val$setting
    //#pre[1] (void stateChanged(ChangeEvent)): e != null
    //#pre[3] (void stateChanged(ChangeEvent)): this.val$setting != null
    //#presumption(void stateChanged(ChangeEvent)): javax.swing.event.ChangeEvent:getSource(...)@145 != null
            }
    //#PrefsComponentFactory.java:146: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$2.stateChanged(ChangeEvent)
        });

        return option;
    //#PrefsComponentFactory.java:149: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getBooleanOption(PreferencesSetting)
    }

    /**
     * Initialises and returns a JComboBox for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getComboOption(final PreferencesSetting setting) {
        final JComboBox option = new JComboBox(setting.getComboOptions().entrySet().toArray());
    //#PrefsComponentFactory.java:159: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getComboOption(PreferencesSetting)
    //#PrefsComponentFactory.java:159: Warning: method not available - call not analyzed
    //#    call on Map com.dmdirc.config.prefs.PreferencesSetting:getComboOptions()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComboOption(PreferencesSetting)
    //#    unanalyzed callee: Map com.dmdirc.config.prefs.PreferencesSetting:getComboOptions()
    //#input(JComponent getComboOption(PreferencesSetting)): setting
    //#output(JComponent getComboOption(PreferencesSetting)): new JComboBox(getComboOption#1) num objects
    //#output(JComponent getComboOption(PreferencesSetting)): return_value
    //#new obj(JComponent getComboOption(PreferencesSetting)): new JComboBox(getComboOption#1)
    //#pre[1] (JComponent getComboOption(PreferencesSetting)): setting != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getComboOptions(...)@159 != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getComboOptions(...)@163 != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): java.util.Iterator:next(...)@163 != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): java.util.Map:entrySet(...)@159 != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): java.util.Map:entrySet(...)@163 != null
    //#presumption(JComponent getComboOption(PreferencesSetting)): java.util.Map_Entry:getKey(...)@164 != null
    //#post(JComponent getComboOption(PreferencesSetting)): return_value == &new JComboBox(getComboOption#1)
    //#post(JComponent getComboOption(PreferencesSetting)): new JComboBox(getComboOption#1) num objects == 1
    //#test_vector(JComponent getComboOption(PreferencesSetting)): java.lang.String:equals(...)@164: {0}, {1}
    //#test_vector(JComponent getComboOption(PreferencesSetting)): java.util.Iterator:hasNext(...)@163: {0}, {1}
        option.setRenderer(new MapEntryRenderer());
    //#PrefsComponentFactory.java:160: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.renderers.MapEntryRenderer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComboOption(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.renderers.MapEntryRenderer()
        option.setEditable(false);

        for (Map.Entry<String, String> entry : setting.getComboOptions().entrySet()) {
    //#PrefsComponentFactory.java:163: Warning: method not available - call not analyzed
    //#    call on Map com.dmdirc.config.prefs.PreferencesSetting:getComboOptions()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComboOption(PreferencesSetting)
    //#    unanalyzed callee: Map com.dmdirc.config.prefs.PreferencesSetting:getComboOptions()
            if (entry.getKey().equals(setting.getValue())) {
    //#PrefsComponentFactory.java:164: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getComboOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
                option.setSelectedItem(entry);
                break;
            }
        }

        option.addActionListener(new ActionListener() {
    //#PrefsComponentFactory.java:170: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3.com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:170: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3.com.dmdirc.addons.ui_swing.PrefsComponentFactory$3(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void actionPerformed(final ActionEvent e) {
                setting.setValue((String) ((Map.Entry)
    //#PrefsComponentFactory.java:175: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3.actionPerformed(ActionEvent)
    //#PrefsComponentFactory.java:175: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$3
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.val$setting
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): this.val$setting != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@175 != null
    //#presumption(void actionPerformed(ActionEvent)): javax.swing.JComboBox:getSelectedItem(...)@175 != null
                        ((JComboBox) e.getSource()).getSelectedItem()).getKey());
            }
    //#PrefsComponentFactory.java:177: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$3.actionPerformed(ActionEvent)
        });

        return option;
    //#PrefsComponentFactory.java:180: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getComboOption(PreferencesSetting)
    }

    /**
     * Initialises and returns a JSpinner for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getIntegerOption(final PreferencesSetting setting) {
        JSpinner option;

        try {
            if (setting.getValidator() instanceof NumericalValidator) {
    //#PrefsComponentFactory.java:193: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getIntegerOption(PreferencesSetting)
    //#PrefsComponentFactory.java:193: Warning: method not available - call not analyzed
    //#    call on Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#input(JComponent getIntegerOption(PreferencesSetting)): setting
    //#output(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#1) num objects
    //#output(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#3) num objects
    //#output(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#5) num objects
    //#output(JComponent getIntegerOption(PreferencesSetting)): return_value
    //#new obj(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#1)
    //#new obj(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#3)
    //#new obj(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#5)
    //#pre[1] (JComponent getIntegerOption(PreferencesSetting)): (soft) setting != null
    //#presumption(JComponent getIntegerOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getValidator(...)@194 != null
    //#presumption(JComponent getIntegerOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getValidator(...)@194 != null
    //#post(JComponent getIntegerOption(PreferencesSetting)): return_value == One-of{&new JSpinner(getIntegerOption#1), &new JSpinner(getIntegerOption#3), &new JSpinner(getIntegerOption#5)}
    //#post(JComponent getIntegerOption(PreferencesSetting)): return_value in Addr_Set{&new JSpinner(getIntegerOption#3),&new JSpinner(getIntegerOption#1),&new JSpinner(getIntegerOption#5)}
    //#post(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#1) num objects <= 1
    //#post(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#3) num objects <= 1
    //#post(JComponent getIntegerOption(PreferencesSetting)): new JSpinner(getIntegerOption#5) num objects <= 1
                option = new JSpinner(
    //#PrefsComponentFactory.java:194: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#PrefsComponentFactory.java:194: Warning: method not available - call not analyzed
    //#    call on Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: Validator com.dmdirc.config.prefs.PreferencesSetting:getValidator()
    //#PrefsComponentFactory.java:194: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.prefs.validator.NumericalValidator:getMin()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: int com.dmdirc.config.prefs.validator.NumericalValidator:getMin()
    //#PrefsComponentFactory.java:194: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.config.prefs.validator.NumericalValidator:getMax()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: int com.dmdirc.config.prefs.validator.NumericalValidator:getMax()
                        new SpinnerNumberModel(Integer.parseInt(setting.getValue()),
                        ((NumericalValidator) setting.getValidator()).getMin(),
                        ((NumericalValidator) setting.getValidator()).getMax(),
                        1));
            } else {
                option = new JSpinner(new SpinnerNumberModel());
                option.setValue(Integer.parseInt(setting.getValue()));
    //#PrefsComponentFactory.java:201: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getIntegerOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
            }
        } catch (NumberFormatException ex) {
            option = new JSpinner(new SpinnerNumberModel());
        }

        option.addChangeListener(new ChangeListener() {
    //#PrefsComponentFactory.java:207: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4.com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:207: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4.com.dmdirc.addons.ui_swing.PrefsComponentFactory$4(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void stateChanged(final ChangeEvent e) {
                setting.setValue(((JSpinner) e.getSource()).getValue().
    //#PrefsComponentFactory.java:212: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4.stateChanged(ChangeEvent)
    //#PrefsComponentFactory.java:212: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$4
    //#    method: void stateChanged(ChangeEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void stateChanged(ChangeEvent)): e
    //#input(void stateChanged(ChangeEvent)): this
    //#input(void stateChanged(ChangeEvent)): this.val$setting
    //#pre[1] (void stateChanged(ChangeEvent)): e != null
    //#pre[3] (void stateChanged(ChangeEvent)): this.val$setting != null
    //#presumption(void stateChanged(ChangeEvent)): javax.swing.JSpinner:getValue(...)@212 != null
    //#presumption(void stateChanged(ChangeEvent)): javax.swing.event.ChangeEvent:getSource(...)@212 != null
                        toString());
            }
    //#PrefsComponentFactory.java:214: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$4.stateChanged(ChangeEvent)
        });

        return option;
    //#PrefsComponentFactory.java:217: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getIntegerOption(PreferencesSetting)
    }

    /**
     * Initialises and returns a DurationDisplay for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getDurationOption(final PreferencesSetting setting) {
        DurationDisplay option;

        try {
            option = new DurationDisplay(Integer.parseInt(setting.getValue()));
    //#PrefsComponentFactory.java:230: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getDurationOption(PreferencesSetting)
    //#PrefsComponentFactory.java:230: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getDurationOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#input(JComponent getDurationOption(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(JComponent getDurationOption(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.__Dispatch_Table.addDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V
    //#input(JComponent getDurationOption(PreferencesSetting)): setting
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1) num objects
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).__Tag
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).button
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).duration
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).durationLabel
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).listeners
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).window
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2) num objects
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).__Tag
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).button
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).duration
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).durationLabel
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).listeners
    //#output(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).window
    //#output(JComponent getDurationOption(PreferencesSetting)): new JButton(initComponents#1) num objects
    //#output(JComponent getDurationOption(PreferencesSetting)): new JLabel(initComponents#2) num objects
    //#output(JComponent getDurationOption(PreferencesSetting)): new ListenerList(DurationDisplay#1) num objects
    //#output(JComponent getDurationOption(PreferencesSetting)): new ListenerList(DurationDisplay#1).__Lock
    //#output(JComponent getDurationOption(PreferencesSetting)): return_value
    //#new obj(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1)
    //#new obj(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2)
    //#new obj(JComponent getDurationOption(PreferencesSetting)): new JButton(initComponents#1)
    //#new obj(JComponent getDurationOption(PreferencesSetting)): new JLabel(initComponents#2)
    //#new obj(JComponent getDurationOption(PreferencesSetting)): new ListenerList(DurationDisplay#1)
    //#pre[1] (JComponent getDurationOption(PreferencesSetting)): (soft) setting != null
    //#post(JComponent getDurationOption(PreferencesSetting)): return_value == One-of{&new DurationDisplay(getDurationOption#1), &new DurationDisplay(getDurationOption#2)}
    //#post(JComponent getDurationOption(PreferencesSetting)): return_value in Addr_Set{&new DurationDisplay(getDurationOption#1),&new DurationDisplay(getDurationOption#2)}
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1) num objects <= 1
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).__Tag == com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).button == &new JButton(initComponents#1)
    //#post(JComponent getDurationOption(PreferencesSetting)): init'ed(new DurationDisplay(getDurationOption#1).duration)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).durationLabel == &new JLabel(initComponents#2)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).listeners == &new ListenerList(DurationDisplay#1)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#1).window == null
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2) num objects <= 1
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).__Tag == com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).button == &new JButton(initComponents#1)
    //#post(JComponent getDurationOption(PreferencesSetting)): init'ed(new DurationDisplay(getDurationOption#2).duration)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).durationLabel == &new JLabel(initComponents#2)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).listeners == &new ListenerList(DurationDisplay#1)
    //#post(JComponent getDurationOption(PreferencesSetting)): new DurationDisplay(getDurationOption#2).window == null
    //#post(JComponent getDurationOption(PreferencesSetting)): new JButton(initComponents#1) num objects <= 1
    //#post(JComponent getDurationOption(PreferencesSetting)): new JLabel(initComponents#2) num objects <= 1
    //#post(JComponent getDurationOption(PreferencesSetting)): new ListenerList(DurationDisplay#1) num objects <= 1
    //#post(JComponent getDurationOption(PreferencesSetting)): init'ed(new ListenerList(DurationDisplay#1).__Lock)
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:isWindowsUI
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.Long:valueOf
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList:add
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(JComponent getDurationOption(PreferencesSetting)): Effects-of-calling:java.lang.String:equals
        } catch (NumberFormatException ex) {
            option = new DurationDisplay();
        }

        option.addDurationListener(new DurationListener() {
    //#PrefsComponentFactory.java:235: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5.com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:235: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5.com.dmdirc.addons.ui_swing.PrefsComponentFactory$5(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void durationUpdated(final int newDuration) {
                setting.setValue(String.valueOf(newDuration));
    //#PrefsComponentFactory.java:240: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5.durationUpdated(int)
    //#PrefsComponentFactory.java:240: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$5
    //#    method: void durationUpdated(int)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void durationUpdated(int)): newDuration
    //#input(void durationUpdated(int)): this
    //#input(void durationUpdated(int)): this.val$setting
    //#pre[3] (void durationUpdated(int)): this.val$setting != null
            }
    //#PrefsComponentFactory.java:241: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$5.durationUpdated(int)
        });

        return option;
    //#PrefsComponentFactory.java:244: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getDurationOption(PreferencesSetting)
    }

    /**
     * Initialises and returns a ColourChooser for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getColourOption(final PreferencesSetting setting) {
        final ColourChooser option = new ColourChooser(setting.getValue(), true, true);
    //#PrefsComponentFactory.java:254: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getColourOption(PreferencesSetting)
    //#PrefsComponentFactory.java:254: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getColourOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#input(JComponent getColourOption(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/ColourChooser.java.awt.Color.DARK_GRAY
    //#input(JComponent getColourOption(PreferencesSetting)): setting
    //#output(JComponent getColourOption(PreferencesSetting)): new ColourChooser(getColourOption#1) num objects
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.__Tag
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.command
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.editButton
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.listeners
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.previewPanel
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.showHex
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.showIRC
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.value
    //#output(JComponent getColourOption(PreferencesSetting)): return_value.window
    //#output(JComponent getColourOption(PreferencesSetting)): new EventListenerList(ColourChooser#1) num objects
    //#output(JComponent getColourOption(PreferencesSetting)): new EventListenerList(ColourChooser#1).__Lock
    //#output(JComponent getColourOption(PreferencesSetting)): new JButton(ColourChooser#2) num objects
    //#output(JComponent getColourOption(PreferencesSetting)): new JPanel(ColourChooser#5) num objects
    //#output(JComponent getColourOption(PreferencesSetting)): return_value
    //#new obj(JComponent getColourOption(PreferencesSetting)): new ColourChooser(getColourOption#1)
    //#new obj(JComponent getColourOption(PreferencesSetting)): new EventListenerList(ColourChooser#1)
    //#new obj(JComponent getColourOption(PreferencesSetting)): new JButton(ColourChooser#2)
    //#new obj(JComponent getColourOption(PreferencesSetting)): new JPanel(ColourChooser#5)
    //#pre[1] (JComponent getColourOption(PreferencesSetting)): setting != null
    //#post(JComponent getColourOption(PreferencesSetting)): return_value == &new ColourChooser(getColourOption#1)
    //#post(JComponent getColourOption(PreferencesSetting)): new ColourChooser(getColourOption#1) num objects == 1
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.showHex == 1
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.showIRC == 1
    //#post(JComponent getColourOption(PreferencesSetting)): new EventListenerList(ColourChooser#1) num objects == 1
    //#post(JComponent getColourOption(PreferencesSetting)): new JButton(ColourChooser#2) num objects == 1
    //#post(JComponent getColourOption(PreferencesSetting)): new JPanel(ColourChooser#5) num objects == 1
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.__Tag == com/dmdirc/addons/ui_swing/components/ColourChooser
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.command == &""
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.editButton == &new JButton(ColourChooser#2)
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.listeners == &new EventListenerList(ColourChooser#1)
    //#post(JComponent getColourOption(PreferencesSetting)): return_value.previewPanel == &new JPanel(ColourChooser#5)
    //#post(JComponent getColourOption(PreferencesSetting)): init'ed(return_value.value)
    //#post(JComponent getColourOption(PreferencesSetting)): init'ed(return_value.window)
    //#post(JComponent getColourOption(PreferencesSetting)): init'ed(new EventListenerList(ColourChooser#1).__Lock)
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.event.EventListenerList
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:isWindowsUI
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setLayout
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:add
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.event.EventListenerList:add
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(JComponent getColourOption(PreferencesSetting)): Effects-of-calling:java.lang.String:equals

        option.addActionListener(new ActionListener() {
    //#PrefsComponentFactory.java:256: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6.com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:256: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6.com.dmdirc.addons.ui_swing.PrefsComponentFactory$6(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void actionPerformed(final ActionEvent e) {
                setting.setValue(((ColourChooser) e.getSource()).getColour());
    //#PrefsComponentFactory.java:261: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6.actionPerformed(ActionEvent)
    //#PrefsComponentFactory.java:261: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$6
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/ColourChooser.__Descendant_Table[com/dmdirc/addons/ui_swing/components/ColourChooser]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/ColourChooser.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.val$setting
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): this.val$setting != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...).__Tag@261 == com/dmdirc/addons/ui_swing/components/ColourChooser
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@261 != null
            }
    //#PrefsComponentFactory.java:262: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$6.actionPerformed(ActionEvent)
        });

        return option;
    //#PrefsComponentFactory.java:265: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getColourOption(PreferencesSetting)
    }

    /**
     * Initialises and returns an OptionalColourChooser for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getOptionalColourOption(final PreferencesSetting setting) {
        final boolean state = setting.getValue() != null
    //#PrefsComponentFactory.java:275: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getOptionalColourOption(PreferencesSetting)
    //#PrefsComponentFactory.java:275: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getOptionalColourOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#input(JComponent getOptionalColourOption(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/OptionalColourChooser.java.awt.Color.DARK_GRAY
    //#input(JComponent getOptionalColourOption(PreferencesSetting)): setting
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): java.lang.String:substring(...)._tainted
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): new JButton(OptionalColourChooser#2) num objects
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7) num objects
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): new JPanel(OptionalColourChooser#5) num objects
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): new ListenerList(OptionalColourChooser#1) num objects
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1) num objects
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.__Tag
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.editButton
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.enabled
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.listeners
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.previewPanel
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.showHex
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.showIRC
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.value
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value.window
    //#output(JComponent getOptionalColourOption(PreferencesSetting)): return_value
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): java.lang.String:substring(...)
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): new JButton(OptionalColourChooser#2)
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7)
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): new JPanel(OptionalColourChooser#5)
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): new ListenerList(OptionalColourChooser#1)
    //#new obj(JComponent getOptionalColourOption(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1)
    //#pre[1] (JComponent getOptionalColourOption(PreferencesSetting)): setting != null
    //#presumption(JComponent getOptionalColourOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getValue(...)@275 != null
    //#presumption(JComponent getOptionalColourOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getValue(...)@277 != null
    //#presumption(JComponent getOptionalColourOption(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getValue(...)@277 != null
    //#presumption(JComponent getOptionalColourOption(PreferencesSetting)): java.lang.String:indexOf(...)@277 <= 4_294_967_294
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): java.lang.String:substring(...)._tainted == 0
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value == &new OptionalColourChooser(getOptionalColourOption#1)
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): new JButton(OptionalColourChooser#2) num objects == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): new JCheckBox(OptionalColourChooser#7) num objects == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): new JPanel(OptionalColourChooser#5) num objects == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): new ListenerList(OptionalColourChooser#1) num objects == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): new OptionalColourChooser(getOptionalColourOption#1) num objects == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.showHex == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.showIRC == 1
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.__Tag == com/dmdirc/addons/ui_swing/components/OptionalColourChooser
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.editButton == &new JButton(OptionalColourChooser#2)
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.enabled == &new JCheckBox(OptionalColourChooser#7)
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.listeners == &new ListenerList(OptionalColourChooser#1)
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.previewPanel == &new JPanel(OptionalColourChooser#5)
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.value == One-of{&"0", &java.lang.String:substring(...)}
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): return_value.value in Addr_Set{&java.lang.String:substring(...),&"0"}
    //#post(JComponent getOptionalColourOption(PreferencesSetting)): init'ed(return_value.window)
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:isWindowsUI
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setToolTipText
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:parseColour
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setPreferredSize
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.BorderFactory:createLineBorder
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:setPreferredSize
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:setSelected
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.JCheckBox:addActionListener
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setLayout
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:add
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.util.ListenerList:add
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(JComponent getOptionalColourOption(PreferencesSetting)): Effects-of-calling:java.lang.String:equals
                && !setting.getValue().startsWith("false:");
        final String colour = setting.getValue() == null ? "0" : setting.getValue().
    //#PrefsComponentFactory.java:277: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getOptionalColourOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
                substring(1 + setting.getValue().indexOf(':'));

        final OptionalColourChooser option = new OptionalColourChooser(colour, state, true, true);

        option.addActionListener(new ActionListener() {
    //#PrefsComponentFactory.java:282: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7.com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:282: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7.com.dmdirc.addons.ui_swing.PrefsComponentFactory$7(PreferencesSetting)
            
            /** {@inheritDoc} */
            @Override
            public void actionPerformed(final ActionEvent e) {
                setting.setValue(
    //#PrefsComponentFactory.java:287: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7.actionPerformed(ActionEvent)
    //#PrefsComponentFactory.java:287: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$7
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#input(void actionPerformed(ActionEvent)): ":"._tainted
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/OptionalColourChooser.__Descendant_Table[com/dmdirc/addons/ui_swing/components/OptionalColourChooser]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/OptionalColourChooser.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.val$setting
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): this.val$setting != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...).__Tag@287 == com/dmdirc/addons/ui_swing/components/OptionalColourChooser
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...).__Tag@287 == com/dmdirc/addons/ui_swing/components/OptionalColourChooser
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...).enabled@287 != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@287 != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@287 != null
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JCheckBox:isSelected
                        ((OptionalColourChooser) e.getSource()).isEnabled() + ":"
                        + ((OptionalColourChooser) e.getSource()).getColour());
            }
    //#PrefsComponentFactory.java:290: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$7.actionPerformed(ActionEvent)
        });

        return option;
    //#PrefsComponentFactory.java:293: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getOptionalColourOption(PreferencesSetting)
    }
    
    /**
     * Initialises and returns an Font Chooser for the specified setting.
     *
     * @param setting The setting to create the component for
     * @return A JComponent descendent for the specified setting
     */
    private static JComponent getFontOption(final PreferencesSetting setting) {
        final String value = setting.getValue();
    //#PrefsComponentFactory.java:303: method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getFontOption(PreferencesSetting)
    //#PrefsComponentFactory.java:303: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getFontOption(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getValue()
    //#input(JComponent getFontOption(PreferencesSetting)): setting
    //#output(JComponent getFontOption(PreferencesSetting)): new FontPicker(getFontOption#1) num objects
    //#output(JComponent getFontOption(PreferencesSetting)): return_value.__Tag
    //#output(JComponent getFontOption(PreferencesSetting)): return_value
    //#new obj(JComponent getFontOption(PreferencesSetting)): new FontPicker(getFontOption#1)
    //#pre[1] (JComponent getFontOption(PreferencesSetting)): setting != null
    //#post(JComponent getFontOption(PreferencesSetting)): return_value == &new FontPicker(getFontOption#1)
    //#post(JComponent getFontOption(PreferencesSetting)): new FontPicker(getFontOption#1) num objects == 1
    //#post(JComponent getFontOption(PreferencesSetting)): return_value.__Tag == com/dmdirc/addons/ui_swing/components/FontPicker
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:javax.swing.DefaultComboBoxModel
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:javax.swing.JComboBox
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:java.awt.GraphicsEnvironment:getLocalGraphicsEnvironment
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:java.awt.GraphicsEnvironment:getAvailableFontFamilyNames
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:getFont
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:getModel
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:java.awt.Font
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:javax.swing.DefaultComboBoxModel:addElement
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.FontListCellRenderer
    //#unanalyzed(JComponent getFontOption(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.FontPicker:setRenderer
        
        final FontPicker option = new FontPicker(value);
        
        option.addActionListener(new ActionListener() {
    //#PrefsComponentFactory.java:307: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8.com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)): this
    //#output(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)): this.val$setting
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)): this.val$setting == Param_1
    //#post(void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)): init'ed(this.val$setting)
    //#PrefsComponentFactory.java:307: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8.com.dmdirc.addons.ui_swing.PrefsComponentFactory$8(PreferencesSetting)
    //#PrefsComponentFactory.java:307: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.FontPicker:addActionListener(ActionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#    method: JComponent getFontOption(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.FontPicker:addActionListener(ActionListener)

            /** {@inheritDoc} */
            @Override
            public void actionPerformed(final ActionEvent e) {
                Object value = ((FontPicker) e.getSource()).getSelectedItem();
    //#PrefsComponentFactory.java:312: method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8.actionPerformed(ActionEvent)
    //#PrefsComponentFactory.java:312: Warning: method not available - call not analyzed
    //#    call on Object com.dmdirc.addons.ui_swing.components.FontPicker:getSelectedItem()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$8
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: Object com.dmdirc.addons.ui_swing.components.FontPicker:getSelectedItem()
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/FontPicker.__Descendant_Table[com/dmdirc/addons/ui_swing/components/FontPicker]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/FontPicker.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.val$setting
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): this.val$setting != null
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...).__Tag@312 == com/dmdirc/addons/ui_swing/components/FontPicker
    //#presumption(void actionPerformed(ActionEvent)): java.awt.event.ActionEvent:getSource(...)@312 != null
                if (value instanceof Font) {
                    setting.setValue(((Font) value).getFamily());
    //#PrefsComponentFactory.java:314: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$8
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
                } else {
                    setting.setValue(null);
    //#PrefsComponentFactory.java:316: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$8
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.config.prefs.PreferencesSetting:setValue(String)
                }
            }
    //#PrefsComponentFactory.java:318: end of method: void com.dmdirc.addons.ui_swing.PrefsComponentFactory$8.actionPerformed(ActionEvent)
        });        
        
        return option;
    //#PrefsComponentFactory.java:321: end of method: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory.getFontOption(PreferencesSetting)
    }

}
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$9
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$8]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$8__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$8__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$8] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$8__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$8.com.dmdirc.addons.ui_swing.PrefsComponentFactory$8__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$8
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$7]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$7__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$7__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$7] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$7__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$7.com.dmdirc.addons.ui_swing.PrefsComponentFactory$7__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$7
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$6]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$6__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$6__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$6] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$6__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$6.com.dmdirc.addons.ui_swing.PrefsComponentFactory$6__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$6
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$4]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$4__static_init): __Dispatch_Table.stateChanged(Ljavax/swing/event/ChangeEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$4__static_init): __Dispatch_Table.stateChanged(Ljavax/swing/event/ChangeEvent;)V == &stateChanged
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$4.com.dmdirc.addons.ui_swing.PrefsComponentFactory$4__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$4
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$3]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$3__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$3__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$3.com.dmdirc.addons.ui_swing.PrefsComponentFactory$3__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$3
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$2]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$2__static_init): __Dispatch_Table.stateChanged(Ljavax/swing/event/ChangeEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$2__static_init): __Dispatch_Table.stateChanged(Ljavax/swing/event/ChangeEvent;)V == &stateChanged
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$2.com.dmdirc.addons.ui_swing.PrefsComponentFactory$2__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$2
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$1]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$1__static_init): __Dispatch_Table.keyReleased(Ljava/awt/event/KeyEvent;)V
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$1__static_init): __Dispatch_Table.keyReleased(Ljava/awt/event/KeyEvent;)V == &keyReleased
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$1.com.dmdirc.addons.ui_swing.PrefsComponentFactory$1__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$1
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory]
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory] == &__Dispatch_Table
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory.com.dmdirc.addons.ui_swing.PrefsComponentFactory__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5]
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): __Dispatch_Table.durationUpdated(I)V
    //#output(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5]
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init): __Dispatch_Table.durationUpdated(I)V == &durationUpdated
    //#PrefsComponentFactory.java:: end of method: com.dmdirc.addons.ui_swing.PrefsComponentFactory$5.com.dmdirc.addons.ui_swing.PrefsComponentFactory$5__static_init
    //#PrefsComponentFactory.java:: end of class: com.dmdirc.addons.ui_swing.PrefsComponentFactory$5
