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

package com.dmdirc.installer;

import com.dmdirc.installer.cliparser.BooleanParam;
import com.dmdirc.installer.cliparser.CLIParser;
import com.dmdirc.installer.cliparser.StringParam;

import com.dmdirc.installer.ui.InstallerDialog;
import com.dmdirc.installer.ui.StepWelcome;
import com.dmdirc.installer.ui.StepError;
import com.dmdirc.installer.ui.StepSettings;
import com.dmdirc.installer.ui.StepConfirm;
import com.dmdirc.installer.ui.StepInstall;

/**
 * Main installer entry point.
 */
public final class Main {

    /** Wizard dialog. */
    private static InstallerDialog wizardDialog;
    /** Installer. */
    private static Installer myInstaller;
    /** CLI Parser. */
    private static CLIParser cli = CLIParser.getCLIParser();
    //#Main.java:46: method: com.dmdirc.installer.Main.com.dmdirc.installer.Main__static_init
    //#input(com.dmdirc.installer.Main__static_init): com/dmdirc/installer/cliparser/CLIParser.__Class_Obj.__Lock
    //#input(com.dmdirc.installer.Main__static_init): com/dmdirc/installer/cliparser/CLIParser.me
    //#output(com.dmdirc.installer.Main__static_init): __Descendant_Table[com/dmdirc/installer/Main]
    //#output(com.dmdirc.installer.Main__static_init): __Dispatch_Table.disposeOfInstaller()V
    //#output(com.dmdirc.installer.Main__static_init): cli
    //#output(com.dmdirc.installer.Main__static_init): com/dmdirc/installer/cliparser/CLIParser.me
    //#output(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#2) num objects
    //#output(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#3) num objects
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1) num objects
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).__Tag
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).helpParam
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).paramList
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).params
    //#output(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).redundant
    //#output(com.dmdirc.installer.Main__static_init): new Hashtable(CLIParser#1) num objects
    //#new obj(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#2)
    //#new obj(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#3)
    //#new obj(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1)
    //#new obj(com.dmdirc.installer.Main__static_init): new Hashtable(CLIParser#1)
    //#pre[1] (com.dmdirc.installer.Main__static_init): init'ed(com/dmdirc/installer/cliparser/CLIParser.me)
    //#post(com.dmdirc.installer.Main__static_init): __Descendant_Table[com/dmdirc/installer/Main] == &__Dispatch_Table
    //#post(com.dmdirc.installer.Main__static_init): __Dispatch_Table.disposeOfInstaller()V == &disposeOfInstaller
    //#post(com.dmdirc.installer.Main__static_init): cli == One-of{old com/dmdirc/installer/cliparser/CLIParser.me, &new CLIParser(getCLIParser#1)}
    //#post(com.dmdirc.installer.Main__static_init): cli != null
    //#post(com.dmdirc.installer.Main__static_init): com/dmdirc/installer/cliparser/CLIParser.me == cli
    //#post(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#2) num objects <= 1
    //#post(com.dmdirc.installer.Main__static_init): new ArrayList(CLIParser#3) num objects == new ArrayList(CLIParser#2) num objects
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1) num objects == new ArrayList(CLIParser#2) num objects
    //#post(com.dmdirc.installer.Main__static_init): new Hashtable(CLIParser#1) num objects == new ArrayList(CLIParser#2) num objects
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).__Tag == com/dmdirc/installer/cliparser/CLIParser
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).helpParam == null
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).paramList == &new ArrayList(CLIParser#2)
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).params == &new Hashtable(CLIParser#1)
    //#post(com.dmdirc.installer.Main__static_init): new CLIParser(getCLIParser#1).redundant == &new ArrayList(CLIParser#3)
    //#unanalyzed(com.dmdirc.installer.Main__static_init): Effects-of-calling:java.util.Hashtable
    //#unanalyzed(com.dmdirc.installer.Main__static_init): Effects-of-calling:java.util.ArrayList
    //#Main.java:46: end of method: com.dmdirc.installer.Main.com.dmdirc.installer.Main__static_init

    /**
     * Creates and Displays the Installer wizard.
     */
    private Main() {
    //#Main.java:51: method: void com.dmdirc.installer.Main.com.dmdirc.installer.Main()
    //#input(void com.dmdirc.installer.Main()): " "._tainted
    //#input(void com.dmdirc.installer.Main()): " Installer"._tainted
    //#input(void com.dmdirc.installer.Main()): " installer. This program "._tainted
    //#input(void com.dmdirc.installer.Main()): " of "._tainted
    //#input(void com.dmdirc.installer.Main()): " shortcut"._tainted
    //#input(void com.dmdirc.installer.Main()): ""._tainted
    //#input(void com.dmdirc.installer.Main()): "&#10;"._tainted
    //#input(void com.dmdirc.installer.Main()): "Confirm"._tainted
    //#input(void com.dmdirc.installer.Main()): "Create "._tainted
    //#input(void com.dmdirc.installer.Main()): "DMDirc"._tainted
    //#input(void com.dmdirc.installer.Main()): "Error"._tainted
    //#input(void com.dmdirc.installer.Main()): "Install"._tainted
    //#input(void com.dmdirc.installer.Main()): "Mc Cormack and Gregory Holmes. DMDirc is released for free "._tainted
    //#input(void com.dmdirc.installer.Main()): "Settings"._tainted
    //#input(void com.dmdirc.installer.Main()): "Step "._tainted
    //#input(void com.dmdirc.installer.Main()): "Welcome to the "._tainted
    //#input(void com.dmdirc.installer.Main()): "Welcome"._tainted
    //#input(void com.dmdirc.installer.Main()): "cross-platform IRC client developed by Chris Smith, Shane "._tainted
    //#input(void com.dmdirc.installer.Main()): "this program to cancel the installation."._tainted
    //#input(void com.dmdirc.installer.Main()): "under the MIT license; for more information, please visit "._tainted
    //#input(void com.dmdirc.installer.Main()): "will install DMDirc on this computer.&#10;&#10;DMDirc is a "._tainted
    //#input(void com.dmdirc.installer.Main()): "www.DMDirc.com.&#10;&#10;Click "Next" to continue, or close "._tainted
    //#input(void com.dmdirc.installer.Main()): __Class_Obj.__Lock
    //#input(void com.dmdirc.installer.Main()): cli
    //#input(void com.dmdirc.installer.Main()): cli.__Tag
    //#input(void com.dmdirc.installer.Main()): cli.params
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/BooleanParam.__Descendant_Table[com/dmdirc/installer/cliparser/BooleanParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/BooleanParam.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/BooleanParam.__Dispatch_Table.getStringValue()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/BooleanParam.__Dispatch_Table.getValue()Z
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/BooleanParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/IntegerParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/StringParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParam.__Dispatch_Table.getStringValue()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.__Class_Obj.__Lock
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParser]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.getParam(Ljava/lang/String;)Lcom/dmdirc/installer/cliparser/CLIParam;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.getParamNumber(Ljava/lang/String;)I
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.me
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.me.__Tag
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.me.params
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/IntegerParam.__Descendant_Table[com/dmdirc/installer/cliparser/IntegerParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/IntegerParam.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/IntegerParam.__Dispatch_Table.getStringValue()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/IntegerParam.__Dispatch_Table.getValue()I
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/StringParam.__Descendant_Table[com/dmdirc/installer/cliparser/StringParam]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/StringParam.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/StringParam.__Dispatch_Table.getStringValue()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/StringParam.__Dispatch_Table.getValue()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/EtchedLineBorder$BorderSide.BOTTOM
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/EtchedLineBorder$BorderSide.TOP
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.addStep(Lcom/dmdirc/installer/ui/SwingStep;)V
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.addStepListener(Lcom/dmdirc/installer/StepListener;)V
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.addWizardListener(Lcom/dmdirc/installer/WizardListener;)V
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.com.dmdirc.installer.Installer$ShortcutType.DESKTOP
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.com.dmdirc.installer.Installer$ShortcutType.MENU
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.com.dmdirc.installer.Installer$ShortcutType.PROTOCOL
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepSettings.com.dmdirc.installer.Installer$ShortcutType.QUICKLAUNCH
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/TitlePanel.java.awt.Color.WHITE
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getNextButton()Ljavax/swing/JButton;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.getPrevButton()Ljavax/swing/JButton;
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void com.dmdirc.installer.Main()): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.addStep(Lcom/dmdirc/installer/ui/SwingStep;)V
    //#input(void com.dmdirc.installer.Main()): myInstaller
    //#input(void com.dmdirc.installer.Main()): this
    //#input(void com.dmdirc.installer.Main()): wizardDialog.__Tag
    //#input(void com.dmdirc.installer.Main()): wizardDialog.listeners
    //#input(void com.dmdirc.installer.Main()): wizardDialog.wizard
    //#input(void com.dmdirc.installer.Main()): wizardDialog.wizard.__Tag
    //#output(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.me
    //#output(void com.dmdirc.installer.Main()): myInstaller
    //#output(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#2) num objects
    //#output(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#3) num objects
    //#output(void com.dmdirc.installer.Main()): new ArrayList(StepLayout#1) num objects
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1) num objects
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1).__Tag
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1).helpParam
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1).paramList
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1).params
    //#output(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1).redundant
    //#output(void com.dmdirc.installer.Main()): new Hashtable(CLIParser#1) num objects
    //#output(void com.dmdirc.installer.Main()): new InstallerDialog(Main#2) num objects
    //#output(void com.dmdirc.installer.Main()): wizardDialog.__Tag
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control
    //#output(void com.dmdirc.installer.Main()): wizardDialog.listeners
    //#output(void com.dmdirc.installer.Main()): wizardDialog.title
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard
    //#output(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#1) num objects
    //#output(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#2) num objects
    //#output(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#2) num objects
    //#output(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#3) num objects
    //#output(void com.dmdirc.installer.Main()): new JLabel(WizardControlPanel#3) num objects
    //#output(void com.dmdirc.installer.Main()): new LinuxInstaller(getInstaller#2) num objects
    //#output(void com.dmdirc.installer.Main()): new LinuxInstaller(getInstaller#2).__Tag
    //#output(void com.dmdirc.installer.Main()): new ListenerList(InstallerDialog#4) num objects
    //#output(void com.dmdirc.installer.Main()): new StepLayout(WizardPanel#1) num objects
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.__Tag
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.currentStep
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.hGap
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.parent
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.steps
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.vGap
    //#output(void com.dmdirc.installer.Main()): new TitlePanel(InstallerDialog#1) num objects
    //#output(void com.dmdirc.installer.Main()): wizardDialog.title.__Tag
    //#output(void com.dmdirc.installer.Main()): wizardDialog.title.image
    //#output(void com.dmdirc.installer.Main()): wizardDialog.title.title
    //#output(void com.dmdirc.installer.Main()): new WindowsInstaller(getInstaller#1) num objects
    //#output(void com.dmdirc.installer.Main()): new WindowsInstaller(getInstaller#1).__Tag
    //#output(void com.dmdirc.installer.Main()): new WizardControlPanel(InstallerDialog#3) num objects
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.__Tag
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.next
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.prev
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.progress
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.step
    //#output(void com.dmdirc.installer.Main()): wizardDialog.control.total
    //#output(void com.dmdirc.installer.Main()): new WizardPanel(InstallerDialog#2) num objects
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.__Tag
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.dialog
    //#output(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout
    //#output(void com.dmdirc.installer.Main()): wizardDialog
    //#new obj(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#2)
    //#new obj(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#3)
    //#new obj(void com.dmdirc.installer.Main()): new ArrayList(StepLayout#1)
    //#new obj(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1)
    //#new obj(void com.dmdirc.installer.Main()): new Hashtable(CLIParser#1)
    //#new obj(void com.dmdirc.installer.Main()): new InstallerDialog(Main#2)
    //#new obj(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#1)
    //#new obj(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#2)
    //#new obj(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#2)
    //#new obj(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#3)
    //#new obj(void com.dmdirc.installer.Main()): new JLabel(WizardControlPanel#3)
    //#new obj(void com.dmdirc.installer.Main()): new LinuxInstaller(getInstaller#2)
    //#new obj(void com.dmdirc.installer.Main()): new ListenerList(InstallerDialog#4)
    //#new obj(void com.dmdirc.installer.Main()): new StepLayout(WizardPanel#1)
    //#new obj(void com.dmdirc.installer.Main()): new TitlePanel(InstallerDialog#1)
    //#new obj(void com.dmdirc.installer.Main()): new WindowsInstaller(getInstaller#1)
    //#new obj(void com.dmdirc.installer.Main()): new WizardControlPanel(InstallerDialog#3)
    //#new obj(void com.dmdirc.installer.Main()): new WizardPanel(InstallerDialog#2)
    //#pre[1] (void com.dmdirc.installer.Main()): cli != null
    //#pre[2] (void com.dmdirc.installer.Main()): cli.__Tag == com/dmdirc/installer/cliparser/CLIParser
    //#pre[3] (void com.dmdirc.installer.Main()): cli.params != null
    //#pre[4] (void com.dmdirc.installer.Main()): (soft) init'ed(com/dmdirc/installer/cliparser/CLIParser.me)
    //#pre[5] (void com.dmdirc.installer.Main()): (soft) init'ed(myInstaller)
    //#presumption(void com.dmdirc.installer.Main()): getCLIParser(...).__Tag == com/dmdirc/installer/cliparser/CLIParser
    //#presumption(void com.dmdirc.installer.Main()): getCLIParser(...).params != null
    //#presumption(void com.dmdirc.installer.Main()): java.lang.System:getProperty(...)@68 != null
    //#post(void com.dmdirc.installer.Main()): com/dmdirc/installer/cliparser/CLIParser.me == One-of{old com/dmdirc/installer/cliparser/CLIParser.me, &new CLIParser(getCLIParser#1)}
    //#post(void com.dmdirc.installer.Main()): init'ed(com/dmdirc/installer/cliparser/CLIParser.me)
    //#post(void com.dmdirc.installer.Main()): myInstaller == One-of{old myInstaller, &new WindowsInstaller(getInstaller#1), &new LinuxInstaller(getInstaller#2)}
    //#post(void com.dmdirc.installer.Main()): init'ed(myInstaller)
    //#post(void com.dmdirc.installer.Main()): wizardDialog == &new InstallerDialog(Main#2)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard.dialog == &new InstallerDialog(Main#2)
    //#post(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#2) num objects <= 1
    //#post(void com.dmdirc.installer.Main()): new ArrayList(CLIParser#3) num objects <= 1
    //#post(void com.dmdirc.installer.Main()): new ArrayList(StepLayout#1) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new InstallerDialog(Main#2) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#1) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new JButton(WizardControlPanel#2) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#2) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new JLabel(TitlePanel#3) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new JLabel(WizardControlPanel#3) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new ListenerList(InstallerDialog#4) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new StepLayout(WizardPanel#1) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new TitlePanel(InstallerDialog#1) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new WizardControlPanel(InstallerDialog#3) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new WizardPanel(InstallerDialog#2) num objects == 1
    //#post(void com.dmdirc.installer.Main()): new CLIParser(getCLIParser#1) num objects <= 1
    //#post(void com.dmdirc.installer.Main()): init'ed(new CLIParser(getCLIParser#1).__Tag)
    //#post(void com.dmdirc.installer.Main()): init'ed(new CLIParser(getCLIParser#1).helpParam)
    //#post(void com.dmdirc.installer.Main()): init'ed(new CLIParser(getCLIParser#1).paramList)
    //#post(void com.dmdirc.installer.Main()): init'ed(new CLIParser(getCLIParser#1).params)
    //#post(void com.dmdirc.installer.Main()): init'ed(new CLIParser(getCLIParser#1).redundant)
    //#post(void com.dmdirc.installer.Main()): new Hashtable(CLIParser#1) num objects <= 1
    //#post(void com.dmdirc.installer.Main()): wizardDialog.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#post(void com.dmdirc.installer.Main()): wizardDialog.control == &new WizardControlPanel(InstallerDialog#3)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.listeners == &new ListenerList(InstallerDialog#4)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.title == &new TitlePanel(InstallerDialog#1)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard == &new WizardPanel(InstallerDialog#2)
    //#post(void com.dmdirc.installer.Main()): new LinuxInstaller(getInstaller#2) num objects == 0
    //#post(void com.dmdirc.installer.Main()): init'ed(new LinuxInstaller(getInstaller#2).__Tag)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.wizard.layout.currentStep)
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.wizard.layout.hGap)
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.wizard.layout.parent)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout.steps == &new ArrayList(StepLayout#1)
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.wizard.layout.vGap)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#post(void com.dmdirc.installer.Main()): wizardDialog.title.image == &new JLabel(TitlePanel#3)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.title.title == &new JLabel(TitlePanel#2)
    //#post(void com.dmdirc.installer.Main()): new WindowsInstaller(getInstaller#1) num objects == 0
    //#post(void com.dmdirc.installer.Main()): init'ed(new WindowsInstaller(getInstaller#1).__Tag)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#post(void com.dmdirc.installer.Main()): wizardDialog.control.next == &new JButton(WizardControlPanel#2)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.control.prev == &new JButton(WizardControlPanel#1)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.control.progress == &new JLabel(WizardControlPanel#3)
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.control.step)
    //#post(void com.dmdirc.installer.Main()): init'ed(wizardDialog.control.total)
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#post(void com.dmdirc.installer.Main()): wizardDialog.wizard.layout == &new StepLayout(WizardPanel#1)
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.util.Hashtable
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.Main
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.UIManager:getSystemLookAndFeelClassName
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.UIManager:setLookAndFeel
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.UIManager:put
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.UnsupportedOperationException
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:getStepDescription
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:getStepName
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:getIcon
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JFrame
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.BorderLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JLabel:getFont
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JLabel:setFont
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:setBackground
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.border.EtchedBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:setBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JButton:getFont
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JButton:setPreferredSize
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:setBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.BoxLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.Box:createHorizontalGlue
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.Box:createHorizontalStrut
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TitlePanel:getBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.BorderFactory:createCompoundBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:getBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:setBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardControlPanel:getBorder
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.Thread:currentThread
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.Thread:getContextClassLoader
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.ClassLoader:getResource
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Toolkit:createImage
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setIconImage
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setPreferredSize
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setMaximumSize
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.util.ListenerList:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.SwingStep:getStepName
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.WizardPanel:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.Installer
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.LinuxInstaller
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.SwingStep
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepWelcome:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.text.DefaultStyledDocument
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JTextPane
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TextLabel:setOpaque
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TextLabel:setEditable
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TextLabel:setHighlighter
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TextLabel:setMargin
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.TextLabel:setText
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepWelcome:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepError:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepError:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.Installer:getMenuName
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.Installer:defaultInstallLocation
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.DefaultSettings
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.DefaultSettings:getShortcutMenuState
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JCheckBox:setSelected
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.DefaultSettings:getShortcutDesktopState
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.DefaultSettings:getShortcutQuickState
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.DefaultSettings:getShortcutProtocolState
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.GridBagConstraints
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:java.awt.GridBagLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepSettings:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepSettings:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.Installer:supportsShortcut
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.Box:createVerticalGlue
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepConfirm:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepConfirm:add
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepInstall:setLayout
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.installer.Main()): Effects-of-calling:com.dmdirc.installer.ui.StepInstall:add
    //#test_vector(void com.dmdirc.installer.Main()): java.lang.String:startsWith(...)@70: {0}, {1}
        try {
            InstallerDialog.initUISettings();
        } catch (UnsupportedOperationException ex) {
            //Ignore, revert to default
        }

        String releaseName = "DMDirc";
        if (cli.getParamNumber("-release") > 0) {
            releaseName = releaseName + " " + cli.getParam("-release").
    //#Main.java:60: ?null dereference
    //#    getParam(...) != null
    //#    severity: MEDIUM
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    basic block: bb_5
    //#    assertion: getParam(...) != null
    //#    VN: getParam(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#Main.java:60: ?use of default init
    //#    init'ed(getParam(...).__Tag)
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    basic block: bb_5
    //#    assertion: init'ed(getParam(...).__Tag)
    //#    VN: getParam(...).__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#Main.java:60: ?null dereference
    //#    com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[getParam(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    basic block: bb_5
    //#    assertion: com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[getParam(...).__Tag] != null
    //#    VN: com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[getParam(...).__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#Main.java:60: ?precondition failure
    //#    com/dmdirc/installer/cliparser/IntegerParam.getStringValue: this.__Tag == com/dmdirc/installer/cliparser/IntegerParam
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    basic block: bb_5
    //#    assertion: getParam(...).__Tag in {com/dmdirc/installer/cliparser/BooleanParam, com/dmdirc/installer/cliparser/IntegerParam, com/dmdirc/installer/cliparser/StringParam}
    //#    callee: String com/dmdirc/installer/cliparser/IntegerParam.getStringValue()
    //#    callee assertion: this.__Tag == com/dmdirc/installer/cliparser/IntegerParam
    //#    callee file: IntegerParam.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 73
    //#    VN: getParam(...).__Tag
    //#    Expected: {409_600, 411_392, 411_904}
    //#    Bad: {410_368}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
                    getStringValue();
        }

        setWizardFrame(new InstallerDialog(releaseName + " Installer"));
        getWizardFrame().addWizardListener(new InstallerListener(this));
    //#Main.java:65: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.InstallerListener(Main)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    unanalyzed callee: void com.dmdirc.installer.InstallerListener(Main)
        getWizardFrame().addStepListener(new InstallerListener(this));
    //#Main.java:66: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.installer.InstallerListener(Main)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.Main
    //#    method: void com.dmdirc.installer.Main()
    //#    unanalyzed callee: void com.dmdirc.installer.InstallerListener(Main)

        final String osName = System.getProperty("os.name");
        wizardDialog.addStep(new StepWelcome(releaseName));
        if (osName.startsWith("Mac OS")) {
            wizardDialog.addStep(
                    new StepError(
                    "Sorry, OSX Installation should be done using the downloadable dmg file, not this installer.\n\n"));
        } else {
            if (CLIParser.getCLIParser().getParamNumber("-unattended") == 0) {
                wizardDialog.addStep(new StepSettings());
                wizardDialog.addStep(new StepConfirm());
            }
            wizardDialog.addStep(new StepInstall());
        }
    }
    //#Main.java:81: end of method: void com.dmdirc.installer.Main.com.dmdirc.installer.Main()

    /**
     * Disposes of the current installer.
     */
    public void disposeOfInstaller() {
        final Thread temp = myInstaller;
    //#Main.java:87: method: void com.dmdirc.installer.Main.disposeOfInstaller()
    //#input(void disposeOfInstaller()): myInstaller
    //#output(void disposeOfInstaller()): myInstaller
    //#pre[1] (void disposeOfInstaller()): init'ed(myInstaller)
    //#post(void disposeOfInstaller()): myInstaller == null
    //#test_vector(void disposeOfInstaller()): myInstaller: Addr_Set{null}, Inverse{null}
        myInstaller = null;
        if (temp != null) {
            temp.interrupt();
        }
    }
    //#Main.java:92: end of method: void com.dmdirc.installer.Main.disposeOfInstaller()

    /**
     * Get the Installer object for this OS.
     *
     * @return The installer for this OS
     */
    public static synchronized Installer getInstaller() {
        if (myInstaller == null) {
    //#Main.java:100: method: Installer com.dmdirc.installer.Main.getInstaller()
    //#input(Installer getInstaller()): __Class_Obj.__Lock
    //#input(Installer getInstaller()): myInstaller
    //#output(Installer getInstaller()): myInstaller
    //#output(Installer getInstaller()): new LinuxInstaller(getInstaller#2) num objects
    //#output(Installer getInstaller()): new LinuxInstaller(getInstaller#2).__Tag
    //#output(Installer getInstaller()): new WindowsInstaller(getInstaller#1) num objects
    //#output(Installer getInstaller()): new WindowsInstaller(getInstaller#1).__Tag
    //#output(Installer getInstaller()): return_value
    //#new obj(Installer getInstaller()): new LinuxInstaller(getInstaller#2)
    //#new obj(Installer getInstaller()): new WindowsInstaller(getInstaller#1)
    //#pre[1] (Installer getInstaller()): init'ed(myInstaller)
    //#presumption(Installer getInstaller()): java.lang.System:getProperty(...)@101 != null
    //#post(Installer getInstaller()): myInstaller == One-of{old myInstaller, &new WindowsInstaller(getInstaller#1), &new LinuxInstaller(getInstaller#2)}
    //#post(Installer getInstaller()): init'ed(myInstaller)
    //#post(Installer getInstaller()): return_value == myInstaller
    //#post(Installer getInstaller()): new LinuxInstaller(getInstaller#2) num objects <= 1
    //#post(Installer getInstaller()): init'ed(new LinuxInstaller(getInstaller#2).__Tag)
    //#post(Installer getInstaller()): new WindowsInstaller(getInstaller#1) num objects <= 1
    //#post(Installer getInstaller()): init'ed(new WindowsInstaller(getInstaller#1).__Tag)
    //#unanalyzed(Installer getInstaller()): Effects-of-calling:com.dmdirc.installer.Installer
    //#test_vector(Installer getInstaller()): myInstaller: Inverse{null}, Addr_Set{null}
    //#test_vector(Installer getInstaller()): java.lang.String:startsWith(...)@104: {0}, {1}
            final String osName = System.getProperty("os.name");
            if (osName.startsWith("Mac OS")) {
                // myInstaller = new MacInstaller();
            } else if (osName.startsWith("Windows")) {
                myInstaller = new WindowsInstaller();
            } else {
                myInstaller = new LinuxInstaller();
            }
        }

        return myInstaller;
    //#Main.java:111: end of method: Installer com.dmdirc.installer.Main.getInstaller()
    }

    /**
     * Setup the cli parser.
     * This clears the current CLIParser params and creates new ones.
     */
    private static void setupCLIParser() {
        cli.clear();
    //#Main.java:119: method: void com.dmdirc.installer.Main.setupCLIParser()
    //#input(void setupCLIParser()): "-"._tainted
    //#input(void setupCLIParser()): "directory"._tainted
    //#input(void setupCLIParser()): "help"._tainted
    //#input(void setupCLIParser()): "isroot"._tainted
    //#input(void setupCLIParser()): "no-shortcut-desktop"._tainted
    //#input(void setupCLIParser()): "no-shortcut-menu"._tainted
    //#input(void setupCLIParser()): "no-shortcut-protocol"._tainted
    //#input(void setupCLIParser()): "no-shortcut-quicklaunch"._tainted
    //#input(void setupCLIParser()): "release"._tainted
    //#input(void setupCLIParser()): "unattended"._tainted
    //#input(void setupCLIParser()): cli
    //#input(void setupCLIParser()): cli.__Tag
    //#input(void setupCLIParser()): cli.paramList
    //#input(void setupCLIParser()): cli.params
    //#input(void setupCLIParser()): cli.redundant
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/BooleanParam]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParam]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/IntegerParam]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/StringParam]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[others]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParser]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[others]
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.add(Lcom/dmdirc/installer/cliparser/CLIParam;)Z
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.clear()V
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.getParam(Ljava/lang/String;)Lcom/dmdirc/installer/cliparser/CLIParam;
    //#input(void setupCLIParser()): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.setHelp(Lcom/dmdirc/installer/cliparser/CLIParam;)V
    //#output(void setupCLIParser()): cli.helpParam
    //#pre[1] (void setupCLIParser()): cli != null
    //#pre[2] (void setupCLIParser()): cli.__Tag == com/dmdirc/installer/cliparser/CLIParser
    //#pre[3] (void setupCLIParser()): cli.paramList != null
    //#pre[4] (void setupCLIParser()): cli.params != null
    //#pre[5] (void setupCLIParser()): cli.redundant != null
    //#post(void setupCLIParser()): init'ed(cli.helpParam)
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.Map:clear
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.List:clear
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:com.dmdirc.installer.cliparser.CLIParam
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void setupCLIParser()): Effects-of-calling:java.util.List:add
        cli.add(new StringParam('h', "help", "Get Help"));
        cli.setHelp(cli.getParam("-help"));
        cli.add(new BooleanParam((char) 0, "isroot", "Installing as Root"));
        cli.add(new StringParam('r', "release", "Release Name"));
        cli.add(new StringParam('d', "directory", "Default install directory"));
        cli.add(new BooleanParam('u', "unattended",
                                 "Perform an unattended installation"));
        cli.add(new BooleanParam((char) 0, "no-shortcut-desktop",
                                 "Don't offer a desktop shortcut as the default"));
        cli.add(new BooleanParam((char) 0, "no-shortcut-menu",
                                 "Don't offer a menu shortcut as the default"));
        cli.add(new BooleanParam((char) 0, "no-shortcut-quicklaunch",
                                 "Don't offer a quick launch shortcut as the default"));
        cli.add(new BooleanParam((char) 0, "no-shortcut-protocol",
                                 "Don't offer to handle irc:// links as the default"));
    }
    //#Main.java:135: end of method: void com.dmdirc.installer.Main.setupCLIParser()

    /**
     * Get the WizardFrame.
     *
     * @return The current wizardDialog
     */
    public static synchronized InstallerDialog getWizardFrame() {
        if (wizardDialog == null) {
    //#Main.java:143: method: InstallerDialog com.dmdirc.installer.Main.getWizardFrame()
    //#input(InstallerDialog getWizardFrame()): __Class_Obj.__Lock
    //#input(InstallerDialog getWizardFrame()): wizardDialog
    //#output(InstallerDialog getWizardFrame()): return_value
    //#pre[1] (InstallerDialog getWizardFrame()): init'ed(wizardDialog)
    //#post(InstallerDialog getWizardFrame()): return_value == wizardDialog
    //#post(InstallerDialog getWizardFrame()): init'ed(return_value)
    //#test_vector(InstallerDialog getWizardFrame()): wizardDialog: Inverse{null}, Addr_Set{null}
            new Main();
    //#Main.java:144: Warning: call too complex - analysis skipped
    //#    call on void com.dmdirc.installer.Main()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.installer.Main
    //#    method: InstallerDialog getWizardFrame()
    //#    unanalyzed callee: void com.dmdirc.installer.Main()
        }
        return wizardDialog;
    //#Main.java:146: end of method: InstallerDialog com.dmdirc.installer.Main.getWizardFrame()
    }

    /**
     * Set the WizardFrame.
     *
     * @param dialog The new WizardDialog
     */
    private static void setWizardFrame(final InstallerDialog dialog) {
        wizardDialog = dialog;
    //#Main.java:155: method: void com.dmdirc.installer.Main.setWizardFrame(InstallerDialog)
    //#input(void setWizardFrame(InstallerDialog)): dialog
    //#output(void setWizardFrame(InstallerDialog)): wizardDialog
    //#post(void setWizardFrame(InstallerDialog)): wizardDialog == dialog
    //#post(void setWizardFrame(InstallerDialog)): init'ed(wizardDialog)
    }
    //#Main.java:156: end of method: void com.dmdirc.installer.Main.setWizardFrame(InstallerDialog)

    /**
     * Run the installer.
     *
     * @param args Command line arguments
     */
    public static void main(final String[] args) {
        setupCLIParser();
    //#Main.java:164: method: void com.dmdirc.installer.Main.main(String[])
    //#input(void main(String[])): " "._tainted
    //#input(void main(String[])): " of "._tainted
    //#input(void main(String[])): " to get help."._tainted
    //#input(void main(String[])): ""._tainted
    //#input(void main(String[])): "&#09;"._tainted
    //#input(void main(String[])): "&#10;"._tainted
    //#input(void main(String[])): "-"._tainted
    //#input(void main(String[])): "--"._tainted
    //#input(void main(String[])): "Confirm"._tainted
    //#input(void main(String[])): "Error"._tainted
    //#input(void main(String[])): "Install"._tainted
    //#input(void main(String[])): "Settings"._tainted
    //#input(void main(String[])): "Step "._tainted
    //#input(void main(String[])): "Unknown Param: -"._tainted
    //#input(void main(String[])): "Use "._tainted
    //#input(void main(String[])): "Welcome"._tainted
    //#input(void main(String[])): "directory"._tainted
    //#input(void main(String[])): "help"._tainted
    //#input(void main(String[])): "isroot"._tainted
    //#input(void main(String[])): "no-shortcut-desktop"._tainted
    //#input(void main(String[])): "no-shortcut-menu"._tainted
    //#input(void main(String[])): "no-shortcut-protocol"._tainted
    //#input(void main(String[])): "no-shortcut-quicklaunch"._tainted
    //#input(void main(String[])): "release"._tainted
    //#input(void main(String[])): "unattended"._tainted
    //#input(void main(String[])): __Class_Obj.__Lock
    //#input(void main(String[])): args
    //#input(void main(String[])): args.length
    //#input(void main(String[])): args[0..4_294_967_295]
    //#input(void main(String[])): args[0..4_294_967_295]._tainted
    //#input(void main(String[])): cli
    //#input(void main(String[])): cli.__Tag
    //#input(void main(String[])): cli.helpParam.charFlag
    //#input(void main(String[])): cli.helpParam.stringFlag
    //#input(void main(String[])): cli.helpParam.stringFlag._tainted
    //#input(void main(String[])): cli.paramList
    //#input(void main(String[])): cli.params
    //#input(void main(String[])): cli.redundant
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/Step]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepConfirm]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepError]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepInstall]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepSettings]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/StepWelcome]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[com/dmdirc/installer/ui/SwingStep]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/Step.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/Step.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/Step.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/StepListener.__Descendant_Table[com/dmdirc/installer/StepListener]
    //#input(void main(String[])): com/dmdirc/installer/StepListener.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/StepListener.__Dispatch_Table.stepAboutToDisplay(Lcom/dmdirc/installer/Step;)V
    //#input(void main(String[])): com/dmdirc/installer/cliparser/BooleanParam.__Dispatch_Table.setValue(Ljava/lang/String;)Z
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/BooleanParam]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParam]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/IntegerParam]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[com/dmdirc/installer/cliparser/StringParam]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParam.__Dispatch_Table.setValue(Ljava/lang/String;)Z
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[com/dmdirc/installer/cliparser/CLIParser]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.add(Lcom/dmdirc/installer/cliparser/CLIParam;)Z
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.clear()V
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.getParam(Ljava/lang/String;)Lcom/dmdirc/installer/cliparser/CLIParam;
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.getParamList()Ljava/util/List;
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.parseArgs([Ljava/lang/String;Z)V
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.setHelp(Lcom/dmdirc/installer/cliparser/CLIParam;)V
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.showHelp(Ljava/lang/String;Ljava/lang/String;)V
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.__Dispatch_Table.wantsHelp([Ljava/lang/String;)Z
    //#input(void main(String[])): com/dmdirc/installer/cliparser/CLIParser.java.lang.System.out
    //#input(void main(String[])): com/dmdirc/installer/cliparser/IntegerParam.__Dispatch_Table.setValue(Ljava/lang/String;)Z
    //#input(void main(String[])): com/dmdirc/installer/cliparser/StringParam.__Dispatch_Table.setValue(Ljava/lang/String;)Z
    //#input(void main(String[])): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[com/dmdirc/installer/ui/InstallerDialog]
    //#input(void main(String[])): com/dmdirc/installer/ui/InstallerDialog.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.display()V
    //#input(void main(String[])): com/dmdirc/installer/ui/InstallerDialog.__Dispatch_Table.fireStepAboutToBeDisplayed(Lcom/dmdirc/installer/Step;)V
    //#input(void main(String[])): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepConfirm.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepError.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepInstall.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[com/dmdirc/installer/ui/StepLayout]
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.first(Ljava/awt/Container;)V
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.getSteps()Ljava/util/List;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepLayout.__Dispatch_Table.show(ILjava/awt/Container;)V
    //#input(void main(String[])): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepSettings.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/StepWelcome.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getIcon()Ljava/awt/Image;
    //#input(void main(String[])): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepDescription()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/SwingStep.__Dispatch_Table.getStepName()Ljava/lang/String;
    //#input(void main(String[])): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[com/dmdirc/installer/ui/TitlePanel]
    //#input(void main(String[])): com/dmdirc/installer/ui/TitlePanel.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/ui/TitlePanel.__Dispatch_Table.setStep(Lcom/dmdirc/installer/Step;)V
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardControlPanel]
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardControlPanel.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setProgress(I)V
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.setTotal(I)V
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardControlPanel.__Dispatch_Table.updateProgressLabel()V
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[com/dmdirc/installer/ui/WizardPanel]
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Descendant_Table[others]
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.display()V
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStep()Lcom/dmdirc/installer/Step;
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getCurrentStepIndex()I
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getStep(I)Lcom/dmdirc/installer/Step;
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.getTotalSteps()I
    //#input(void main(String[])): com/dmdirc/installer/ui/WizardPanel.__Dispatch_Table.showFirst()V
    //#input(void main(String[])): wizardDialog
    //#input(void main(String[])): wizardDialog.__Tag
    //#input(void main(String[])): wizardDialog.control
    //#input(void main(String[])): wizardDialog.control.__Tag
    //#input(void main(String[])): wizardDialog.control.next
    //#input(void main(String[])): wizardDialog.control.prev
    //#input(void main(String[])): wizardDialog.control.progress
    //#input(void main(String[])): wizardDialog.control.step
    //#input(void main(String[])): wizardDialog.listeners
    //#input(void main(String[])): wizardDialog.title
    //#input(void main(String[])): wizardDialog.title.__Tag
    //#input(void main(String[])): wizardDialog.title.image
    //#input(void main(String[])): wizardDialog.title.title
    //#input(void main(String[])): wizardDialog.wizard
    //#input(void main(String[])): wizardDialog.wizard.__Tag
    //#input(void main(String[])): wizardDialog.wizard.layout
    //#input(void main(String[])): wizardDialog.wizard.layout.__Tag
    //#input(void main(String[])): wizardDialog.wizard.layout.currentStep
    //#input(void main(String[])): wizardDialog.wizard.layout.steps
    //#output(void main(String[])): cli.helpParam
    //#output(void main(String[])): java.lang.String:substring(...)._tainted
    //#output(void main(String[])): wizardDialog.control.step
    //#output(void main(String[])): wizardDialog.control.total
    //#output(void main(String[])): wizardDialog.wizard.layout.currentStep
    //#new obj(void main(String[])): java.lang.String:substring(...)
    //#pre[1] (void main(String[])): args != null
    //#pre[2] (void main(String[])): args.length <= 4_294_967_295
    //#pre[3] (void main(String[])): args[0..4_294_967_295] != null
    //#pre[5] (void main(String[])): cli != null
    //#pre[6] (void main(String[])): cli.__Tag == com/dmdirc/installer/cliparser/CLIParser
    //#pre[9] (void main(String[])): cli.paramList != null
    //#pre[10] (void main(String[])): cli.params != null
    //#pre[11] (void main(String[])): cli.redundant != null
    //#pre[12] (void main(String[])): init'ed(wizardDialog.control.step)
    //#pre[13] (void main(String[])): init'ed(wizardDialog.wizard.layout.currentStep)
    //#pre[14] (void main(String[])): wizardDialog != null
    //#pre[15] (void main(String[])): wizardDialog.__Tag == com/dmdirc/installer/ui/InstallerDialog
    //#pre[16] (void main(String[])): wizardDialog.control != null
    //#pre[17] (void main(String[])): wizardDialog.control.__Tag == com/dmdirc/installer/ui/WizardControlPanel
    //#pre[18] (void main(String[])): wizardDialog.control.next != null
    //#pre[19] (void main(String[])): wizardDialog.control.prev != null
    //#pre[20] (void main(String[])): wizardDialog.control.progress != null
    //#pre[21] (void main(String[])): wizardDialog.listeners != null
    //#pre[22] (void main(String[])): wizardDialog.title != null
    //#pre[23] (void main(String[])): wizardDialog.title.__Tag == com/dmdirc/installer/ui/TitlePanel
    //#pre[24] (void main(String[])): wizardDialog.title.image != null
    //#pre[25] (void main(String[])): wizardDialog.title.title != null
    //#pre[26] (void main(String[])): wizardDialog.wizard != null
    //#pre[27] (void main(String[])): wizardDialog.wizard.__Tag == com/dmdirc/installer/ui/WizardPanel
    //#pre[28] (void main(String[])): wizardDialog.wizard.layout != null
    //#pre[29] (void main(String[])): wizardDialog.wizard.layout.__Tag == com/dmdirc/installer/ui/StepLayout
    //#pre[30] (void main(String[])): wizardDialog.wizard.layout.steps != null
    //#presumption(void main(String[])): cli.helpParam.stringFlag@165 != null
    //#post(void main(String[])): init'ed(cli.helpParam)
    //#post(void main(String[])): init'ed(java.lang.String:substring(...)._tainted)
    //#post(void main(String[])): wizardDialog.control.step >= -2_147_483_647
    //#post(void main(String[])): init'ed(wizardDialog.control.total)
    //#post(void main(String[])): wizardDialog.wizard.layout.currentStep <= 4_294_967_294
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.Main
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void main(String[])): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void main(String[])): Effects-of-calling:javax.swing.JLabel:setIcon
    //#unanalyzed(void main(String[])): Effects-of-calling:getStepDescription
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void main(String[])): Effects-of-calling:getStepName
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void main(String[])): Effects-of-calling:getIcon
    //#unanalyzed(void main(String[])): Effects-of-calling:javax.swing.ImageIcon
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Map:clear
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.List:clear
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.cliparser.CLIParam
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.Character:valueOf
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:isEmpty
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.List:add
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:charAt
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void main(String[])): Effects-of-calling:java.io.PrintStream:println
    //#unanalyzed(void main(String[])): Effects-of-calling:java.io.PrintStream:print
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void main(String[])): Effects-of-calling:setValue
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.List:get
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void main(String[])): Effects-of-calling:stepAboutToDisplay
    //#unanalyzed(void main(String[])): Effects-of-calling:java.util.List:size
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Container:getTreeLock
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Container:getComponentCount
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Container:getComponent
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Component:isVisible
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Component:setVisible
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Container:validate
    //#unanalyzed(void main(String[])): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void main(String[])): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void main(String[])): Effects-of-calling:showFirst
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.event.WindowAdapter
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:addWindowListener
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:pack
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setDefaultCloseOperation
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.MouseInfo:getPointerInfo
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.PointerInfo:getDevice
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.GraphicsDevice:getDefaultConfiguration
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.GraphicsConfiguration:getBounds
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Window:getHeight
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Window:setLocation
    //#unanalyzed(void main(String[])): Effects-of-calling:com.dmdirc.installer.ui.InstallerDialog:setVisible
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Toolkit:getDefaultToolkit
    //#unanalyzed(void main(String[])): Effects-of-calling:java.lang.ClassLoader:getSystemResource
    //#unanalyzed(void main(String[])): Effects-of-calling:java.awt.Toolkit:createImage
        if (cli.wantsHelp(args)) {
            cli.showHelp("DMDirc installer Help", "[options [--]]");
            System.exit(0);
        }
        cli.parseArgs(args, false);
        getWizardFrame().display();
    }
    //#Main.java:171: end of method: void com.dmdirc.installer.Main.main(String[])
}
    //#Main.java:: end of class: com.dmdirc.installer.Main
