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

package com.dmdirc.addons.addonbrowser;

import com.dmdirc.actions.ActionManager;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.Logger;
import com.dmdirc.util.Downloader;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.File;
import java.io.IOException;

/**
 * Addon info install listener.
 */
public class InstallListener implements ActionListener {

    /** Addon info. */
    private final AddonInfo info;

    /**
     * Instantiates a new install listener.
     * 
     * @param info Addoninfo to install
     */
    public InstallListener(final AddonInfo info) {
    //#InstallListener.java:49: method: void com.dmdirc.addons.addonbrowser.InstallListener.com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)
    //#input(void com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)): info
    //#input(void com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)): this
    //#output(void com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)): this.info
    //#post(void com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)): this.info == info
    //#post(void com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)): init'ed(this.info)
        this.info = info;
    }
    //#InstallListener.java:51: end of method: void com.dmdirc.addons.addonbrowser.InstallListener.com.dmdirc.addons.addonbrowser.InstallListener(AddonInfo)

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        try {
            final File file = File.createTempFile("dmdirc-addon", ".tmp");
    //#InstallListener.java:61: method: void com.dmdirc.addons.addonbrowser.InstallListener.actionPerformed(ActionEvent)
    //#InstallListener.java:61: Warning: suspicious precondition
    //#    The precondition for com.dmdirc.addons.addonbrowser.InstallListener$1__static_init.new int[](InstallListener$1__static_init#1)[0..4_294_967_295] is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.addonbrowser.InstallListener
    //#    method: void actionPerformed(ActionEvent)
    //#    suspicious precondition index: [1]
    //#    Attribs:  Soft
    //#input(void actionPerformed(ActionEvent)): "."._tainted
    //#input(void actionPerformed(ActionEvent)): ".DMDirc"._tainted
    //#input(void actionPerformed(ActionEvent)): ": "._tainted
    //#input(void actionPerformed(ActionEvent)): "DMDirc"._tainted
    //#input(void actionPerformed(ActionEvent)): "I.O error when creating actions directory: "._tainted
    //#input(void actionPerformed(ActionEvent)): "I.O error when loading action: "._tainted
    //#input(void actionPerformed(ActionEvent)): "Library"._tainted
    //#input(void actionPerformed(ActionEvent)): "Preferences"._tainted
    //#input(void actionPerformed(ActionEvent)): "Unable to download addon: "._tainted
    //#input(void actionPerformed(ActionEvent)): "Unable to parse action file: "._tainted
    //#input(void actionPerformed(ActionEvent)): "actions"._tainted
    //#input(void actionPerformed(ActionEvent)): "http:..addons.dmdirc.com.addondownload."._tainted
    //#input(void actionPerformed(ActionEvent)): com.dmdirc.addons.addonbrowser.InstallListener$1__static_init.new int[](InstallListener$1__static_init#1).length
    //#input(void actionPerformed(ActionEvent)): com.dmdirc.addons.addonbrowser.InstallListener$1__static_init.new int[](InstallListener$1__static_init#1)[0..4_294_967_295]
    //#input(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/Main.configdir
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/Main.configdir._tainted
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/Server.__Descendant_Table[com/dmdirc/Server]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/Server.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/Server.__Dispatch_Table.getTabCompleter()Lcom/dmdirc/ui/input/TabCompleter;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/ServerManager.__Class_Obj.__Lock
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/ServerManager.me.servers
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.__Descendant_Table[com/dmdirc/actions/Action]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.__Dispatch_Table.getConditions()Ljava/util/List;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.__Dispatch_Table.getTriggers()[Lcom/dmdirc/actions/interfaces/ActionType;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.__Dispatch_Table.loadActionFromConfig()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.java.io.File.separator
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/Action.java.io.File.separator._tainted
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionCondition.__Descendant_Table[com/dmdirc/actions/ActionCondition]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionCondition.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionCondition.__Dispatch_Table.getArg()I
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionCondition.__Dispatch_Table.getTarget()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Descendant_Table[com/dmdirc/actions/ActionGroup]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Descendant_Table[com/dmdirc/actions/wrappers/AliasWrapper]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Descendant_Table[com/dmdirc/actions/wrappers/PerformWrapper]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Dispatch_Table.clear()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionGroup.__Dispatch_Table.remove(Lcom/dmdirc/actions/Action;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionManager.actions
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionManager.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionManager.com.dmdirc.logger.ErrorLevel.MEDIUM
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/ActionManager.groups
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/CoreActionType.UNKNOWN_COMMAND
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/wrappers/AliasWrapper.__Dispatch_Table.clear()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/wrappers/AliasWrapper.__Dispatch_Table.remove(Lcom/dmdirc/actions/Action;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/wrappers/AliasWrapper.com.dmdirc.ui.input.TabCompletionType.COMMAND
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/wrappers/PerformWrapper.__Dispatch_Table.clear()V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/actions/wrappers/PerformWrapper.__Dispatch_Table.remove(Lcom/dmdirc/actions/Action;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/addonbrowser/AddonInfo.__Descendant_Table[com/dmdirc/addons/addonbrowser/AddonInfo]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/addonbrowser/AddonInfo.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/addonbrowser/AddonInfo.__Dispatch_Table.getStableDownload()Ljava/lang/String;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/addonbrowser/AddonInfo.__Dispatch_Table.getType()Lcom/dmdirc/addons/addonbrowser/AddonInfo$AddonType;
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/addonbrowser/InstallListener$1.$SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.info
    //#input(void actionPerformed(ActionEvent)): this.info.__Tag
    //#input(void actionPerformed(ActionEvent)): this.info.stableDownload
    //#input(void actionPerformed(ActionEvent)): this.info.stableDownload._tainted
    //#input(void actionPerformed(ActionEvent)): this.info.type
    //#output(void actionPerformed(ActionEvent)): com/dmdirc/Main.configdir
    //#output(void actionPerformed(ActionEvent)): com/dmdirc/ServerManager.me
    //#output(void actionPerformed(ActionEvent)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void actionPerformed(ActionEvent)): new ArrayList(ServerManager#1) num objects
    //#output(void actionPerformed(ActionEvent)): new ServerManager(getServerManager#1) num objects
    //#output(void actionPerformed(ActionEvent)): new ServerManager(getServerManager#1).__Tag
    //#output(void actionPerformed(ActionEvent)): new ServerManager(getServerManager#1).servers
    //#new obj(void actionPerformed(ActionEvent)): java.lang.StringBuilder:toString(...)
    //#new obj(void actionPerformed(ActionEvent)): new ArrayList(ServerManager#1)
    //#new obj(void actionPerformed(ActionEvent)): new ServerManager(getServerManager#1)
    //#pre[1] (void actionPerformed(ActionEvent)): (soft) com.dmdirc.addons.addonbrowser.InstallListener$1__static_init.new int[](InstallListener$1__static_init#1)[0..4_294_967_295] not in {2,3}
    //#pre[4] (void actionPerformed(ActionEvent)): (soft) init'ed(com/dmdirc/Main.configdir)
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.info != null
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) this.info.__Tag == com/dmdirc/addons/addonbrowser/AddonInfo
    //#pre[11] (void actionPerformed(ActionEvent)): (soft) this.info.type != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.addonbrowser.AddonInfo_AddonType:ordinal(...)@67 in {0..2}
    //#presumption(void actionPerformed(ActionEvent)): init'ed(com.dmdirc.logger.ErrorLevel.MEDIUM)
    //#presumption(void actionPerformed(ActionEvent)): java.io.File:createTempFile(...)@61 != null
    //#post(void actionPerformed(ActionEvent)): init'ed(com/dmdirc/Main.configdir)
    //#post(void actionPerformed(ActionEvent)): possibly_updated(com/dmdirc/ServerManager.me)
    //#post(void actionPerformed(ActionEvent)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(void actionPerformed(ActionEvent)): init'ed(new ArrayList(ServerManager#1) num objects)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ServerManager(getServerManager#1) num objects)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ServerManager(getServerManager#1).__Tag)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ServerManager(getServerManager#1).servers)
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.logger.Logger:assertTrue
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Map:values
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Collection: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:java.lang.StringBuilder
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getConfigDir
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:isDirectory
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:getName
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.actions.Action
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.updater.components.ActionGroupComponent
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.MapList:clear
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.ArrayList:iterator
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:remove
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getTriggers
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getCommandName
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getTabCompleter
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.ui.input.TabCompleter:removeEntry
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getConditions
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.commandparser.CommandManager:getCommandChar
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.Map:clear
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:mkdirs
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:createNewFile
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.IOException:getMessage
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.logger.Logger:userError
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.io.File:delete
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.resourcemanager.ZipResourceManager:getInstance
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.resourcemanager.ZipResourceManager:extractResources
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.ConfigFile
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.System:getenv
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.ConfigFile:read
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:loadActionFromConfig
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.InvalidConfigFileException:getMessage
    //#test_vector(void actionPerformed(ActionEvent)): com.dmdirc.addons.addonbrowser.InstallListener$1__static_init.new int[](InstallListener$1__static_init#1)[0..4_294_967_295]: {1}, {-2_147_483_648..0, 4..4_294_967_295}
            file.deleteOnExit();

            Downloader.downloadPage("http://addons.dmdirc.com/addondownload/"
    //#InstallListener.java:64: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.Downloader:downloadPage(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.addonbrowser.InstallListener
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.util.Downloader:downloadPage(String, String)
                    + info.getStableDownload(), file.getAbsolutePath());

            switch (info.getType()) {
    //#InstallListener.java:67: method: com.dmdirc.addons.addonbrowser.InstallListener$1.com.dmdirc.addons.addonbrowser.InstallListener$1__static_init
    //#InstallListener.java:67: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.addonbrowser.AddonInfo$AddonType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.addonbrowser.InstallListener$1
    //#    method: com.dmdirc.addons.addonbrowser.InstallListener$1__static_init
    //#    unanalyzed callee: int com.dmdirc.addons.addonbrowser.AddonInfo$AddonType:ordinal()
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com.dmdirc.addons.addonbrowser.AddonInfo$AddonType__static_init.new AddonInfo$AddonType[](AddonInfo$AddonType__static_init#4).length
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com.dmdirc.addons.addonbrowser.AddonInfo$AddonType__static_init.new AddonInfo$AddonType[](AddonInfo$AddonType__static_init#4)[0..3]
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com/dmdirc/addons/addonbrowser/AddonInfo$AddonType.$VALUES
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com/dmdirc/addons/addonbrowser/AddonInfo$AddonType.TYPE_ACTION_PACK
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com/dmdirc/addons/addonbrowser/AddonInfo$AddonType.TYPE_PLUGIN
    //#input(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com/dmdirc/addons/addonbrowser/AddonInfo$AddonType.TYPE_THEME
    //#output(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType
    //#output(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): __Descendant_Table[com/dmdirc/addons/addonbrowser/InstallListener$1]
    //#output(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): new int[](InstallListener$1__static_init#1) num objects
    //#output(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType.length
    //#output(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType[0..4_294_967_295]
    //#new obj(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): new int[](InstallListener$1__static_init#1)
    //#pre[1] (com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): (soft) init'ed(com.dmdirc.addons.addonbrowser.AddonInfo$AddonType__static_init.new AddonInfo$AddonType[](AddonInfo$AddonType__static_init#4)[0..3])
    //#presumption(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com.dmdirc.addons.addonbrowser.AddonInfo_AddonType:ordinal(...)@67 in {0..2}
    //#presumption(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com.dmdirc.addons.addonbrowser.AddonInfo_AddonType:ordinal(...)@67 in {0..2}
    //#presumption(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): com.dmdirc.addons.addonbrowser.AddonInfo_AddonType:ordinal(...)@67 in {0..2}
    //#post(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType == &new int[](InstallListener$1__static_init#1)
    //#post(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): __Descendant_Table[com/dmdirc/addons/addonbrowser/InstallListener$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): new int[](InstallListener$1__static_init#1) num objects == 1
    //#post(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType.length == 3
    //#post(com.dmdirc.addons.addonbrowser.InstallListener$1__static_init): $SwitchMap$com$dmdirc$addons$addonbrowser$AddonInfo$AddonType[0..4_294_967_295] in {0..3}, if init'ed
    //#InstallListener.java:67: end of method: com.dmdirc.addons.addonbrowser.InstallListener$1.com.dmdirc.addons.addonbrowser.InstallListener$1__static_init
    //#InstallListener.java:67: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.addonbrowser.AddonInfo$AddonType:ordinal()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.addonbrowser.InstallListener
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.addonbrowser.AddonInfo$AddonType:ordinal()
                case TYPE_ACTION_PACK:
                    ActionManager.installActionPack(file.getAbsolutePath());
                    break;
                case TYPE_PLUGIN:
                    throw new UnsupportedOperationException("Not supported yet");
                    //break;
                case TYPE_THEME:
                    throw new UnsupportedOperationException("Not supported yet");
                    //break;
            }
        } catch (IOException ex) {
            Logger.userError(ErrorLevel.MEDIUM, "Unable to download addon: "
    //#InstallListener.java:79: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.Logger:userError(ErrorLevel, String, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.addonbrowser.InstallListener
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.logger.Logger:userError(ErrorLevel, String, Throwable)
                    + ex.getMessage(), ex);
        }
    }
    //#InstallListener.java:82: end of method: void com.dmdirc.addons.addonbrowser.InstallListener.actionPerformed(ActionEvent)
}
    //#InstallListener.java:: end of class: com.dmdirc.addons.addonbrowser.InstallListener$1
    //#output(com.dmdirc.addons.addonbrowser.InstallListener__static_init): __Descendant_Table[com/dmdirc/addons/addonbrowser/InstallListener]
    //#output(com.dmdirc.addons.addonbrowser.InstallListener__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#post(com.dmdirc.addons.addonbrowser.InstallListener__static_init): __Descendant_Table[com/dmdirc/addons/addonbrowser/InstallListener] == &__Dispatch_Table
    //#post(com.dmdirc.addons.addonbrowser.InstallListener__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#InstallListener.java:: end of method: com.dmdirc.addons.addonbrowser.InstallListener.com.dmdirc.addons.addonbrowser.InstallListener__static_init
    //#InstallListener.java:: end of class: com.dmdirc.addons.addonbrowser.InstallListener
