//# 2 errors, 1,029 messages
//#
/*
    //#InstallerDialog.java:1:1: class: com.dmdirc.installer.ui.InstallerDialog$1
    //#InstallerDialog.java:1:1: method: com.dmdirc.installer.ui.InstallerDialog$1.com.dmdirc.installer.ui.InstallerDialog$1__static_init
    //#InstallerDialog.java:1:1: class: com.dmdirc.installer.ui.InstallerDialog
    //#InstallerDialog.java:1:1: method: com.dmdirc.installer.ui.InstallerDialog.com.dmdirc.installer.ui.InstallerDialog__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.installer.ui;

import com.dmdirc.installer.Step;
import com.dmdirc.installer.StepListener;
import com.dmdirc.installer.WizardListener;
import com.dmdirc.ui.CoreUIUtils;
import com.dmdirc.util.ListenerList;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

/**
 *
 */
public class InstallerDialog extends JFrame implements ActionListener {

    private static final long serialVersionUID = -2001827768443747849L;
    private final TitlePanel title;
    private final WizardPanel wizard;
    private final WizardControlPanel control;
    private final ListenerList listeners;
    /** Small UI Gap. */
    public static final int SMALL_GAP = 5;

    /**
     * Instantiates a new installer dialog
     * 
     * @param dialogTitle
     */
    public InstallerDialog(final String dialogTitle) {
        super(dialogTitle);
    //#InstallerDialog.java:67: method: void com.dmdirc.installer.ui.InstallerDialog.com.dmdirc.installer.ui.InstallerDialog(String)
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): " of "._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): ""._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "&#10;"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Confirm"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Error"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Install"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Settings"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Step "._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): "Welcome"._tainted
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/EtchedLineBorder$BorderSide.BOTTOM
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/EtchedLineBorder$BorderSide.TOP
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/TitlePanel.java.awt.Color.WHITE
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getNextButton()Ljavax/swing/JButton;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getPrevButton()Ljavax/swing/JButton;
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): dialogTitle
    //#input(void com.dmdirc.installer.ui.InstallerDialog(String)): this
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new ArrayList(StepLayout#1) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#1) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#2) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#2) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#3) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(WizardControlPanel#3) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new ListenerList(InstallerDialog#4) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).__Tag
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).currentStep
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).hGap
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).parent
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).steps
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).vGap
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new TitlePanel(InstallerDialog#1) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.__Tag
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.image
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.title
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardControlPanel(InstallerDialog#3) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.__Tag
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.next
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.prev
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.progress
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.step
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.total
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardPanel(InstallerDialog#2) num objects
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.__Tag
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.dialog
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.layout
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.listeners
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title
    //#output(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new ArrayList(StepLayout#1)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#1)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#2)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#2)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#3)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(WizardControlPanel#3)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new ListenerList(InstallerDialog#4)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new TitlePanel(InstallerDialog#1)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardControlPanel(InstallerDialog#3)
    //#new obj(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardPanel(InstallerDialog#2)
    //#presumption(void com.dmdirc.installer.ui.InstallerDialog(String)): java.awt.Toolkit:getDefaultToolkit(...)@90 != null
    //#presumption(void com.dmdirc.installer.ui.InstallerDialog(String)): java.lang.Thread:currentThread(...)@90 != null
    //#presumption(void com.dmdirc.installer.ui.InstallerDialog(String)): java.lang.Thread:getContextClassLoader(...)@90 != null
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control == &new WizardControlPanel(InstallerDialog#3)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.listeners == &new ListenerList(InstallerDialog#4)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title == &new TitlePanel(InstallerDialog#1)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard == &new WizardPanel(InstallerDialog#2)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new ArrayList(StepLayout#1) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#1) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new JButton(WizardControlPanel#2) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#2) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(TitlePanel#3) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new JLabel(WizardControlPanel#3) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new ListenerList(InstallerDialog#4) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new TitlePanel(InstallerDialog#1) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardControlPanel(InstallerDialog#3) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new WizardPanel(InstallerDialog#2) num objects == 1
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).__Tag == com/dmdirc/installer/ui/StepLayout
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(new StepLayout(WizardPanel#1).currentStep)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(new StepLayout(WizardPanel#1).hGap)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(new StepLayout(WizardPanel#1).parent)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): new StepLayout(WizardPanel#1).steps == &new ArrayList(StepLayout#1)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(new StepLayout(WizardPanel#1).vGap)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.image == &new JLabel(TitlePanel#3)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.title.title == &new JLabel(TitlePanel#2)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.next == &new JButton(WizardControlPanel#2)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.prev == &new JButton(WizardControlPanel#1)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.control.progress == &new JLabel(WizardControlPanel#3)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(this.control.step)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): init'ed(this.control.total)
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.dialog == this
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.dialog != null
    //#post(void com.dmdirc.installer.ui.InstallerDialog(String)): this.wizard.layout == &new StepLayout(WizardPanel#1)
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:getStepDescription
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:getStepName
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:getIcon
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JLabel:getFont
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JLabel:setFont
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:add
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:setBackground
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.border.EtchedBorder
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:setBorder
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:setLayout
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JButton:getFont
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.JButton:setPreferredSize
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:setBorder
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.BoxLayout
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:setLayout
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:add
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.Box:createHorizontalGlue
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:javax.swing.Box:createHorizontalStrut
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void com.dmdirc.installer.ui.InstallerDialog(String)): Effects-of-calling:java.awt.Toolkit:createImage
        title = new TitlePanel(null);
        wizard = new WizardPanel(this);
        control = new WizardControlPanel();
        listeners = new ListenerList();
    //#InstallerDialog.java:71: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList()

        setLayout(new BorderLayout(SMALL_GAP, SMALL_GAP));
    //#InstallerDialog.java:73: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setLayout(LayoutManager)


        title.setBorder(BorderFactory.createCompoundBorder(
    //#InstallerDialog.java:76: Warning: method not available - call not analyzed
    //#    call on Border com.dmdirc.installer.ui.TitlePanel:getBorder()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: Border com.dmdirc.installer.ui.TitlePanel:getBorder()
    //#InstallerDialog.java:76: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.TitlePanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.TitlePanel:setBorder(Border)
                BorderFactory.createEmptyBorder(SMALL_GAP, SMALL_GAP,SMALL_GAP,
                SMALL_GAP), title.getBorder()));
        wizard.setBorder(BorderFactory.createCompoundBorder(
    //#InstallerDialog.java:79: Warning: method not available - call not analyzed
    //#    call on Border com.dmdirc.installer.ui.WizardPanel:getBorder()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: Border com.dmdirc.installer.ui.WizardPanel:getBorder()
    //#InstallerDialog.java:79: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.WizardPanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.WizardPanel:setBorder(Border)
                BorderFactory.createEmptyBorder(SMALL_GAP, SMALL_GAP,SMALL_GAP,
                SMALL_GAP), wizard.getBorder()));
        control.setBorder(BorderFactory.createCompoundBorder(
    //#InstallerDialog.java:82: Warning: method not available - call not analyzed
    //#    call on Border com.dmdirc.installer.ui.WizardControlPanel:getBorder()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: Border com.dmdirc.installer.ui.WizardControlPanel:getBorder()
    //#InstallerDialog.java:82: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.WizardControlPanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.WizardControlPanel:setBorder(Border)
                BorderFactory.createEmptyBorder(SMALL_GAP, SMALL_GAP,SMALL_GAP,
                SMALL_GAP), control.getBorder()));

        add(title, BorderLayout.NORTH);
    //#InstallerDialog.java:86: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)
        add(wizard, BorderLayout.CENTER);
    //#InstallerDialog.java:87: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)
        add(control, BorderLayout.SOUTH);
    //#InstallerDialog.java:88: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:add(Component, Object)

        setIconImage(Toolkit.getDefaultToolkit().createImage(Thread.
    //#InstallerDialog.java:90: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setIconImage(Image)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setIconImage(Image)
                currentThread().getContextClassLoader().getResource(
                "com/dmdirc/res/icon.png")));
        setPreferredSize(new Dimension(400, 350));
    //#InstallerDialog.java:93: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setPreferredSize(Dimension)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setPreferredSize(Dimension)
        setMaximumSize(new Dimension(400, 350));
    //#InstallerDialog.java:94: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setMaximumSize(Dimension)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void com.dmdirc.installer.ui.InstallerDialog(String)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setMaximumSize(Dimension)

        control.getPrevButton().addActionListener(this);
        control.getNextButton().addActionListener(this);
    }
    //#InstallerDialog.java:98: end of method: void com.dmdirc.installer.ui.InstallerDialog.com.dmdirc.installer.ui.InstallerDialog(String)

    /**
     * Adds a step.
     * 
     * @param step Step to add
     */
    public void addStep(final SwingStep step) {
        wizard.addStep(step);
    //#InstallerDialog.java:106: method: void com.dmdirc.installer.ui.InstallerDialog.addStep(SwingStep)
    //#input(void addStep(SwingStep)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void addStep(SwingStep)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void addStep(SwingStep)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.addStep(Lcom/dmdirc/installer/ui/SwingStep;)V
    //#input(void addStep(SwingStep)): step
    //#input(void addStep(SwingStep)): this
    //#input(void addStep(SwingStep)): this.wizard
    //#input(void addStep(SwingStep)): this.wizard.__Tag
    //#pre[1] (void addStep(SwingStep)): step != null
    //#pre[3] (void addStep(SwingStep)): this.wizard != null
    //#pre[4] (void addStep(SwingStep)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#unanalyzed(void addStep(SwingStep)): Effects-of-calling:com.dmdirc.installer.ui.SwingStep:getStepName
    //#unanalyzed(void addStep(SwingStep)): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:add
    }
    //#InstallerDialog.java:107: end of method: void com.dmdirc.installer.ui.InstallerDialog.addStep(SwingStep)

    /**
     * Displays the installer.
     */
    public void display() {
        wizard.display();
    //#InstallerDialog.java:113: method: void com.dmdirc.installer.ui.InstallerDialog.display()
    //#input(void display()): " of "._tainted
    //#input(void display()): ""._tainted
    //#input(void display()): "&#10;"._tainted
    //#input(void display()): "Confirm"._tainted
    //#input(void display()): "Error"._tainted
    //#input(void display()): "Install"._tainted
    //#input(void display()): "Settings"._tainted
    //#input(void display()): "Step "._tainted
    //#input(void display()): "Welcome"._tainted
    //#input(void display()): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void display()): __Descendant_Table[others]
    //#input(void display()): __Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void display()): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void display()): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/StepListener.__Dispatch_Table.stepAboutToDisplay(Lcom/dmdirc/installer/Step;)V
    //#input(void display()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.first(Ljava/awt/Container;)V
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getSteps()Ljava/util/List;
    //#input(void display()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.show(ILjava/awt/Container;)V
    //#input(void display()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display()): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void display()): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void display()): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void display()): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setProgress(I)V
    //#input(void display()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setTotal(I)V
    //#input(void display()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.display()V
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getTotalSteps()I
    //#input(void display()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.showFirst()V
    //#input(void display()): this
    //#input(void display()): this.__Tag
    //#input(void display()): this.control
    //#input(void display()): this.control.__Tag
    //#input(void display()): this.control.next
    //#input(void display()): this.control.prev
    //#input(void display()): this.control.progress
    //#input(void display()): this.control.step
    //#input(void display()): this.listeners
    //#input(void display()): this.title
    //#input(void display()): this.title.__Tag
    //#input(void display()): this.title.image
    //#input(void display()): this.title.title
    //#input(void display()): this.wizard
    //#input(void display()): this.wizard.__Tag
    //#input(void display()): this.wizard.layout
    //#input(void display()): this.wizard.layout.__Tag
    //#input(void display()): this.wizard.layout.currentStep
    //#input(void display()): this.wizard.layout.steps
    //#output(void display()): this.control.step
    //#output(void display()): this.control.total
    //#output(void display()): this.wizard.layout.currentStep
    //#pre[1] (void display()): init'ed(this.control.step)
    //#pre[2] (void display()): init'ed(this.wizard.layout.currentStep)
    //#pre[4] (void display()): this.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#pre[5] (void display()): this.control != null
    //#pre[6] (void display()): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[9] (void display()): this.control.progress != null
    //#pre[10] (void display()): this.listeners != null
    //#pre[11] (void display()): this.title != null
    //#pre[12] (void display()): this.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#pre[13] (void display()): this.title.image != null
    //#pre[14] (void display()): this.title.title != null
    //#pre[15] (void display()): this.wizard != null
    //#pre[16] (void display()): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[17] (void display()): this.wizard.layout != null
    //#pre[18] (void display()): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[7] (void display()): (soft) this.control.next != null
    //#pre[8] (void display()): (soft) this.control.prev != null
    //#pre[19] (void display()): (soft) this.wizard.layout.steps != null
    //#presumption(void display()): java.util.List:get(...)@161.__Tag in {com/dmdirc/installer/Step, com/dmdirc/installer/ui/StepConfirm, com/dmdirc/installer/ui/StepError, com/dmdirc/installer/ui/StepInstall, com/dmdirc/installer/ui/StepSettings, com/dmdirc/installer/ui/StepWelcome, com/dmdirc/installer/ui/SwingStep}
    //#post(void display()): this.control.step >= -2_147_483_647
    //#post(void display()): init'ed(this.control.total)
    //#post(void display()): this.wizard.layout.currentStep <= 4_294_967_294
    //#unanalyzed(void display()): Effects-of-calling:java.util.List:get
    //#unanalyzed(void display()): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void display()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void display()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void display()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void display()): Effects-of-calling:stepAboutToDisplay
    //#unanalyzed(void display()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Container:getTreeLock
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Container:getComponentCount
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Container:getComponent
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Component:isVisible
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Component:setVisible
    //#unanalyzed(void display()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Container:validate
    //#unanalyzed(void display()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void display()): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void display()): Effects-of-calling:getStepDescription
    //#unanalyzed(void display()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void display()): Effects-of-calling:getStepName
    //#unanalyzed(void display()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void display()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void display()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void display()): Effects-of-calling:getIcon
    //#unanalyzed(void display()): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void display()): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void display()): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void display()): Effects-of-calling:showFirst
    //#unanalyzed(void display()): Effects-of-calling:java.awt.event.WindowAdapter
    //#unanalyzed(void display()): Effects-of-calling:java.awt.MouseInfo:getPointerInfo
    //#unanalyzed(void display()): Effects-of-calling:java.awt.PointerInfo:getDevice
    //#unanalyzed(void display()): Effects-of-calling:java.awt.GraphicsDevice:getDefaultConfiguration
    //#unanalyzed(void display()): Effects-of-calling:java.awt.GraphicsConfiguration:getBounds
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Window:getHeight
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Window:setLocation
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void display()): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void display()): Effects-of-calling:java.awt.Toolkit:createImage
        title.setStep(wizard.getCurrentStep());
        control.setTotal(wizard.getTotalSteps());
        control.setProgress(wizard.getCurrentStepIndex());
    //#InstallerDialog.java:116: ?precondition failure
    //#    com/dmdirc/installer/ui/WizardControlPanel.setProgress: step <= 4_294_967_294
    //#    severity: LOW
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void display()
    //#    basic block: Entry_BB_1
    //#    assertion: this.layout.currentStep in {-2_147_483_648..4_294_967_294}
    //#    callee: void com/dmdirc/installer/ui/WizardControlPanel.setProgress(int)
    //#    callee assertion: step <= 4_294_967_294
    //#    callee file: WizardControlPanel.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 131
    //#    VN: this.layout.currentStep
    //#    Expected: {-2_147_483_648..4_294_967_294}
    //#    Bad: {4_294_967_295}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
        addWindowListener(new WindowAdapter() {
    //#InstallerDialog.java:117: method: void com.dmdirc.installer.ui.InstallerDialog$1.com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)
    //#input(void com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)): Param_1
    //#input(void com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)): this
    //#output(void com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)): this.this$0
    //#post(void com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)): this.this$0 == Param_1
    //#post(void com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)): init'ed(this.this$0)
    //#InstallerDialog.java:117: end of method: void com.dmdirc.installer.ui.InstallerDialog$1.com.dmdirc.installer.ui.InstallerDialog$1(InstallerDialog)
    //#InstallerDialog.java:117: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:addWindowListener(WindowListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void display()
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:addWindowListener(WindowListener)

            /** {@inheritDoc} */
            @Override
            public void windowClosing(final WindowEvent e) {
                fireWizardCancelled();
    //#InstallerDialog.java:122: method: void com.dmdirc.installer.ui.InstallerDialog$1.windowClosing(WindowEvent)
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/WizardListener.__Descendant_Table[com/dmdirc/installer/WizardListener]
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/WizardListener.__Descendant_Table[others]
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/WizardListener.__Dispatch_Table.wizardCancelled()V
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[others]
    //#input(void windowClosing(WindowEvent)): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.fireWizardCancelled()V
    //#input(void windowClosing(WindowEvent)): this
    //#input(void windowClosing(WindowEvent)): this.this$0
    //#input(void windowClosing(WindowEvent)): this.this$0.__Tag
    //#input(void windowClosing(WindowEvent)): this.this$0.listeners
    //#pre[2] (void windowClosing(WindowEvent)): this.this$0 != null
    //#pre[3] (void windowClosing(WindowEvent)): this.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#pre[4] (void windowClosing(WindowEvent)): this.listeners != null
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void windowClosing(WindowEvent)): Effects-of-calling:wizardCancelled
            }
    //#InstallerDialog.java:123: end of method: void com.dmdirc.installer.ui.InstallerDialog$1.windowClosing(WindowEvent)
        });

        pack();
    //#InstallerDialog.java:126: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:pack()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void display()
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:pack()
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    //#InstallerDialog.java:127: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setDefaultCloseOperation(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void display()
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setDefaultCloseOperation(int)
        CoreUIUtils.centreWindow(this);
        setVisible(true);
    //#InstallerDialog.java:129: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void display()
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:setVisible(bool)
        fireStepAboutToBeDisplayed(wizard.getStep(wizard.getCurrentStepIndex()));
    }
    //#InstallerDialog.java:131: end of method: void com.dmdirc.installer.ui.InstallerDialog.display()

    /**
     * Displays the installer with these steps added.
     * 
     * @param steps Steps to add
     */
    public void display(final List<Step> steps) {
        final List<SwingStep> swingSteps = new ArrayList<SwingStep>();
    //#InstallerDialog.java:139: method: void com.dmdirc.installer.ui.InstallerDialog.display(List)
    //#input(void display(List)): " of "._tainted
    //#input(void display(List)): ""._tainted
    //#input(void display(List)): "&#10;"._tainted
    //#input(void display(List)): "Confirm"._tainted
    //#input(void display(List)): "Error"._tainted
    //#input(void display(List)): "Install"._tainted
    //#input(void display(List)): "Settings"._tainted
    //#input(void display(List)): "Step "._tainted
    //#input(void display(List)): "Welcome"._tainted
    //#input(void display(List)): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void display(List)): __Descendant_Table[others]
    //#input(void display(List)): __Dispatch_Table.display()V
    //#input(void display(List)): __Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void display(List)): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void display(List)): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/StepListener.__Dispatch_Table.stepAboutToDisplay(Lcom/dmdirc/installer/Step;)V
    //#input(void display(List)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.first(Ljava/awt/Container;)V
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getSteps()Ljava/util/List;
    //#input(void display(List)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.show(ILjava/awt/Container;)V
    //#input(void display(List)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void display(List)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void display(List)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void display(List)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void display(List)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setProgress(I)V
    //#input(void display(List)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setTotal(I)V
    //#input(void display(List)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.display()V
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getTotalSteps()I
    //#input(void display(List)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.showFirst()V
    //#input(void display(List)): steps
    //#input(void display(List)): this
    //#input(void display(List)): this.__Tag
    //#input(void display(List)): this.control
    //#input(void display(List)): this.control.__Tag
    //#input(void display(List)): this.control.next
    //#input(void display(List)): this.control.prev
    //#input(void display(List)): this.control.progress
    //#input(void display(List)): this.control.step
    //#input(void display(List)): this.listeners
    //#input(void display(List)): this.title
    //#input(void display(List)): this.title.__Tag
    //#input(void display(List)): this.title.image
    //#input(void display(List)): this.title.title
    //#input(void display(List)): this.wizard
    //#input(void display(List)): this.wizard.__Tag
    //#input(void display(List)): this.wizard.layout
    //#input(void display(List)): this.wizard.layout.__Tag
    //#input(void display(List)): this.wizard.layout.currentStep
    //#input(void display(List)): this.wizard.layout.steps
    //#output(void display(List)): this.control.step
    //#output(void display(List)): this.control.total
    //#output(void display(List)): this.wizard.layout.currentStep
    //#pre[1] (void display(List)): init'ed(this.control.step)
    //#pre[2] (void display(List)): init'ed(this.wizard.layout.currentStep)
    //#pre[3] (void display(List)): steps != null
    //#pre[5] (void display(List)): this.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#pre[6] (void display(List)): this.control != null
    //#pre[7] (void display(List)): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[10] (void display(List)): this.control.progress != null
    //#pre[11] (void display(List)): this.listeners != null
    //#pre[12] (void display(List)): this.title != null
    //#pre[13] (void display(List)): this.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#pre[14] (void display(List)): this.title.image != null
    //#pre[15] (void display(List)): this.title.title != null
    //#pre[16] (void display(List)): this.wizard != null
    //#pre[17] (void display(List)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[18] (void display(List)): this.wizard.layout != null
    //#pre[19] (void display(List)): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[8] (void display(List)): (soft) this.control.next != null
    //#pre[9] (void display(List)): (soft) this.control.prev != null
    //#pre[20] (void display(List)): (soft) this.wizard.layout.steps != null
    //#presumption(void display(List)): java.util.Iterator:next(...).__Tag@140 in {com/dmdirc/installer/Step, com/dmdirc/installer/ui/StepConfirm, com/dmdirc/installer/ui/StepError, com/dmdirc/installer/ui/StepInstall, com/dmdirc/installer/ui/StepSettings, com/dmdirc/installer/ui/StepWelcome, com/dmdirc/installer/ui/SwingStep}
    //#post(void display(List)): this.control.step >= -2_147_483_647
    //#post(void display(List)): init'ed(this.control.total)
    //#post(void display(List)): this.wizard.layout.currentStep <= 4_294_967_294
    //#unanalyzed(void display(List)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void display(List)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void display(List)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void display(List)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void display(List)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void display(List)): Effects-of-calling:stepAboutToDisplay
    //#unanalyzed(void display(List)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Container:getTreeLock
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Container:getComponentCount
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Container:getComponent
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Component:isVisible
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Component:setVisible
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Container:validate
    //#unanalyzed(void display(List)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void display(List)): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void display(List)): Effects-of-calling:getStepDescription
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void display(List)): Effects-of-calling:getStepName
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void display(List)): Effects-of-calling:getIcon
    //#unanalyzed(void display(List)): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void display(List)): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void display(List)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void display(List)): Effects-of-calling:showFirst
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.event.WindowAdapter
    //#unanalyzed(void display(List)): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:addWindowListener
    //#unanalyzed(void display(List)): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:pack
    //#unanalyzed(void display(List)): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setDefaultCloseOperation
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.MouseInfo:getPointerInfo
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.PointerInfo:getDevice
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.GraphicsDevice:getDefaultConfiguration
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.GraphicsConfiguration:getBounds
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Window:getHeight
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Window:setLocation
    //#unanalyzed(void display(List)): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setVisible
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void display(List)): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void display(List)): Effects-of-calling:java.awt.Toolkit:createImage
    //#test_vector(void display(List)): java.util.Iterator:hasNext(...)@140: {0}, {1}
        for (Step step : steps) {
            if (step instanceof SwingStep) {
                swingSteps.add((SwingStep) step);
            }
        }
        display();
    }
    //#InstallerDialog.java:146: end of method: void com.dmdirc.installer.ui.InstallerDialog.display(List)

    /**
     * Enables the next step.
     *
     * @param enable true to enable false to disable
     */
    public void enableNextStep(final boolean enable) {
        control.getNextButton().setEnabled(enable);
    //#InstallerDialog.java:154: method: void com.dmdirc.installer.ui.InstallerDialog.enableNextStep(bool)
    //#input(void enableNextStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void enableNextStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void enableNextStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getNextButton()Ljavax/swing/JButton;
    //#input(void enableNextStep(bool)): enable
    //#input(void enableNextStep(bool)): this
    //#input(void enableNextStep(bool)): this.control
    //#input(void enableNextStep(bool)): this.control.__Tag
    //#input(void enableNextStep(bool)): this.control.next
    //#pre[3] (void enableNextStep(bool)): this.control != null
    //#pre[4] (void enableNextStep(bool)): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[5] (void enableNextStep(bool)): this.control.next != null
    }
    //#InstallerDialog.java:155: end of method: void com.dmdirc.installer.ui.InstallerDialog.enableNextStep(bool)

    /**
     * Enables the previous step.
     *
     * @param enable true to enable false to disable
     */
    public void enablePreviousStep(final boolean enable) {
        control.getPrevButton().setEnabled(enable);
    //#InstallerDialog.java:163: method: void com.dmdirc.installer.ui.InstallerDialog.enablePreviousStep(bool)
    //#input(void enablePreviousStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void enablePreviousStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void enablePreviousStep(bool)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getPrevButton()Ljavax/swing/JButton;
    //#input(void enablePreviousStep(bool)): enable
    //#input(void enablePreviousStep(bool)): this
    //#input(void enablePreviousStep(bool)): this.control
    //#input(void enablePreviousStep(bool)): this.control.__Tag
    //#input(void enablePreviousStep(bool)): this.control.prev
    //#pre[3] (void enablePreviousStep(bool)): this.control != null
    //#pre[4] (void enablePreviousStep(bool)): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[5] (void enablePreviousStep(bool)): this.control.prev != null
    }
    //#InstallerDialog.java:164: end of method: void com.dmdirc.installer.ui.InstallerDialog.enablePreviousStep(bool)

    /**
     * shows the cancel confirmation.
     * 
     * @return true if confirmed
     */
    public boolean showCancelConfirmation() {
        return JOptionPane.showConfirmDialog(this,
    //#InstallerDialog.java:172: method: bool com.dmdirc.installer.ui.InstallerDialog.showCancelConfirmation()
    //#input(bool showCancelConfirmation()): this
    //#output(bool showCancelConfirmation()): return_value
    //#post(bool showCancelConfirmation()): init'ed(return_value)
    //#InstallerDialog.java:172: end of method: bool com.dmdirc.installer.ui.InstallerDialog.showCancelConfirmation()
                                             "Are you sure you want to cancel?",
                                             "Cancel confirmation",
                                             JOptionPane.YES_NO_OPTION,
                                             JOptionPane.WARNING_MESSAGE) ==
               JOptionPane.YES_OPTION;
    }

    /**
     *
     *
     * @param step
     * @return
     */
    public Step getStep(final int step) {
        return wizard.getStep(step);
    //#InstallerDialog.java:187: method: Step com.dmdirc.installer.ui.InstallerDialog.getStep(int)
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(Step getStep(int)): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(Step getStep(int)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(Step getStep(int)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(Step getStep(int)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(Step getStep(int)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(Step getStep(int)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(Step getStep(int)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(Step getStep(int)): step
    //#input(Step getStep(int)): this
    //#input(Step getStep(int)): this.wizard
    //#input(Step getStep(int)): this.wizard.__Tag
    //#input(Step getStep(int)): this.wizard.layout
    //#input(Step getStep(int)): this.wizard.layout.__Tag
    //#input(Step getStep(int)): this.wizard.layout.steps
    //#output(Step getStep(int)): return_value
    //#pre[3] (Step getStep(int)): this.wizard != null
    //#pre[4] (Step getStep(int)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[5] (Step getStep(int)): this.wizard.layout != null
    //#pre[6] (Step getStep(int)): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[7] (Step getStep(int)): this.wizard.layout.steps != null
    //#post(Step getStep(int)): init'ed(return_value)
    //#unanalyzed(Step getStep(int)): Effects-of-calling:java.util.List:get
    //#InstallerDialog.java:187: end of method: Step com.dmdirc.installer.ui.InstallerDialog.getStep(int)
    }

    /**
     *
     * @param name
     * @return
     */
    public Step getStep(final String name) {
        return wizard.getStep(name);
    //#InstallerDialog.java:196: method: Step com.dmdirc.installer.ui.InstallerDialog.getStep(String)
    //#input(Step getStep(String)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getSteps()Ljava/util/List;
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[others]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(Step getStep(String)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(Ljava/lang/String;)Lcom/dmdirc/installer/Step;
    //#input(Step getStep(String)): name
    //#input(Step getStep(String)): this
    //#input(Step getStep(String)): this.wizard
    //#input(Step getStep(String)): this.wizard.__Tag
    //#input(Step getStep(String)): this.wizard.layout
    //#input(Step getStep(String)): this.wizard.layout.__Tag
    //#input(Step getStep(String)): this.wizard.layout.steps
    //#output(Step getStep(String)): return_value
    //#pre[3] (Step getStep(String)): this.wizard != null
    //#pre[4] (Step getStep(String)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[5] (Step getStep(String)): this.wizard.layout != null
    //#pre[6] (Step getStep(String)): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[7] (Step getStep(String)): this.wizard.layout.steps != null
    //#pre[1] (Step getStep(String)): (soft) name != null
    //#post(Step getStep(String)): init'ed(return_value)
    //#unanalyzed(Step getStep(String)): Effects-of-calling:com.dmdirc.installer.ui.SwingStep:getStepName
    //#unanalyzed(Step getStep(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Step getStep(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Step getStep(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Step getStep(String)): Effects-of-calling:java.lang.String:equals
    //#InstallerDialog.java:196: end of method: Step com.dmdirc.installer.ui.InstallerDialog.getStep(String)
    }

    /**
     *
     *
     * @return
     */
    public Step getCurrentStep() {
        return wizard.getCurrentStep();
    //#InstallerDialog.java:205: method: Step com.dmdirc.installer.ui.InstallerDialog.getCurrentStep()
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(Step getCurrentStep()): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(Step getCurrentStep()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(Step getCurrentStep()): this
    //#input(Step getCurrentStep()): this.wizard
    //#input(Step getCurrentStep()): this.wizard.__Tag
    //#input(Step getCurrentStep()): this.wizard.layout
    //#input(Step getCurrentStep()): this.wizard.layout.__Tag
    //#input(Step getCurrentStep()): this.wizard.layout.currentStep
    //#input(Step getCurrentStep()): this.wizard.layout.steps
    //#output(Step getCurrentStep()): return_value
    //#pre[2] (Step getCurrentStep()): this.wizard != null
    //#pre[3] (Step getCurrentStep()): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[4] (Step getCurrentStep()): this.wizard.layout != null
    //#pre[5] (Step getCurrentStep()): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[6] (Step getCurrentStep()): init'ed(this.wizard.layout.currentStep)
    //#pre[7] (Step getCurrentStep()): this.wizard.layout.steps != null
    //#post(Step getCurrentStep()): init'ed(return_value)
    //#unanalyzed(Step getCurrentStep()): Effects-of-calling:java.util.List:get
    //#InstallerDialog.java:205: end of method: Step com.dmdirc.installer.ui.InstallerDialog.getCurrentStep()
    }

    /**
     *
     *
     * @return
     */
    public int getCurrentStepIndex() {
        return wizard.getCurrentStepIndex();
    //#InstallerDialog.java:214: method: int com.dmdirc.installer.ui.InstallerDialog.getCurrentStepIndex()
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepIndex()I
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(int getCurrentStepIndex()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepIndex()I
    //#input(int getCurrentStepIndex()): this
    //#input(int getCurrentStepIndex()): this.wizard
    //#input(int getCurrentStepIndex()): this.wizard.__Tag
    //#input(int getCurrentStepIndex()): this.wizard.layout
    //#input(int getCurrentStepIndex()): this.wizard.layout.__Tag
    //#input(int getCurrentStepIndex()): this.wizard.layout.currentStep
    //#output(int getCurrentStepIndex()): return_value
    //#pre[2] (int getCurrentStepIndex()): this.wizard != null
    //#pre[3] (int getCurrentStepIndex()): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[4] (int getCurrentStepIndex()): this.wizard.layout != null
    //#pre[5] (int getCurrentStepIndex()): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[6] (int getCurrentStepIndex()): init'ed(this.wizard.layout.currentStep)
    //#post(int getCurrentStepIndex()): return_value == this.wizard.layout.currentStep
    //#post(int getCurrentStepIndex()): init'ed(return_value)
    //#InstallerDialog.java:214: end of method: int com.dmdirc.installer.ui.InstallerDialog.getCurrentStepIndex()
    }

    /**
     *
     *
     * @return
     */
    public String getCurrentStepName() {
        return wizard.getCurrentStepName();
    //#InstallerDialog.java:223: method: String com.dmdirc.installer.ui.InstallerDialog.getCurrentStepName()
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepName()Ljava/lang/String;
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/SwingStep.__Descendant_Table[others]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(String getCurrentStepName()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepName()Ljava/lang/String;
    //#input(String getCurrentStepName()): this
    //#input(String getCurrentStepName()): this.wizard
    //#input(String getCurrentStepName()): this.wizard.__Tag
    //#input(String getCurrentStepName()): this.wizard.layout
    //#input(String getCurrentStepName()): this.wizard.layout.__Tag
    //#input(String getCurrentStepName()): this.wizard.layout.currentStep
    //#input(String getCurrentStepName()): this.wizard.layout.steps
    //#output(String getCurrentStepName()): return_value
    //#pre[2] (String getCurrentStepName()): this.wizard != null
    //#pre[3] (String getCurrentStepName()): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[4] (String getCurrentStepName()): this.wizard.layout != null
    //#pre[5] (String getCurrentStepName()): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[6] (String getCurrentStepName()): init'ed(this.wizard.layout.currentStep)
    //#pre[7] (String getCurrentStepName()): this.wizard.layout.steps != null
    //#post(String getCurrentStepName()): init'ed(return_value)
    //#unanalyzed(String getCurrentStepName()): Effects-of-calling:java.util.List:get
    //#unanalyzed(String getCurrentStepName()): Effects-of-calling:com.dmdirc.installer.ui.SwingStep:getStepName
    //#InstallerDialog.java:223: end of method: String com.dmdirc.installer.ui.InstallerDialog.getCurrentStepName()
    }

    /**
     *
     *
     * @param step
     */
    void fireStepAboutToBeDisplayed(final Step step) {
        for (StepListener listener : listeners.get(StepListener.class)) {
    //#InstallerDialog.java:232: method: void com.dmdirc.installer.ui.InstallerDialog.fireStepAboutToBeDisplayed(Step)
    //#InstallerDialog.java:232: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireStepAboutToBeDisplayed(Step)
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
    //#input(void fireStepAboutToBeDisplayed(Step)): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void fireStepAboutToBeDisplayed(Step)): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void fireStepAboutToBeDisplayed(Step)): com/dmdirc/installer/StepListener.__Dispatch_Table.stepAboutToDisplay(Lcom/dmdirc/installer/Step;)V
    //#input(void fireStepAboutToBeDisplayed(Step)): step
    //#input(void fireStepAboutToBeDisplayed(Step)): this
    //#input(void fireStepAboutToBeDisplayed(Step)): this.listeners
    //#pre[3] (void fireStepAboutToBeDisplayed(Step)): this.listeners != null
    //#presumption(void fireStepAboutToBeDisplayed(Step)): com.dmdirc.util.ListenerList:get(...)@232 != null
    //#presumption(void fireStepAboutToBeDisplayed(Step)): java.util.Iterator:next(...).__Tag@232 == com/dmdirc/installer/StepListener
    //#presumption(void fireStepAboutToBeDisplayed(Step)): java.util.Iterator:next(...)@232 != null
    //#test_vector(void fireStepAboutToBeDisplayed(Step)): java.util.Iterator:hasNext(...)@232: {0}, {1}
            listener.stepAboutToDisplay(step);
    //#InstallerDialog.java:233: Warning: method not available - call not analyzed
    //#    call on void stepAboutToDisplay(Step)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireStepAboutToBeDisplayed(Step)
    //#    unanalyzed callee: void stepAboutToDisplay(Step)
        }
    }
    //#InstallerDialog.java:235: end of method: void com.dmdirc.installer.ui.InstallerDialog.fireStepAboutToBeDisplayed(Step)

    /**
     *
     * 
     * @param step
     */
    void fireStepHidden(final Step step) {
        for (StepListener listener : listeners.get(StepListener.class)) {
    //#InstallerDialog.java:243: method: void com.dmdirc.installer.ui.InstallerDialog.fireStepHidden(Step)
    //#InstallerDialog.java:243: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireStepHidden(Step)
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
    //#input(void fireStepHidden(Step)): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void fireStepHidden(Step)): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void fireStepHidden(Step)): com/dmdirc/installer/StepListener.__Dispatch_Table.stepHidden(Lcom/dmdirc/installer/Step;)V
    //#input(void fireStepHidden(Step)): step
    //#input(void fireStepHidden(Step)): this
    //#input(void fireStepHidden(Step)): this.listeners
    //#pre[3] (void fireStepHidden(Step)): this.listeners != null
    //#presumption(void fireStepHidden(Step)): com.dmdirc.util.ListenerList:get(...)@243 != null
    //#presumption(void fireStepHidden(Step)): java.util.Iterator:next(...).__Tag@243 == com/dmdirc/installer/StepListener
    //#presumption(void fireStepHidden(Step)): java.util.Iterator:next(...)@243 != null
    //#test_vector(void fireStepHidden(Step)): java.util.Iterator:hasNext(...)@243: {0}, {1}
            listener.stepHidden(step);
    //#InstallerDialog.java:244: Warning: method not available - call not analyzed
    //#    call on void stepHidden(Step)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireStepHidden(Step)
    //#    unanalyzed callee: void stepHidden(Step)
        }
    }
    //#InstallerDialog.java:246: end of method: void com.dmdirc.installer.ui.InstallerDialog.fireStepHidden(Step)

    /**
     *
     * 
     * @param listener
     */
    public void addStepListener(final StepListener listener) {
        listeners.add(StepListener.class, listener);
    //#InstallerDialog.java:254: method: void com.dmdirc.installer.ui.InstallerDialog.addStepListener(StepListener)
    //#InstallerDialog.java:254: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:add(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void addStepListener(StepListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:add(Class, Object)
    //#input(void addStepListener(StepListener)): listener
    //#input(void addStepListener(StepListener)): this
    //#input(void addStepListener(StepListener)): this.listeners
    //#pre[3] (void addStepListener(StepListener)): this.listeners != null
    }
    //#InstallerDialog.java:255: end of method: void com.dmdirc.installer.ui.InstallerDialog.addStepListener(StepListener)

    /**
     *
     *
     * @param listener
     */
    public void removeStepListener(final StepListener listener) {
        listeners.remove(StepListener.class, listener);
    //#InstallerDialog.java:263: method: void com.dmdirc.installer.ui.InstallerDialog.removeStepListener(StepListener)
    //#InstallerDialog.java:263: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void removeStepListener(StepListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#input(void removeStepListener(StepListener)): listener
    //#input(void removeStepListener(StepListener)): this
    //#input(void removeStepListener(StepListener)): this.listeners
    //#pre[3] (void removeStepListener(StepListener)): this.listeners != null

    }
    //#InstallerDialog.java:265: end of method: void com.dmdirc.installer.ui.InstallerDialog.removeStepListener(StepListener)

    /**
     *
     */
    void fireWizardCancelled() {
        for (WizardListener listener : listeners.get(WizardListener.class)) {
    //#InstallerDialog.java:271: method: void com.dmdirc.installer.ui.InstallerDialog.fireWizardCancelled()
    //#InstallerDialog.java:271: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireWizardCancelled()
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
    //#input(void fireWizardCancelled()): com/dmdirc/installer/WizardListener.__Descendant_Table[com/dmdirc/installer/WizardListener]
    //#input(void fireWizardCancelled()): com/dmdirc/installer/WizardListener.__Descendant_Table[others]
    //#input(void fireWizardCancelled()): com/dmdirc/installer/WizardListener.__Dispatch_Table.wizardCancelled()V
    //#input(void fireWizardCancelled()): this
    //#input(void fireWizardCancelled()): this.listeners
    //#pre[2] (void fireWizardCancelled()): this.listeners != null
    //#presumption(void fireWizardCancelled()): com.dmdirc.util.ListenerList:get(...)@271 != null
    //#presumption(void fireWizardCancelled()): java.util.Iterator:next(...).__Tag@271 == com/dmdirc/installer/WizardListener
    //#presumption(void fireWizardCancelled()): java.util.Iterator:next(...)@271 != null
    //#test_vector(void fireWizardCancelled()): java.util.Iterator:hasNext(...)@271: {0}, {1}
            listener.wizardCancelled();
    //#InstallerDialog.java:272: Warning: method not available - call not analyzed
    //#    call on void wizardCancelled()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireWizardCancelled()
    //#    unanalyzed callee: void wizardCancelled()
        }
    }
    //#InstallerDialog.java:274: end of method: void com.dmdirc.installer.ui.InstallerDialog.fireWizardCancelled()

    /**
     * 
     */
    void fireWizardFinished() {
        for (WizardListener listener : listeners.get(WizardListener.class)) {
    //#InstallerDialog.java:280: method: void com.dmdirc.installer.ui.InstallerDialog.fireWizardFinished()
    //#InstallerDialog.java:280: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireWizardFinished()
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
    //#input(void fireWizardFinished()): com/dmdirc/installer/WizardListener.__Descendant_Table[com/dmdirc/installer/WizardListener]
    //#input(void fireWizardFinished()): com/dmdirc/installer/WizardListener.__Descendant_Table[others]
    //#input(void fireWizardFinished()): com/dmdirc/installer/WizardListener.__Dispatch_Table.wizardFinished()V
    //#input(void fireWizardFinished()): this
    //#input(void fireWizardFinished()): this.listeners
    //#pre[2] (void fireWizardFinished()): this.listeners != null
    //#presumption(void fireWizardFinished()): com.dmdirc.util.ListenerList:get(...)@280 != null
    //#presumption(void fireWizardFinished()): java.util.Iterator:next(...).__Tag@280 == com/dmdirc/installer/WizardListener
    //#presumption(void fireWizardFinished()): java.util.Iterator:next(...)@280 != null
    //#test_vector(void fireWizardFinished()): java.util.Iterator:hasNext(...)@280: {0}, {1}
            listener.wizardFinished();
    //#InstallerDialog.java:281: Warning: method not available - call not analyzed
    //#    call on void wizardFinished()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void fireWizardFinished()
    //#    unanalyzed callee: void wizardFinished()
        }
    }
    //#InstallerDialog.java:283: end of method: void com.dmdirc.installer.ui.InstallerDialog.fireWizardFinished()

    /**
     *
     *
     * @param listener
     */
    public void addWizardListener(final WizardListener listener) {
        listeners.add(WizardListener.class, listener);
    //#InstallerDialog.java:291: method: void com.dmdirc.installer.ui.InstallerDialog.addWizardListener(WizardListener)
    //#InstallerDialog.java:291: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:add(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void addWizardListener(WizardListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:add(Class, Object)
    //#input(void addWizardListener(WizardListener)): listener
    //#input(void addWizardListener(WizardListener)): this
    //#input(void addWizardListener(WizardListener)): this.listeners
    //#pre[3] (void addWizardListener(WizardListener)): this.listeners != null
    }
    //#InstallerDialog.java:292: end of method: void com.dmdirc.installer.ui.InstallerDialog.addWizardListener(WizardListener)

    /**
     *
     * 
     * @param listener
     */
    public void removeWizardListener(final WizardListener listener) {
        listeners.remove(WizardListener.class, listener);
    //#InstallerDialog.java:300: method: void com.dmdirc.installer.ui.InstallerDialog.removeWizardListener(WizardListener)
    //#InstallerDialog.java:300: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void removeWizardListener(WizardListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#input(void removeWizardListener(WizardListener)): listener
    //#input(void removeWizardListener(WizardListener)): this
    //#input(void removeWizardListener(WizardListener)): this.listeners
    //#pre[3] (void removeWizardListener(WizardListener)): this.listeners != null
    }
    //#InstallerDialog.java:301: end of method: void com.dmdirc.installer.ui.InstallerDialog.removeWizardListener(WizardListener)

    /**
     * Initialises any settings required by this UI (this is always called
     * before any aspect of the UI is instansiated).
     *
     * @throws UnsupportedOperationException If unable to switch to the system
     * look and feel
     */
    public static void initUISettings() {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    //#InstallerDialog.java:313: method: void com.dmdirc.installer.ui.InstallerDialog.initUISettings()
        } catch (InstantiationException ex) {
            throw new UnsupportedOperationException("Unable to switch to the " +
                                                    "system look and feel", ex);
        } catch (ClassNotFoundException ex) {
            throw new UnsupportedOperationException("Unable to switch to the " +
                                                    "system look and feel", ex);
        } catch (UnsupportedLookAndFeelException ex) {
            throw new UnsupportedOperationException("Unable to switch to the " +
                                                    "system look and feel", ex);
        } catch (IllegalAccessException ex) {
            throw new UnsupportedOperationException("Unable to switch to the " +
                                                    "system look and feel", ex);
        }   

        UIManager.put("swing.useSystemFontSettings", true);
        UIManager.put("swing.boldMetal", false);
    }
    //#InstallerDialog.java:330: end of method: void com.dmdirc.installer.ui.InstallerDialog.initUISettings()

    @Override
    public void actionPerformed(ActionEvent e) {
        final int currentStep = wizard.getCurrentStepIndex();
    //#InstallerDialog.java:334: method: void com.dmdirc.installer.ui.InstallerDialog.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): " of "._tainted
    //#input(void actionPerformed(ActionEvent)): ""._tainted
    //#input(void actionPerformed(ActionEvent)): "&#10;"._tainted
    //#input(void actionPerformed(ActionEvent)): "Confirm"._tainted
    //#input(void actionPerformed(ActionEvent)): "Error"._tainted
    //#input(void actionPerformed(ActionEvent)): "Install"._tainted
    //#input(void actionPerformed(ActionEvent)): "Settings"._tainted
    //#input(void actionPerformed(ActionEvent)): "Step "._tainted
    //#input(void actionPerformed(ActionEvent)): "Welcome"._tainted
    //#input(void actionPerformed(ActionEvent)): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void actionPerformed(ActionEvent)): __Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): __Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V
    //#input(void actionPerformed(ActionEvent)): __Dispatch_Table.fireStepHidden(Lcom/dmdirc/installer/Step;)V
    //#input(void actionPerformed(ActionEvent)): __Dispatch_Table.fireWizardFinished()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/StepListener.__Dispatch_Table.stepAboutToDisplay(Lcom/dmdirc/installer/Step;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/StepListener.__Dispatch_Table.stepHidden(Lcom/dmdirc/installer/Step;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/WizardListener.__Descendant_Table[com/dmdirc/installer/WizardListener]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/WizardListener.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/WizardListener.__Dispatch_Table.wizardFinished()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.next(Ljava/awt/Container;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.previous(Ljava/awt/Container;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.show(ILjava/awt/Container;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getNextButton()Ljavax/swing/JButton;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getPrevButton()Ljavax/swing/JButton;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setProgress(I)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.nextStep()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.previousStep()V
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.__Tag
    //#input(void actionPerformed(ActionEvent)): this.control
    //#input(void actionPerformed(ActionEvent)): this.control.__Tag
    //#input(void actionPerformed(ActionEvent)): this.control.next
    //#input(void actionPerformed(ActionEvent)): this.control.prev
    //#input(void actionPerformed(ActionEvent)): this.control.progress
    //#input(void actionPerformed(ActionEvent)): this.control.total
    //#input(void actionPerformed(ActionEvent)): this.listeners
    //#input(void actionPerformed(ActionEvent)): this.title
    //#input(void actionPerformed(ActionEvent)): this.title.__Tag
    //#input(void actionPerformed(ActionEvent)): this.title.image
    //#input(void actionPerformed(ActionEvent)): this.title.title
    //#input(void actionPerformed(ActionEvent)): this.wizard
    //#input(void actionPerformed(ActionEvent)): this.wizard.__Tag
    //#input(void actionPerformed(ActionEvent)): this.wizard.layout
    //#input(void actionPerformed(ActionEvent)): this.wizard.layout.__Tag
    //#input(void actionPerformed(ActionEvent)): this.wizard.layout.currentStep
    //#input(void actionPerformed(ActionEvent)): this.wizard.layout.steps
    //#output(void actionPerformed(ActionEvent)): this.control.step
    //#output(void actionPerformed(ActionEvent)): this.wizard.layout.currentStep
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[6] (void actionPerformed(ActionEvent)): this.control != null
    //#pre[7] (void actionPerformed(ActionEvent)): this.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[17] (void actionPerformed(ActionEvent)): this.wizard != null
    //#pre[18] (void actionPerformed(ActionEvent)): this.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[19] (void actionPerformed(ActionEvent)): this.wizard.layout != null
    //#pre[20] (void actionPerformed(ActionEvent)): this.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) this.wizard.layout.currentStep in {-2_147_483_647..4_294_967_294}
    //#pre[5] (void actionPerformed(ActionEvent)): (soft) this.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) this.control.next != null
    //#pre[9] (void actionPerformed(ActionEvent)): (soft) this.control.prev != null
    //#pre[10] (void actionPerformed(ActionEvent)): (soft) this.control.progress != null
    //#pre[11] (void actionPerformed(ActionEvent)): (soft) init'ed(this.control.total)
    //#pre[12] (void actionPerformed(ActionEvent)): (soft) this.listeners != null
    //#pre[13] (void actionPerformed(ActionEvent)): (soft) this.title != null
    //#pre[14] (void actionPerformed(ActionEvent)): (soft) this.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#pre[15] (void actionPerformed(ActionEvent)): (soft) this.title.image != null
    //#pre[16] (void actionPerformed(ActionEvent)): (soft) this.title.title != null
    //#pre[21] (void actionPerformed(ActionEvent)): (soft) this.wizard.layout.steps != null
    //#presumption(void actionPerformed(ActionEvent)): java.util.List:get(...)@125.__Tag in {com/dmdirc/installer/Step, com/dmdirc/installer/ui/StepConfirm, com/dmdirc/installer/ui/StepError, com/dmdirc/installer/ui/StepInstall, com/dmdirc/installer/ui/StepSettings, com/dmdirc/installer/ui/StepWelcome, com/dmdirc/installer/ui/SwingStep}
    //#presumption(void actionPerformed(ActionEvent)): java.util.List:get(...)@125.__Tag in {com/dmdirc/installer/Step, com/dmdirc/installer/ui/StepConfirm, com/dmdirc/installer/ui/StepError, com/dmdirc/installer/ui/StepInstall, com/dmdirc/installer/ui/StepSettings, com/dmdirc/installer/ui/StepWelcome, com/dmdirc/installer/ui/SwingStep}
    //#presumption(void actionPerformed(ActionEvent)): java.util.List:get(...)@125.__Tag in {com/dmdirc/installer/Step, com/dmdirc/installer/ui/StepConfirm, com/dmdirc/installer/ui/StepError, com/dmdirc/installer/ui/StepInstall, com/dmdirc/installer/ui/StepSettings, com/dmdirc/installer/ui/StepWelcome, com/dmdirc/installer/ui/SwingStep}
    //#post(void actionPerformed(ActionEvent)): possibly_updated(this.control.step)
    //#post(void actionPerformed(ActionEvent)): this.wizard.layout.currentStep <= 4_294_967_294
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:stepHidden
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:stepAboutToDisplay
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Container:getTreeLock
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Container:getComponentCount
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Container:getComponent
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Component:isVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Component:setVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Container:validate
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getStepDescription
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getStepName
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getIcon
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:wizardFinished
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Toolkit:createImage
    //#test_vector(void actionPerformed(ActionEvent)): java.lang.String:equals(...)@342: {0}, {1}
        Step hiddenStep = null;
        Step shownStep = null;
    //#InstallerDialog.java:336: Warning: unused assignment
    //#    Unused assignment into shownStep
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    Attribs:  Uncertain
        if (e.getSource() == control.getPrevButton()) {
            wizard.previousStep();
            hiddenStep = wizard.getStep(currentStep);
            shownStep = wizard.getStep(currentStep - 1);
        } else if (e.getSource() == control.getNextButton()) {
            if ("Finish".equals(control.getNextButton().getText())) {
                fireWizardFinished();
                shownStep = wizard.getStep(currentStep);
                dispose();
    //#InstallerDialog.java:345: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.ui.InstallerDialog:dispose()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.installer.ui.InstallerDialog:dispose()
            } else {
                wizard.nextStep();
                hiddenStep = wizard.getStep(currentStep);
                shownStep = wizard.getStep(currentStep + 1);
            }
        } else {
            return;
        }
        title.setStep(shownStep);
        if (shownStep != null) {
            fireStepAboutToBeDisplayed(shownStep);
        }
        if (hiddenStep != null) {
            fireStepHidden(hiddenStep);
        }
        control.setProgress(wizard.getCurrentStepIndex());
    //#InstallerDialog.java:361: ?precondition failure
    //#    com/dmdirc/installer/ui/WizardControlPanel.setProgress: step <= 4_294_967_294
    //#    severity: LOW
    //#    class: com.dmdirc.installer.ui.InstallerDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    basic block: bb_12
    //#    assertion: this.wizard.layout.currentStep <= 4_294_967_294
    //#    callee: void com/dmdirc/installer/ui/WizardControlPanel.setProgress(int)
    //#    callee assertion: step <= 4_294_967_294
    //#    callee file: WizardControlPanel.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 131
    //#    VN: this.wizard.layout.currentStep
    //#    Expected: {-2_147_483_648..4_294_967_294}
    //#    Bad: {4_294_967_295}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
    }
    //#InstallerDialog.java:362: end of method: void com.dmdirc.installer.ui.InstallerDialog.actionPerformed(ActionEvent)
}
    //#output(com.dmdirc.installer.ui.InstallerDialog$1__static_init): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog$1]
    //#output(com.dmdirc.installer.ui.InstallerDialog$1__static_init): __Dispatch_Table.windowClosing(Ljava/awt/event/WindowEvent;)V
    //#post(com.dmdirc.installer.ui.InstallerDialog$1__static_init): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog$1] == &__Dispatch_Table
    //#post(com.dmdirc.installer.ui.InstallerDialog$1__static_init): __Dispatch_Table.windowClosing(Ljava/awt/event/WindowEvent;)V == &windowClosing
    //#InstallerDialog.java:: end of method: com.dmdirc.installer.ui.InstallerDialog$1.com.dmdirc.installer.ui.InstallerDialog$1__static_init
    //#InstallerDialog.java:: end of class: com.dmdirc.installer.ui.InstallerDialog$1
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addStep(Lcom/dmdirc/installer/ui/SwingStep;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addStepListener(Lcom/dmdirc/installer/StepListener;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addWizardListener(Lcom/dmdirc/installer/WizardListener;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.display()V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.display(Ljava/util/List;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.enableNextStep(Z)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.enablePreviousStep(Z)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireStepHidden(Lcom/dmdirc/installer/Step;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireWizardCancelled()V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireWizardFinished()V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStepIndex()I
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStepName()Ljava/lang/String;
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getStep(Ljava/lang/String;)Lcom/dmdirc/installer/Step;
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.removeStepListener(Lcom/dmdirc/installer/StepListener;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.removeWizardListener(Lcom/dmdirc/installer/WizardListener;)V
    //#output(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.showCancelConfirmation()Z
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Descendant_Table[com/dmdirc/installer/ui/InstallerDialog] == &__Dispatch_Table
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addStep(Lcom/dmdirc/installer/ui/SwingStep;)V == &addStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addStepListener(Lcom/dmdirc/installer/StepListener;)V == &addStepListener
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.addWizardListener(Lcom/dmdirc/installer/WizardListener;)V == &addWizardListener
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.display()V == &display
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.display(Ljava/util/List;)V == &display
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.enableNextStep(Z)V == &enableNextStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.enablePreviousStep(Z)V == &enablePreviousStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V == &fireStepAboutToBeDisplayed
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireStepHidden(Lcom/dmdirc/installer/Step;)V == &fireStepHidden
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireWizardCancelled()V == &fireWizardCancelled
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.fireWizardFinished()V == &fireWizardFinished
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step; == &getCurrentStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStepIndex()I == &getCurrentStepIndex
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getCurrentStepName()Ljava/lang/String; == &getCurrentStepName
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step; == &getStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.getStep(Ljava/lang/String;)Lcom/dmdirc/installer/Step; == &getStep
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.removeStepListener(Lcom/dmdirc/installer/StepListener;)V == &removeStepListener
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.removeWizardListener(Lcom/dmdirc/installer/WizardListener;)V == &removeWizardListener
    //#post(com.dmdirc.installer.ui.InstallerDialog__static_init): __Dispatch_Table.showCancelConfirmation()Z == &showCancelConfirmation
    //#InstallerDialog.java:: end of method: com.dmdirc.installer.ui.InstallerDialog.com.dmdirc.installer.ui.InstallerDialog__static_init
    //#InstallerDialog.java:: end of class: com.dmdirc.installer.ui.InstallerDialog
