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

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

import com.dmdirc.config.IdentityManager;

import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.swing.table.AbstractTableModel;

/**
 * URL Handler table model.
 */
public class URLHandlerTableModel extends AbstractTableModel {

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 3;
    /** Data list. */
    private List<URI> uris;
    /** Handlers list. */
    private List<String> handlers;

    /**
     * Instantiates a new table model.
     */
    public URLHandlerTableModel() {
        this(new ArrayList<URI>(), new ArrayList<String>());
    //#URLHandlerTableModel.java:55: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): this.handlers
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): this.uris
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): this.handlers == &new ArrayList(URLHandlerTableModel#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): this.uris == &new ArrayList(URLHandlerTableModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): new ArrayList(URLHandlerTableModel#2) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()): Effects-of-calling:javax.swing.table.AbstractTableModel
    }
    //#URLHandlerTableModel.java:56: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel()

    /**
     * Instantiates a new table model.
     * 
     * @param uris URIs to show
     * @param handlers Handlers to show
     */
    public URLHandlerTableModel(final List<URI> uris,
            final List<String> handlers) {
    //#URLHandlerTableModel.java:65: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): handlers
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): this
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): uris
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): this.handlers
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): this.uris
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): this.handlers == handlers
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): init'ed(this.handlers)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): this.uris == uris
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)): init'ed(this.uris)
        this.uris = uris;
        this.handlers = handlers;
    }
    //#URLHandlerTableModel.java:68: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel(List, List)

    /** {@inheritDoc} */
    @Override
    public int getRowCount() {
        return uris.size();
    //#URLHandlerTableModel.java:73: method: int com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getRowCount()
    //#input(int getRowCount()): this
    //#input(int getRowCount()): this.uris
    //#output(int getRowCount()): return_value
    //#pre[2] (int getRowCount()): this.uris != null
    //#post(int getRowCount()): init'ed(return_value)
    //#URLHandlerTableModel.java:73: end of method: int com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getRowCount()
    }

    /** {@inheritDoc} */
    @Override
    public int getColumnCount() {
        return 2;
    //#URLHandlerTableModel.java:79: method: int com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnCount()
    //#output(int getColumnCount()): return_value
    //#post(int getColumnCount()): return_value == 2
    //#URLHandlerTableModel.java:79: end of method: int com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnCount()
    }

    /** {@inheritDoc} */
    @Override
    public String getColumnName(final int columnIndex) {
        switch (columnIndex) {
    //#URLHandlerTableModel.java:85: method: String com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnName(int)
    //#input(String getColumnName(int)): "Unknown column: "._tainted
    //#input(String getColumnName(int)): columnIndex
    //#output(String getColumnName(int)): return_value
    //#pre[1] (String getColumnName(int)): columnIndex in {0,1}
    //#post(String getColumnName(int)): return_value in Addr_Set{&"Protocol",&"Handler"}
    //#test_vector(String getColumnName(int)): columnIndex: {0}, {1}
            case 0:
                return "Protocol";
            case 1:
                return "Handler";
            default:
                throw new IllegalArgumentException("Unknown column: " +
    //#URLHandlerTableModel.java:91: end of method: String com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnName(int)
                        columnIndex);
        }
    }

    /** {@inheritDoc} */
    @Override
    public Class<?> getColumnClass(final int columnIndex) {
        switch (columnIndex) {
    //#URLHandlerTableModel.java:99: method: Class com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnClass(int)
    //#input(Class getColumnClass(int)): "Unknown column: "._tainted
    //#input(Class getColumnClass(int)): columnIndex
    //#output(Class getColumnClass(int)): return_value
    //#pre[1] (Class getColumnClass(int)): columnIndex in {0,1}
    //#post(Class getColumnClass(int)): return_value in Addr_Set{&java.net.URI.__Class_Obj,&java.lang.String.__Class_Obj}
    //#test_vector(Class getColumnClass(int)): columnIndex: {0}, {1}
            case 0:
                return URI.class;
            case 1:
                return String.class;
            default:
                throw new IllegalArgumentException("Unknown column: " +
    //#URLHandlerTableModel.java:105: end of method: Class com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getColumnClass(int)
                        columnIndex);
        }
    }

    /** {@inheritDoc} */
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if (uris.size() <= rowIndex) {
    //#URLHandlerTableModel.java:113: method: Object com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getValueAt(int, int)
    //#input(Object getValueAt(int, int)): " >= "._tainted
    //#input(Object getValueAt(int, int)): "Unknown column: "._tainted
    //#input(Object getValueAt(int, int)): columnIndex
    //#input(Object getValueAt(int, int)): rowIndex
    //#input(Object getValueAt(int, int)): this
    //#input(Object getValueAt(int, int)): this.handlers
    //#input(Object getValueAt(int, int)): this.uris
    //#output(Object getValueAt(int, int)): return_value
    //#pre[1] (Object getValueAt(int, int)): columnIndex in {0,1}
    //#pre[2] (Object getValueAt(int, int)): rowIndex in {0..4_294_967_294}
    //#pre[5] (Object getValueAt(int, int)): this.uris != null
    //#pre[4] (Object getValueAt(int, int)): (soft) this.handlers != null
    //#presumption(Object getValueAt(int, int)): java.util.List:size(...)@113 >= 1
    //#presumption(Object getValueAt(int, int)): java.util.List:size(...)@113 - rowIndex in {1..4_294_967_295}
    //#post(Object getValueAt(int, int)): init'ed(return_value)
    //#test_vector(Object getValueAt(int, int)): columnIndex: {0}, {1}
            throw new IndexOutOfBoundsException(rowIndex + " >= " +
                    uris.size());
        }
        if (rowIndex < 0) {
            throw new IllegalArgumentException("Must specify a positive integer");
        }
        switch (columnIndex) {
            case 0:
                return uris.get(rowIndex);
            case 1:
                return handlers.get(rowIndex);
            default:
                throw new IllegalArgumentException("Unknown column: " +
    //#URLHandlerTableModel.java:126: end of method: Object com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getValueAt(int, int)
                        columnIndex);
        }
    }

    /** {@inheritDoc} */
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        if (uris.size() <= rowIndex) {
    //#URLHandlerTableModel.java:134: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.setValueAt(Object, int, int)
    //#input(void setValueAt(Object, int, int)): " >= "._tainted
    //#input(void setValueAt(Object, int, int)): "Unknown column: "._tainted
    //#input(void setValueAt(Object, int, int)): aValue
    //#input(void setValueAt(Object, int, int)): columnIndex
    //#input(void setValueAt(Object, int, int)): rowIndex
    //#input(void setValueAt(Object, int, int)): this
    //#input(void setValueAt(Object, int, int)): this.handlers
    //#input(void setValueAt(Object, int, int)): this.uris
    //#pre[2] (void setValueAt(Object, int, int)): columnIndex in {0,1}
    //#pre[3] (void setValueAt(Object, int, int)): rowIndex in {0..4_294_967_294}
    //#pre[6] (void setValueAt(Object, int, int)): this.uris != null
    //#pre[5] (void setValueAt(Object, int, int)): (soft) this.handlers != null
    //#presumption(void setValueAt(Object, int, int)): java.lang.String:instanceof(...)@149 == 1
    //#presumption(void setValueAt(Object, int, int)): java.net.URI:instanceof(...)@143 == 1
    //#presumption(void setValueAt(Object, int, int)): java.util.List:size(...)@134 >= 1
    //#presumption(void setValueAt(Object, int, int)): java.util.List:size(...)@134 - rowIndex in {1..4_294_967_295}
    //#test_vector(void setValueAt(Object, int, int)): columnIndex: {0}, {1}
            throw new IndexOutOfBoundsException(rowIndex + " >= " +
                    uris.size());
        }
        if (rowIndex < 0) {
            throw new IllegalArgumentException("Must specify a positive integer");
        }
        switch (columnIndex) {
            case 0:
                if (!(aValue instanceof URI)) {
    //#URLHandlerTableModel.java:143: ?IllegalArgumentException check
    //#    __instance_of_URI == 1
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void setValueAt(Object, int, int)
    //#    basic block: bb_10
    //#    assertion: __instance_of_URI == 1
    //#    VN: __instance_of_URI
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp  Uncertain
                    throw new IllegalArgumentException("Value must be a URI");
                }
                uris.set(rowIndex, (URI) aValue);
                break;
            case 1:
                if (!(aValue instanceof String)) {
    //#URLHandlerTableModel.java:149: ?IllegalArgumentException check
    //#    __instance_of_String == 1
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void setValueAt(Object, int, int)
    //#    basic block: bb_8
    //#    assertion: __instance_of_String == 1
    //#    VN: __instance_of_String
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp  Uncertain
                    throw new IllegalArgumentException("Value must be a String");
                }
                handlers.set(rowIndex, (String) aValue);
                break;
            default:
                throw new IllegalArgumentException("Unknown column: " +
                        columnIndex);
        }
        fireTableCellUpdated(rowIndex, columnIndex);
    //#URLHandlerTableModel.java:158: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableCellUpdated(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void setValueAt(Object, int, int)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableCellUpdated(int, int)
    }
    //#URLHandlerTableModel.java:159: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.setValueAt(Object, int, int)

    /**
     * Adds a URI to the model.
     * 
     * @param uri URI to add
     */
    public void addURI(final URI uri) {
        final String handler;
        if (IdentityManager.getGlobalConfig().hasOptionString("protocol", uri.getScheme())) {
    //#URLHandlerTableModel.java:168: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.addURI(URI)
    //#URLHandlerTableModel.java:168: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void addURI(URI)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#URLHandlerTableModel.java:168: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void addURI(URI)
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
    //#input(void addURI(URI)): this
    //#input(void addURI(URI)): this.handlers
    //#input(void addURI(URI)): this.uris
    //#input(void addURI(URI)): uri
    //#pre[2] (void addURI(URI)): this.handlers != null
    //#pre[3] (void addURI(URI)): this.uris != null
    //#pre[4] (void addURI(URI)): uri != null
    //#presumption(void addURI(URI)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@168 != null
    //#presumption(void addURI(URI)): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@169 != null
    //#presumption(void addURI(URI)): java.util.List:size(...)@175 >= -2_147_483_647
    //#presumption(void addURI(URI)): java.util.List:size(...)@175 >= -2_147_483_647
    //#test_vector(void addURI(URI)): com.dmdirc.config.ConfigManager:hasOptionString(...)@168: {0}, {1}
            handler = IdentityManager.getGlobalConfig().getOption("protocol", uri.getScheme());
    //#URLHandlerTableModel.java:169: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void addURI(URI)
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#URLHandlerTableModel.java:169: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void addURI(URI)
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
        } else {
            handler = "";
        }
        uris.add(uri);
        handlers.add(handler);
        fireTableRowsInserted(uris.size() - 1, uris.size() - 1);
    //#URLHandlerTableModel.java:175: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableRowsInserted(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void addURI(URI)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableRowsInserted(int, int)
    }
    //#URLHandlerTableModel.java:176: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.addURI(URI)

    /**
     * Removes a URI to the model.
     * 
     * @param uri URI to remove
     */
    public void removeURI(final URI uri) {
        removeURI(uris.indexOf(uri));
    //#URLHandlerTableModel.java:184: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.removeURI(URI)
    //#input(void removeURI(URI)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/URLHandlerTableModel]
    //#input(void removeURI(URI)): __Descendant_Table[others]
    //#input(void removeURI(URI)): __Dispatch_Table.removeURI(I)V
    //#input(void removeURI(URI)): this
    //#input(void removeURI(URI)): this.__Tag
    //#input(void removeURI(URI)): this.handlers
    //#input(void removeURI(URI)): this.uris
    //#input(void removeURI(URI)): uri
    //#pre[2] (void removeURI(URI)): this.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/URLHandlerTableModel
    //#pre[4] (void removeURI(URI)): this.uris != null
    //#pre[3] (void removeURI(URI)): (soft) this.handlers != null
    //#unanalyzed(void removeURI(URI)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void removeURI(URI)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableRowsDeleted
    }
    //#URLHandlerTableModel.java:185: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.removeURI(URI)

    /**
     * Removes a URI to the model.
     * 
     * @param index Index of the URI to remove
     */
    public void removeURI(final int index) {
        if (index != -1) {
    //#URLHandlerTableModel.java:193: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.removeURI(int)
    //#input(void removeURI(int)): index
    //#input(void removeURI(int)): this
    //#input(void removeURI(int)): this.handlers
    //#input(void removeURI(int)): this.uris
    //#pre[3] (void removeURI(int)): (soft) this.handlers != null
    //#pre[4] (void removeURI(int)): (soft) this.uris != null
    //#test_vector(void removeURI(int)): index: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
            uris.remove(index);
            handlers.remove(index);
            fireTableRowsDeleted(index, index);
    //#URLHandlerTableModel.java:196: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableRowsDeleted(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
    //#    method: void removeURI(int)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel:fireTableRowsDeleted(int, int)
        }
    }
    //#URLHandlerTableModel.java:198: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.removeURI(int)
    
    /**
     * Returns a map of the URL handlers in this model.
     * 
     * @return URL Handler map
     */
    public Map<URI, String> getURLHandlers() {
        final Map<URI, String> urlHandlers = new HashMap<URI, String>();
    //#URLHandlerTableModel.java:206: method: Map com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getURLHandlers()
    //#input(Map getURLHandlers()): this
    //#input(Map getURLHandlers()): this.handlers
    //#input(Map getURLHandlers()): this.uris
    //#output(Map getURLHandlers()): new HashMap(getURLHandlers#1) num objects
    //#output(Map getURLHandlers()): return_value
    //#new obj(Map getURLHandlers()): new HashMap(getURLHandlers#1)
    //#pre[3] (Map getURLHandlers()): this.uris != null
    //#pre[2] (Map getURLHandlers()): (soft) this.handlers != null
    //#post(Map getURLHandlers()): return_value == &new HashMap(getURLHandlers#1)
    //#post(Map getURLHandlers()): new HashMap(getURLHandlers#1) num objects == 1
        
        for (int i = 0; i < uris.size(); i++) {
            urlHandlers.put(uris.get(i), handlers.get(i));
        }
        
        return urlHandlers;
    //#URLHandlerTableModel.java:212: end of method: Map com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.getURLHandlers()
    }
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/URLHandlerTableModel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.addURI(Ljava/net/URI;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnClass(I)Ljava/lang/Class;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnCount()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnName(I)Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getRowCount()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getURLHandlers()Ljava/util/Map;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getValueAt(II)Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.removeURI(I)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.removeURI(Ljava/net/URI;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.setValueAt(Ljava/lang/Object;II)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/URLHandlerTableModel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.addURI(Ljava/net/URI;)V == &addURI
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnClass(I)Ljava/lang/Class; == &getColumnClass
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnCount()I == &getColumnCount
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getColumnName(I)Ljava/lang/String; == &getColumnName
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getRowCount()I == &getRowCount
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getURLHandlers()Ljava/util/Map; == &getURLHandlers
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.getValueAt(II)Ljava/lang/Object; == &getValueAt
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.removeURI(I)V == &removeURI
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.removeURI(Ljava/net/URI;)V == &removeURI
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init): __Dispatch_Table.setValueAt(Ljava/lang/Object;II)V == &setValueAt
    //#URLHandlerTableModel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel.com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel__static_init
    //#URLHandlerTableModel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.prefs.URLHandlerTableModel
