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

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

import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
import com.dmdirc.addons.ui_swing.components.ColourChooser;
import com.dmdirc.addons.ui_swing.components.OptionalColourChooser;
import com.dmdirc.addons.ui_swing.components.text.TextLabel;
import com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay;
import com.dmdirc.config.prefs.PreferencesCategory;
import com.dmdirc.config.prefs.PreferencesSetting;

import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import java.util.concurrent.ExecutionException;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SwingWorker;

import net.miginfocom.layout.PlatformDefaults;
import net.miginfocom.swing.MigLayout;

/**
 * Loads a preferences panel for a specified preferences category in the
 * background.
 */
public class PrefsCategoryLoader extends SwingWorker<JPanel, Object> {
    //#PrefsCategoryLoader.java:49: method: Object com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.doInBackground()
    //#input(Object doInBackground()): "-"._tainted
    //#input(Object doInBackground()): "-2*"._tainted
    //#input(Object doInBackground()): ": "._tainted
    //#input(Object doInBackground()): "; "._tainted
    //#input(Object doInBackground()): "body { font-family: "._tainted
    //#input(Object doInBackground()): "fillx, gap unrel, wrap 2, hidemode 3, pack, wmax 470-"._tainted
    //#input(Object doInBackground()): "fillx, gap unrel, wrap 2, hidemode 3, wmax 470-"._tainted
    //#input(Object doInBackground()): "font-size: "._tainted
    //#input(Object doInBackground()): "pt; }"._tainted
    //#input(Object doInBackground()): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader]
    //#input(Object doInBackground()): __Descendant_Table[others]
    //#input(Object doInBackground()): __Dispatch_Table.doInBackground()Ljavax/swing/JPanel;
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(Object doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(Object doInBackground()): this
    //#input(Object doInBackground()): this.__Tag
    //#input(Object doInBackground()): this.category
    //#input(Object doInBackground()): this.categoryPanel
    //#input(Object doInBackground()): this.categoryPanel.__Tag
    //#input(Object doInBackground()): this.categoryPanel.parent
    //#input(Object doInBackground()): this.categoryPanel.tooltip
    //#input(Object doInBackground()): this.leftPadding
    //#input(Object doInBackground()): this.padding
    //#input(Object doInBackground()): this.rightPadding
    //#output(Object doInBackground()): new JPanel(addCategory#1) num objects
    //#output(Object doInBackground()): return_value
    //#new obj(Object doInBackground()): new JPanel(addCategory#1)
    //#pre[2] (Object doInBackground()): this.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader
    //#pre[3] (Object doInBackground()): this.category != null
    //#pre[4] (Object doInBackground()): (soft) this.categoryPanel != null
    //#pre[5] (Object doInBackground()): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[6] (Object doInBackground()): (soft) init'ed(this.categoryPanel.parent)
    //#pre[7] (Object doInBackground()): (soft) this.categoryPanel.tooltip != null
    //#post(Object doInBackground()): return_value == &new JPanel(addCategory#1)
    //#post(Object doInBackground()): new JPanel(addCategory#1) num objects == 1
    //#unanalyzed(Object doInBackground()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JComponent:setToolTipText
    //#unanalyzed(Object doInBackground()): Effects-of-calling:getToolTipPanel
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof
    //#unanalyzed(Object doInBackground()): Effects-of-calling:getParentWindow
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getTitle
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(Object doInBackground()): Effects-of-calling:initCategory
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getDescription
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSubcats
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Object doInBackground()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInline
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore
    //#unanalyzed(Object doInBackground()): Effects-of-calling:addCategory
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:hasObject
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getObject
    //#unanalyzed(Object doInBackground()): Effects-of-calling:javax.swing.JPanel:instanceof
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSettings
    //#unanalyzed(Object doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getPath
    //#PrefsCategoryLoader.java:49: end of method: Object com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.doInBackground()

    /** Panel gap. */
    private final int padding = (int) PlatformDefaults.getUnitValueX("related").
    //#PrefsCategoryLoader.java:52: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getUnitValueX(String)
    //#PrefsCategoryLoader.java:52: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
            getValue();
    /** Panel left padding. */
    private final int leftPadding = (int) PlatformDefaults.getPanelInsets(1).
    //#PrefsCategoryLoader.java:55: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#PrefsCategoryLoader.java:55: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
            getValue();
    /** Panel right padding. */
    private final int rightPadding = (int) PlatformDefaults.getPanelInsets(3).
    //#PrefsCategoryLoader.java:58: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#PrefsCategoryLoader.java:58: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
            getValue();
    /** Error panel. */
    private JPanel errorCategory;
    private CategoryPanel categoryPanel;
    private PreferencesCategory category;

    /**
     * Instantiates a new preferences category loader.
     *
     * @param categoryPanel Parent Category panel
     * @param category Preferences Category to load
     */
    public PrefsCategoryLoader(final CategoryPanel categoryPanel,
            final PreferencesCategory category) {
    //#PrefsCategoryLoader.java:72: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): "; "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): "body { font-family: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): "font-size: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): "pt; }"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): category
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): categoryPanel
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): new JPanel(PrefsCategoryLoader#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.category
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.categoryPanel
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.errorCategory
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.leftPadding
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.padding
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.rightPadding
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): new JPanel(PrefsCategoryLoader#1)
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): (int) (net.miginfocom.layout.UnitValue:getValue(...)@52) in {-2_147_483_648..4_294_967_295}
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): (int) (net.miginfocom.layout.UnitValue:getValue(...)@55) in {-2_147_483_648..4_294_967_295}
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): (int) (net.miginfocom.layout.UnitValue:getValue(...)@58) in {-2_147_483_648..4_294_967_295}
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): net.miginfocom.layout.PlatformDefaults:getPanelInsets(...)@55 != null
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): net.miginfocom.layout.PlatformDefaults:getPanelInsets(...)@58 != null
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): net.miginfocom.layout.PlatformDefaults:getUnitValueX(...)@52 != null
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.category == category
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): init'ed(this.category)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.categoryPanel == categoryPanel
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): init'ed(this.categoryPanel)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): this.errorCategory == &new JPanel(PrefsCategoryLoader#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): init'ed(this.leftPadding)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): init'ed(this.padding)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): init'ed(this.rightPadding)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): new JPanel(PrefsCategoryLoader#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
        this.categoryPanel = categoryPanel;
        this.category = category;
        
        errorCategory = new JPanel(new MigLayout("fillx"));
    //#PrefsCategoryLoader.java:76: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
        errorCategory.add(new TextLabel("There was an error loading this category."));
    }
    //#PrefsCategoryLoader.java:78: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader(CategoryPanel, PreferencesCategory)

    /**
     * {@inheritDoc}
     *
     * @throws Exception if unable to compute a result
     */
    @Override
    protected JPanel doInBackground() throws Exception {
        return addCategory(category);
    //#PrefsCategoryLoader.java:87: method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.doInBackground()
    //#input(JPanel doInBackground()): "-"._tainted
    //#input(JPanel doInBackground()): "-2*"._tainted
    //#input(JPanel doInBackground()): ": "._tainted
    //#input(JPanel doInBackground()): "; "._tainted
    //#input(JPanel doInBackground()): "body { font-family: "._tainted
    //#input(JPanel doInBackground()): "fillx, gap unrel, wrap 2, hidemode 3, pack, wmax 470-"._tainted
    //#input(JPanel doInBackground()): "fillx, gap unrel, wrap 2, hidemode 3, wmax 470-"._tainted
    //#input(JPanel doInBackground()): "font-size: "._tainted
    //#input(JPanel doInBackground()): "pt; }"._tainted
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(JPanel doInBackground()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(JPanel doInBackground()): this
    //#input(JPanel doInBackground()): this.category
    //#input(JPanel doInBackground()): this.categoryPanel
    //#input(JPanel doInBackground()): this.categoryPanel.__Tag
    //#input(JPanel doInBackground()): this.categoryPanel.parent
    //#input(JPanel doInBackground()): this.categoryPanel.tooltip
    //#input(JPanel doInBackground()): this.leftPadding
    //#input(JPanel doInBackground()): this.padding
    //#input(JPanel doInBackground()): this.rightPadding
    //#output(JPanel doInBackground()): new JPanel(addCategory#1) num objects
    //#output(JPanel doInBackground()): return_value
    //#new obj(JPanel doInBackground()): new JPanel(addCategory#1)
    //#pre[2] (JPanel doInBackground()): this.category != null
    //#pre[3] (JPanel doInBackground()): (soft) this.categoryPanel != null
    //#pre[4] (JPanel doInBackground()): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[5] (JPanel doInBackground()): (soft) init'ed(this.categoryPanel.parent)
    //#pre[6] (JPanel doInBackground()): (soft) this.categoryPanel.tooltip != null
    //#post(JPanel doInBackground()): return_value == &new JPanel(addCategory#1)
    //#post(JPanel doInBackground()): new JPanel(addCategory#1) num objects == 1
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JComponent:setToolTipText
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:getToolTipPanel
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:getParentWindow
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getTitle
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:initCategory
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getDescription
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSubcats
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInline
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:addCategory
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:hasObject
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getObject
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:javax.swing.JPanel:instanceof
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSettings
    //#unanalyzed(JPanel doInBackground()): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getPath
    //#PrefsCategoryLoader.java:87: end of method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.doInBackground()
    }

    /** {@inheritDoc} */
    @Override
    protected void done() {
        if (isCancelled()) {
    //#PrefsCategoryLoader.java:93: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.done()
    //#PrefsCategoryLoader.java:93: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader:isCancelled()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void done()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader:isCancelled()
    //#input(void done()): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader]
    //#input(void done()): __Descendant_Table[others]
    //#input(void done()): __Dispatch_Table.getPanel()Ljavax/swing/JPanel;
    //#input(void done()): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void done()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(void done()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(void done()): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.categoryLoaded(Lcom/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader;Lcom/dmdirc/config/prefs/PreferencesCategory;)V
    //#input(void done()): this
    //#input(void done()): this.__Tag
    //#input(void done()): this.category
    //#input(void done()): this.categoryPanel
    //#input(void done()): this.categoryPanel.__Tag
    //#input(void done()): this.categoryPanel.category
    //#input(void done()): this.categoryPanel.panels
    //#input(void done()): this.errorCategory
    //#pre[2] (void done()): (soft) this.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader
    //#pre[3] (void done()): (soft) init'ed(this.category)
    //#pre[4] (void done()): (soft) this.categoryPanel != null
    //#pre[5] (void done()): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[6] (void done()): (soft) init'ed(this.categoryPanel.category)
    //#pre[7] (void done()): (soft) this.categoryPanel.panels != null
    //#pre[8] (void done()): (soft) init'ed(this.errorCategory)
    //#unanalyzed(void done()): Effects-of-calling:javax.swing.SwingWorker:get
    //#unanalyzed(void done()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void done()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void done()): Effects-of-calling:com.dmdirc.addons.ui_swing.UIUtilities:invokeAndWait
    //#unanalyzed(void done()): Effects-of-calling:java.util.Map:put
    //#test_vector(void done()): com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader:isCancelled(...)@93: {0}, {1}
            return;
        }
        categoryPanel.categoryLoaded(this, category);
    }
    //#PrefsCategoryLoader.java:97: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.done()

    /**
     * Returns the panel for this loader.
     *
     * @return Loaded panel
     */
    public JPanel getPanel() {
        JPanel panel;
        try {
            panel = super.get();
    //#PrefsCategoryLoader.java:107: method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.getPanel()
    //#input(JPanel getPanel()): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(JPanel getPanel()): this
    //#input(JPanel getPanel()): this.errorCategory
    //#output(JPanel getPanel()): return_value
    //#pre[2] (JPanel getPanel()): (soft) init'ed(this.errorCategory)
    //#presumption(JPanel getPanel()): init'ed(com.dmdirc.logger.ErrorLevel.MEDIUM)
    //#post(JPanel getPanel()): init'ed(return_value)
        } catch (InterruptedException ex) {
            panel = errorCategory;
        } catch (ExecutionException ex) {
            Logger.appError(ErrorLevel.MEDIUM, "Error loading prefs panel", ex);
    //#PrefsCategoryLoader.java:111: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: JPanel getPanel()
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:appError(ErrorLevel, String, Throwable)
            panel = errorCategory;
        }
        return panel;
    //#PrefsCategoryLoader.java:114: end of method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.getPanel()
    }

    /**
     * Initialises the specified category.
     *
     * @since 0.6.3m1
     * @param category The category that is being initialised
     * @param panel The panel to which we're adding its contents
     * @param path The textual path of this category
     */
    private void initCategory(final PreferencesCategory category,
            final JPanel panel, final String path) {

        if (!category.getDescription().isEmpty()) {
    //#PrefsCategoryLoader.java:128: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.initCategory(PreferencesCategory, JPanel, String)
    //#PrefsCategoryLoader.java:128: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesCategory:getDescription()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesCategory:getDescription()
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "-"._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "-2*"._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): ": "._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "; "._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "body { font-family: "._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "fillx, gap unrel, wrap 2, hidemode 3, pack, wmax 470-"._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "fillx, gap unrel, wrap 2, hidemode 3, wmax 470-"._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "font-size: "._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): "pt; }"._tainted
    //#input(void initCategory(PreferencesCategory, JPanel, String)): category
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(void initCategory(PreferencesCategory, JPanel, String)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(void initCategory(PreferencesCategory, JPanel, String)): panel
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.categoryPanel
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.categoryPanel.__Tag
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.categoryPanel.parent
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.categoryPanel.tooltip
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.leftPadding
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.padding
    //#input(void initCategory(PreferencesCategory, JPanel, String)): this.rightPadding
    //#pre[1] (void initCategory(PreferencesCategory, JPanel, String)): category != null
    //#pre[2] (void initCategory(PreferencesCategory, JPanel, String)): (soft) panel != null
    //#pre[4] (void initCategory(PreferencesCategory, JPanel, String)): (soft) this.categoryPanel != null
    //#pre[5] (void initCategory(PreferencesCategory, JPanel, String)): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[6] (void initCategory(PreferencesCategory, JPanel, String)): (soft) init'ed(this.categoryPanel.parent)
    //#pre[7] (void initCategory(PreferencesCategory, JPanel, String)): (soft) this.categoryPanel.tooltip != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:getDescription(...)@128 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:getSettings(...)@153 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:getSubcats(...)@133 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:getSubcats(...)@158 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:next(...)@133 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:next(...)@153 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:next(...)@158 != null
    //#presumption(void initCategory(PreferencesCategory, JPanel, String)): javax.swing.JPanel:instanceof(...)@142 == 1
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JComponent:setToolTipText
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:getToolTipPanel
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:getParentWindow
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getTitle
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:initCategory
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getDescription
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSubcats
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInline
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:addCategory
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:hasObject
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getObject
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:javax.swing.JPanel:instanceof
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSettings
    //#unanalyzed(void initCategory(PreferencesCategory, JPanel, String)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getPath
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:hasObject(...)@141: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:isInline(...)@134: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:isInline(...)@136: {1}, {0}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:isInline(...)@159: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore(...)@134: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore(...)@157: {1}, {0}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): java.lang.String:isEmpty(...)@128: {1}, {0}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:hasNext(...)@133: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:hasNext(...)@153: {0}, {1}
    //#test_vector(void initCategory(PreferencesCategory, JPanel, String)): java.util.Iterator:hasNext(...)@158: {0}, {1}
            panel.add(new TextLabel(category.getDescription()), "span, " +
    //#PrefsCategoryLoader.java:129: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesCategory:getDescription()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesCategory:getDescription()
                    "growx, pushx, wrap 2*unrel");
        }

        for (PreferencesCategory child : category.getSubcats()) {
    //#PrefsCategoryLoader.java:133: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.config.prefs.PreferencesCategory:getSubcats()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: List com.dmdirc.config.prefs.PreferencesCategory:getSubcats()
            if (child.isInline() && category.isInlineBefore()) {
    //#PrefsCategoryLoader.java:134: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
    //#PrefsCategoryLoader.java:134: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore()
                addInlineCategory(child, panel);
            } else if (!child.isInline()) {
    //#PrefsCategoryLoader.java:136: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
                addCategory(child);
            }
        }

        if (category.hasObject()) {
    //#PrefsCategoryLoader.java:141: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:hasObject()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:hasObject()
            if (!(category.getObject() instanceof JPanel)) {
    //#PrefsCategoryLoader.java:142: Warning: method not available - call not analyzed
    //#    call on PreferencesInterface com.dmdirc.config.prefs.PreferencesCategory:getObject()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: PreferencesInterface com.dmdirc.config.prefs.PreferencesCategory:getObject()
    //#PrefsCategoryLoader.java:142: ?IllegalArgumentException check
    //#    __instance_of_JPanel == 1
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    basic block: bb_23
    //#    assertion: __instance_of_JPanel == 1
    //#    VN: __instance_of_JPanel
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp  Uncertain
                throw new IllegalArgumentException(
                        "Custom preferences objects" +
                        " for this UI must extend JPanel.");
            }

            panel.add((JPanel) category.getObject(), "growx, pushx");
    //#PrefsCategoryLoader.java:148: Warning: method not available - call not analyzed
    //#    call on PreferencesInterface com.dmdirc.config.prefs.PreferencesCategory:getObject()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: PreferencesInterface com.dmdirc.config.prefs.PreferencesCategory:getObject()

            return;
        }

        for (PreferencesSetting setting : category.getSettings()) {
    //#PrefsCategoryLoader.java:153: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.config.prefs.PreferencesCategory:getSettings()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: List com.dmdirc.config.prefs.PreferencesCategory:getSettings()
            addComponent(category, setting, panel);
        }

        if (!category.isInlineBefore()) {
    //#PrefsCategoryLoader.java:157: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore()
            for (PreferencesCategory child : category.getSubcats()) {
    //#PrefsCategoryLoader.java:158: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.config.prefs.PreferencesCategory:getSubcats()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: List com.dmdirc.config.prefs.PreferencesCategory:getSubcats()
                if (child.isInline()) {
    //#PrefsCategoryLoader.java:159: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void initCategory(PreferencesCategory, JPanel, String)
    //#    unanalyzed callee: bool com.dmdirc.config.prefs.PreferencesCategory:isInline()
                    addInlineCategory(child, panel);
                }
            }
        }
    }
    //#PrefsCategoryLoader.java:164: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.initCategory(PreferencesCategory, JPanel, String)

    /**panel.
     * Initialises and adds a component to a panel.
     *
     * @param category The category the setting is being added to
     * @param setting The setting to be used
     * @param panel The panel to add the component to
     */
    private void addComponent(final PreferencesCategory category,
            final PreferencesSetting setting,
            final JPanel panel) {

        final TextLabel label = getLabel(setting);
    //#PrefsCategoryLoader.java:177: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): ": "._tainted
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): "; "._tainted
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): "body { font-family: "._tainted
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): "font-size: "._tainted
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): "pt; }"._tainted
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): panel
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): setting
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel.__Tag
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel.parent
    //#input(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel.tooltip
    //#pre[1] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): panel != null
    //#pre[2] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): setting != null
    //#pre[4] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel != null
    //#pre[5] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[7] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): this.categoryPanel.tooltip != null
    //#pre[6] (void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): (soft) init'ed(this.categoryPanel.parent)
    //#presumption(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent(...)@179 != null
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#test_vector(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof(...)@187: {0}, {1}
    //#test_vector(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof(...)@189: {0}, {1}
    //#test_vector(void addComponent(PreferencesCategory, PreferencesSetting, JPanel)): com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof(...)@185: {0}, {1}

        JComponent option = PrefsComponentFactory.getComponent(setting);
    //#PrefsCategoryLoader.java:179: Warning: method not available - call not analyzed
    //#    call on JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent(PreferencesSetting)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: JComponent com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent(PreferencesSetting)
        option.setToolTipText(null);
        categoryPanel.getToolTipPanel().registerTooltipHandler(label);
    //#PrefsCategoryLoader.java:181: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler(JComponent)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler(JComponent)
        categoryPanel.getToolTipPanel().registerTooltipHandler(option,
    //#PrefsCategoryLoader.java:182: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
    //#PrefsCategoryLoader.java:182: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler(JComponent, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler(JComponent, String)
                setting.getHelptext());

        if (option instanceof DurationDisplay) {
            ((DurationDisplay) option).setWindow(categoryPanel.getParentWindow());
    //#PrefsCategoryLoader.java:186: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow(Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow(Window)
        } else if (option instanceof ColourChooser) {
            ((ColourChooser) option).setWindow(categoryPanel.getParentWindow());
    //#PrefsCategoryLoader.java:188: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow(Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow(Window)
        } else if (option instanceof OptionalColourChooser) {
            ((OptionalColourChooser) option).setWindow(categoryPanel.
    //#PrefsCategoryLoader.java:190: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow(Window)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addComponent(PreferencesCategory, PreferencesSetting, JPanel)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow(Window)
                    getParentWindow());
        }

        panel.add(label, "align label, wmax 40%");
        panel.add(option, "growx, pushx, w 60%");
    }
    //#PrefsCategoryLoader.java:196: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addComponent(PreferencesCategory, PreferencesSetting, JPanel)

    /**
     * Retrieves the title label for the specified setting.
     *
     * @param setting The setting whose label is being requested
     * @return A TextLabel with the appropriate text and tooltip
     */
    private TextLabel getLabel(final PreferencesSetting setting) {
        final TextLabel label = new TextLabel(setting.getTitle() + ": ", false);
    //#PrefsCategoryLoader.java:205: method: TextLabel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.getLabel(PreferencesSetting)
    //#PrefsCategoryLoader.java:205: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: TextLabel getLabel(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getTitle()
    //#input(TextLabel getLabel(PreferencesSetting)): ": "._tainted
    //#input(TextLabel getLabel(PreferencesSetting)): "; "._tainted
    //#input(TextLabel getLabel(PreferencesSetting)): "body { font-family: "._tainted
    //#input(TextLabel getLabel(PreferencesSetting)): "font-size: "._tainted
    //#input(TextLabel getLabel(PreferencesSetting)): "pt; }"._tainted
    //#input(TextLabel getLabel(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(TextLabel getLabel(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(TextLabel getLabel(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(TextLabel getLabel(PreferencesSetting)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(TextLabel getLabel(PreferencesSetting)): setting
    //#output(TextLabel getLabel(PreferencesSetting)): new SimpleAttributeSet(TextLabel#6) num objects
    //#output(TextLabel getLabel(PreferencesSetting)): new TextLabel(getLabel#1) num objects
    //#output(TextLabel getLabel(PreferencesSetting)): return_value.__Tag
    //#output(TextLabel getLabel(PreferencesSetting)): return_value.sas
    //#output(TextLabel getLabel(PreferencesSetting)): return_value
    //#new obj(TextLabel getLabel(PreferencesSetting)): new SimpleAttributeSet(TextLabel#6)
    //#new obj(TextLabel getLabel(PreferencesSetting)): new TextLabel(getLabel#1)
    //#pre[1] (TextLabel getLabel(PreferencesSetting)): setting != null
    //#presumption(TextLabel getLabel(PreferencesSetting)): com.dmdirc.config.prefs.PreferencesSetting:getHelptext(...)@207 != null
    //#post(TextLabel getLabel(PreferencesSetting)): return_value == &new TextLabel(getLabel#1)
    //#post(TextLabel getLabel(PreferencesSetting)): new SimpleAttributeSet(TextLabel#6) num objects == 1
    //#post(TextLabel getLabel(PreferencesSetting)): new TextLabel(getLabel#1) num objects == 1
    //#post(TextLabel getLabel(PreferencesSetting)): return_value.__Tag == com/dmdirc/addons/ui_swing/components/text/TextLabel
    //#post(TextLabel getLabel(PreferencesSetting)): return_value.sas == &new SimpleAttributeSet(TextLabel#6)
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(TextLabel getLabel(PreferencesSetting)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#test_vector(TextLabel getLabel(PreferencesSetting)): java.lang.String:isEmpty(...)@207: {0}, {1}

        if (setting.getHelptext().isEmpty()) {
    //#PrefsCategoryLoader.java:207: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: TextLabel getLabel(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
            label.setToolTipText("No help available.");
    //#PrefsCategoryLoader.java:208: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: TextLabel getLabel(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText(String)
        } else {
            label.setToolTipText(setting.getHelptext());
    //#PrefsCategoryLoader.java:210: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: TextLabel getLabel(PreferencesSetting)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesSetting:getHelptext()
    //#PrefsCategoryLoader.java:210: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: TextLabel getLabel(PreferencesSetting)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText(String)
        }

        return label;
    //#PrefsCategoryLoader.java:213: end of method: TextLabel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.getLabel(PreferencesSetting)
    }

    /**
     * Adds a new inline category.
     *
     * @param category The category to be added
     * @param parent The panel to add the category to
     */
    private void addInlineCategory(final PreferencesCategory category,
            final JPanel parent) {
        final JPanel panel =
    //#PrefsCategoryLoader.java:224: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addInlineCategory(PreferencesCategory, JPanel)
    //#PrefsCategoryLoader.java:224: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addInlineCategory(PreferencesCategory, JPanel)
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "-"._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "-2*"._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): ": "._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "; "._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "body { font-family: "._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "fillx, gap unrel, wrap 2, hidemode 3, pack, wmax 470-"._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "fillx, gap unrel, wrap 2, hidemode 3, wmax 470-"._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "font-size: "._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): "pt; }"._tainted
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): category
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): parent
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.categoryPanel
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.categoryPanel.__Tag
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.categoryPanel.parent
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.categoryPanel.tooltip
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.leftPadding
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.padding
    //#input(void addInlineCategory(PreferencesCategory, JPanel)): this.rightPadding
    //#pre[1] (void addInlineCategory(PreferencesCategory, JPanel)): category != null
    //#pre[2] (void addInlineCategory(PreferencesCategory, JPanel)): parent != null
    //#pre[4] (void addInlineCategory(PreferencesCategory, JPanel)): (soft) this.categoryPanel != null
    //#pre[5] (void addInlineCategory(PreferencesCategory, JPanel)): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[6] (void addInlineCategory(PreferencesCategory, JPanel)): (soft) init'ed(this.categoryPanel.parent)
    //#pre[7] (void addInlineCategory(PreferencesCategory, JPanel)): (soft) this.categoryPanel.tooltip != null
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JComponent:setToolTipText
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:getToolTipPanel
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:getParentWindow
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getTitle
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:initCategory
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getDescription
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSubcats
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInline
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:addCategory
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:hasObject
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getObject
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:javax.swing.JPanel:instanceof
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSettings
    //#unanalyzed(void addInlineCategory(PreferencesCategory, JPanel)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getPath
                new JPanel(new MigLayout("fillx, gap unrel, wrap 2, hidemode 3, pack, " +
                "wmax 470-" + leftPadding + "-" +
                rightPadding + "-2*" + padding));
        panel.setBorder(BorderFactory.createTitledBorder(category.getTitle()));
    //#PrefsCategoryLoader.java:228: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesCategory:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: void addInlineCategory(PreferencesCategory, JPanel)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesCategory:getTitle()

        parent.add(panel, "span, growx, pushx, wrap");

        initCategory(category, panel, "");
    }
    //#PrefsCategoryLoader.java:233: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addInlineCategory(PreferencesCategory, JPanel)

    /**
     * Adds the specified category to the preferences dialog.
     *
     * @since 0.6.3m1
     * @param category The category to be added
     * @param namePrefix Category name prefix
     */
    private JPanel addCategory(final PreferencesCategory category) {
        final JPanel panel =
    //#PrefsCategoryLoader.java:243: method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addCategory(PreferencesCategory)
    //#PrefsCategoryLoader.java:243: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: JPanel addCategory(PreferencesCategory)
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#input(JPanel addCategory(PreferencesCategory)): "-"._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "-2*"._tainted
    //#input(JPanel addCategory(PreferencesCategory)): ": "._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "; "._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "body { font-family: "._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "fillx, gap unrel, wrap 2, hidemode 3, pack, wmax 470-"._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "fillx, gap unrel, wrap 2, hidemode 3, wmax 470-"._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "font-size: "._tainted
    //#input(JPanel addCategory(PreferencesCategory)): "pt; }"._tainted
    //#input(JPanel addCategory(PreferencesCategory)): category
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/text/TextLabel]
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Descendant_Table[others]
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.getDocument()Ljavax/swing/text/StyledDocument;
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/components/text/TextLabel.__Dispatch_Table.setText(Ljava/lang/String;)V
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel]
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Descendant_Table[others]
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getParentWindow()Ljava/awt/Window;
    //#input(JPanel addCategory(PreferencesCategory)): com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel.__Dispatch_Table.getToolTipPanel()Lcom/dmdirc/addons/ui_swing/components/ToolTipPanel;
    //#input(JPanel addCategory(PreferencesCategory)): this
    //#input(JPanel addCategory(PreferencesCategory)): this.categoryPanel
    //#input(JPanel addCategory(PreferencesCategory)): this.categoryPanel.__Tag
    //#input(JPanel addCategory(PreferencesCategory)): this.categoryPanel.parent
    //#input(JPanel addCategory(PreferencesCategory)): this.categoryPanel.tooltip
    //#input(JPanel addCategory(PreferencesCategory)): this.leftPadding
    //#input(JPanel addCategory(PreferencesCategory)): this.padding
    //#input(JPanel addCategory(PreferencesCategory)): this.rightPadding
    //#output(JPanel addCategory(PreferencesCategory)): new JPanel(addCategory#1) num objects
    //#output(JPanel addCategory(PreferencesCategory)): return_value
    //#new obj(JPanel addCategory(PreferencesCategory)): new JPanel(addCategory#1)
    //#pre[1] (JPanel addCategory(PreferencesCategory)): category != null
    //#pre[3] (JPanel addCategory(PreferencesCategory)): (soft) this.categoryPanel != null
    //#pre[4] (JPanel addCategory(PreferencesCategory)): (soft) this.categoryPanel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/CategoryPanel
    //#pre[5] (JPanel addCategory(PreferencesCategory)): (soft) init'ed(this.categoryPanel.parent)
    //#pre[6] (JPanel addCategory(PreferencesCategory)): (soft) this.categoryPanel.tooltip != null
    //#post(JPanel addCategory(PreferencesCategory)): return_value == &new JPanel(addCategory#1)
    //#post(JPanel addCategory(PreferencesCategory)): new JPanel(addCategory#1) num objects == 1
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane:getDocument
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane:setText
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.StyledDocument:setParagraphAttributes
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditorKit
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.plaf.basic.BasicTextPaneUI
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setUI
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setOpaque
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setEditable
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setHighlighter
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setMargin
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.SimpleAttributeSet
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.text.StyleConstants:setAlignment
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getTitle
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:getHelptext
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.text.TextLabel:setToolTipText
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.PrefsComponentFactory:getComponent
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JComponent:setToolTipText
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:getToolTipPanel
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ToolTipPanel:registerTooltipHandler
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:instanceof
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:getParentWindow
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setWindow
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:instanceof
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ColourChooser:setWindow
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:instanceof
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.OptionalColourChooser:setWindow
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getTitle
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:initCategory
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getDescription
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSubcats
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInline
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:isInlineBefore
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:addCategory
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:hasObject
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getObject
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:javax.swing.JPanel:instanceof
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getSettings
    //#unanalyzed(JPanel addCategory(PreferencesCategory)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesCategory:getPath
                new JPanel(new MigLayout("fillx, gap unrel, " +
                "wrap 2, hidemode 3, wmax 470-" + leftPadding + "-" +
                rightPadding + "-2*" + padding));
        final String path = category.getPath();
    //#PrefsCategoryLoader.java:247: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.prefs.PreferencesCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
    //#    method: JPanel addCategory(PreferencesCategory)
    //#    unanalyzed callee: String com.dmdirc.config.prefs.PreferencesCategory:getPath()

        initCategory(category, panel, path);

        return panel;
    //#PrefsCategoryLoader.java:251: end of method: JPanel com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.addCategory(PreferencesCategory)
    }
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader]
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;)Ljavax/swing/JPanel;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addComponent(Lcom/dmdirc/config/prefs/PreferencesCategory;Lcom/dmdirc/config/prefs/PreferencesSetting;Ljavax/swing/JPanel;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addInlineCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;Ljavax/swing/JPanel;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.doInBackground()Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.doInBackground()Ljavax/swing/JPanel;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.done()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.getLabel(Lcom/dmdirc/config/prefs/PreferencesSetting;)Lcom/dmdirc/addons/ui_swing/components/text/TextLabel;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.getPanel()Ljavax/swing/JPanel;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.initCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;Ljavax/swing/JPanel;Ljava/lang/String;)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/PrefsCategoryLoader] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;)Ljavax/swing/JPanel; == &addCategory
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addComponent(Lcom/dmdirc/config/prefs/PreferencesCategory;Lcom/dmdirc/config/prefs/PreferencesSetting;Ljavax/swing/JPanel;)V == &addComponent
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.addInlineCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;Ljavax/swing/JPanel;)V == &addInlineCategory
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.doInBackground()Ljava/lang/Object; == &doInBackground
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.doInBackground()Ljavax/swing/JPanel; == &doInBackground
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.done()V == &done
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.getLabel(Lcom/dmdirc/config/prefs/PreferencesSetting;)Lcom/dmdirc/addons/ui_swing/components/text/TextLabel; == &getLabel
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.getPanel()Ljavax/swing/JPanel; == &getPanel
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init): __Dispatch_Table.initCategory(Lcom/dmdirc/config/prefs/PreferencesCategory;Ljavax/swing/JPanel;Ljava/lang/String;)V == &initCategory
    //#PrefsCategoryLoader.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader.com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader__static_init
    //#PrefsCategoryLoader.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.prefs.PrefsCategoryLoader
