//# 0 errors, 267 messages
//#
/*
    //#ProfileListModel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#ProfileListModel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__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.profiles;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.DefaultListModel;

/** Profile list model. */
public class ProfileListModel extends DefaultListModel implements Iterable<Profile> {
    //#ProfileListModel.java:32: method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(int)
    //#input(Object remove(int)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel]
    //#input(Object remove(int)): __Descendant_Table[others]
    //#input(Object remove(int)): __Dispatch_Table.remove(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#input(Object remove(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Object remove(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Object remove(int)): this
    //#input(Object remove(int)): this.__Tag
    //#input(Object remove(int)): this.profiles
    //#input(Object remove(int)): x0
    //#output(Object remove(int)): return_value
    //#pre[2] (Object remove(int)): this.__Tag == com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel
    //#pre[3] (Object remove(int)): this.profiles != null
    //#post(Object remove(int)): init'ed(return_value)
    //#unanalyzed(Object remove(int)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(Object remove(int)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved
    //#ProfileListModel.java:32: end of method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(int)
    //#ProfileListModel.java:32: method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.get(int)
    //#input(Object get(int)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel]
    //#input(Object get(int)): __Descendant_Table[others]
    //#input(Object get(int)): __Dispatch_Table.get(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#input(Object get(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Object get(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Object get(int)): this
    //#input(Object get(int)): this.__Tag
    //#input(Object get(int)): this.profiles
    //#input(Object get(int)): x0
    //#output(Object get(int)): return_value
    //#pre[2] (Object get(int)): this.__Tag == com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel
    //#pre[3] (Object get(int)): this.profiles != null
    //#post(Object get(int)): init'ed(return_value)
    //#unanalyzed(Object get(int)): Effects-of-calling:java.util.List:get
    //#ProfileListModel.java:32: end of method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.get(int)
    //#ProfileListModel.java:32: method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getElementAt(int)
    //#input(Object getElementAt(int)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel]
    //#input(Object getElementAt(int)): __Descendant_Table[others]
    //#input(Object getElementAt(int)): __Dispatch_Table.getElementAt(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#input(Object getElementAt(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Object getElementAt(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Object getElementAt(int)): this
    //#input(Object getElementAt(int)): this.__Tag
    //#input(Object getElementAt(int)): this.profiles
    //#input(Object getElementAt(int)): x0
    //#output(Object getElementAt(int)): return_value
    //#pre[2] (Object getElementAt(int)): this.__Tag == com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel
    //#pre[3] (Object getElementAt(int)): this.profiles != null
    //#post(Object getElementAt(int)): init'ed(return_value)
    //#unanalyzed(Object getElementAt(int)): Effects-of-calling:java.util.List:get
    //#ProfileListModel.java:32: end of method: Object com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getElementAt(int)

    /**
     * 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 = 1;
    /** Profile list. */
    private final List<Profile> profiles;

    /** Creates a new profile list model. */
    public ProfileListModel() {
        this(new ArrayList<Profile>());
    //#ProfileListModel.java:45: method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): new ArrayList(ProfileListModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): this.profiles
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): new ArrayList(ProfileListModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): this.profiles == &new ArrayList(ProfileListModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): new ArrayList(ProfileListModel#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()): Effects-of-calling:javax.swing.DefaultListModel
    }
    //#ProfileListModel.java:46: end of method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel()

    /**
     * Creates a new profile list model.
     *
     * @param profiles Profile list to use
     */
    public ProfileListModel(final List<Profile> profiles) {
    //#ProfileListModel.java:53: method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)): profiles
    //#input(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)): this.profiles
    //#post(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)): this.profiles == profiles
    //#post(void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)): init'ed(this.profiles)
        this.profiles = profiles;
    }
    //#ProfileListModel.java:55: end of method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel(List)

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

    /** {@inheritDoc} */
    @Override
    public Profile getElementAt(int index) {
        return profiles.get(index);
    //#ProfileListModel.java:66: method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getElementAt(int)
    //#input(Profile getElementAt(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Profile getElementAt(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Profile getElementAt(int)): index
    //#input(Profile getElementAt(int)): this
    //#input(Profile getElementAt(int)): this.profiles
    //#output(Profile getElementAt(int)): return_value
    //#pre[3] (Profile getElementAt(int)): this.profiles != null
    //#presumption(Profile getElementAt(int)): java.util.List:get(...).__Tag@66 == com/dmdirc/addons/ui_swing/dialogs/profiles/Profile
    //#post(Profile getElementAt(int)): init'ed(return_value)
    //#ProfileListModel.java:66: end of method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getElementAt(int)
    }

    /**
     * Removes the index from the model.
     *
     * @param index Index to remove
     *
     * @return the profile that was removed
     */
    @Override
    public Profile remove(int index) {
        final Profile returnValue = profiles.remove(index);
    //#ProfileListModel.java:78: method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(int)
    //#input(Profile remove(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Profile remove(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Profile remove(int)): index
    //#input(Profile remove(int)): this
    //#input(Profile remove(int)): this.profiles
    //#output(Profile remove(int)): return_value
    //#pre[3] (Profile remove(int)): this.profiles != null
    //#presumption(Profile remove(int)): java.util.List:remove(...).__Tag@78 == com/dmdirc/addons/ui_swing/dialogs/profiles/Profile
    //#post(Profile remove(int)): init'ed(return_value)

        fireIntervalRemoved(this, index, index);
    //#ProfileListModel.java:80: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#    method: Profile remove(int)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)

        return returnValue;
    //#ProfileListModel.java:82: end of method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(int)
    }

    /**
     * Removes the object from the model.
     *
     * @param p object to remove from the model
     *
     * @return true if the object was removed
     */
    public boolean remove(Profile p) {
        final int index = profiles.indexOf(p);
    //#ProfileListModel.java:93: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(Profile)
    //#input(bool remove(Profile)): p
    //#input(bool remove(Profile)): this
    //#input(bool remove(Profile)): this.profiles
    //#output(bool remove(Profile)): return_value
    //#pre[3] (bool remove(Profile)): this.profiles != null
    //#post(bool remove(Profile)): init'ed(return_value)
        final boolean returnValue = profiles.remove(p);

        fireIntervalRemoved(this, index, index);
    //#ProfileListModel.java:96: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#    method: bool remove(Profile)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)

        return returnValue;
    //#ProfileListModel.java:98: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.remove(Profile)
    }

    /**
     * Checks if the model is empty.
     *
     * @return true if the model is empty
     */
    @Override
    public boolean isEmpty() {
        return profiles.isEmpty();
    //#ProfileListModel.java:108: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.isEmpty()
    //#input(bool isEmpty()): this
    //#input(bool isEmpty()): this.profiles
    //#output(bool isEmpty()): return_value
    //#pre[2] (bool isEmpty()): this.profiles != null
    //#post(bool isEmpty()): init'ed(return_value)
    //#ProfileListModel.java:108: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.isEmpty()
    }

    /**
     * Returns the index of the object.
     *
     * @param p object to find the index of
     *
     * @return index of the specified object
     */
    public int indexOf(Profile p) {
        return profiles.indexOf(p);
    //#ProfileListModel.java:119: method: int com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.indexOf(Profile)
    //#input(int indexOf(Profile)): p
    //#input(int indexOf(Profile)): this
    //#input(int indexOf(Profile)): this.profiles
    //#output(int indexOf(Profile)): return_value
    //#pre[3] (int indexOf(Profile)): this.profiles != null
    //#post(int indexOf(Profile)): init'ed(return_value)
    //#ProfileListModel.java:119: end of method: int com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.indexOf(Profile)
    }

    /**
     * Returns the profile at the index.
     *
     * @param index index to retrieve
     *
     * @return the profile that was removed
     */
    @Override
    public Profile get(int index) {
        return profiles.get(index);
    //#ProfileListModel.java:131: method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.get(int)
    //#input(Profile get(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(Profile get(int)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(Profile get(int)): index
    //#input(Profile get(int)): this
    //#input(Profile get(int)): this.profiles
    //#output(Profile get(int)): return_value
    //#pre[3] (Profile get(int)): this.profiles != null
    //#presumption(Profile get(int)): java.util.List:get(...).__Tag@131 == com/dmdirc/addons/ui_swing/dialogs/profiles/Profile
    //#post(Profile get(int)): init'ed(return_value)
    //#ProfileListModel.java:131: end of method: Profile com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.get(int)
    }
    
    /**
     * Returns a list of all profiles
     * 
     * @return Profile list
     */
    public List<Profile> getProfiles() {
        return new ArrayList<Profile>(profiles);
    //#ProfileListModel.java:140: method: List com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getProfiles()
    //#input(List getProfiles()): this
    //#input(List getProfiles()): this.profiles
    //#output(List getProfiles()): new ArrayList(getProfiles#1) num objects
    //#output(List getProfiles()): return_value
    //#new obj(List getProfiles()): new ArrayList(getProfiles#1)
    //#post(List getProfiles()): return_value == &new ArrayList(getProfiles#1)
    //#post(List getProfiles()): new ArrayList(getProfiles#1) num objects == 1
    //#ProfileListModel.java:140: end of method: List com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.getProfiles()
    }

    /**
     *
     * Checks if the model contains the profile
     *
     * @param p profile to check for
     *
     * @return true if the model contains the profile
     */
    public boolean contains(Profile p) {
        return profiles.contains(p);
    //#ProfileListModel.java:152: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.contains(Profile)
    //#input(bool contains(Profile)): p
    //#input(bool contains(Profile)): this
    //#input(bool contains(Profile)): this.profiles
    //#output(bool contains(Profile)): return_value
    //#pre[3] (bool contains(Profile)): this.profiles != null
    //#post(bool contains(Profile)): init'ed(return_value)
    //#ProfileListModel.java:152: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.contains(Profile)
    }

    /**
     *
     * Checks if the model contains a profile with the specified name.
     *
     * @param name name to match against
     *
     * @return true if the model contains a profile with the specified name
     */
    public boolean contains(String name) {
        synchronized (profiles) {
    //#ProfileListModel.java:164: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.contains(String)
    //#input(bool contains(String)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/Profile]
    //#input(bool contains(String)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Descendant_Table[others]
    //#input(bool contains(String)): com/dmdirc/addons/ui_swing/dialogs/profiles/Profile.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(bool contains(String)): name
    //#input(bool contains(String)): this
    //#input(bool contains(String)): this.profiles
    //#input(bool contains(String)): this.profiles.__Lock
    //#output(bool contains(String)): return_value
    //#pre[3] (bool contains(String)): this.profiles != null
    //#presumption(bool contains(String)): java.util.Iterator:next(...).__Tag@165 == com/dmdirc/addons/ui_swing/dialogs/profiles/Profile
    //#presumption(bool contains(String)): java.util.Iterator:next(...)@165 != null
    //#presumption(bool contains(String)): profile.name@165 != null
    //#post(bool contains(String)): init'ed(return_value)
    //#test_vector(bool contains(String)): java.lang.String:equals(...)@166: {0}, {1}
    //#test_vector(bool contains(String)): java.util.Iterator:hasNext(...)@165: {0}, {1}
            for (Profile profile : profiles) {
                if (profile.getName().equals(name)) {
                    return true;
                }
            }

            return false;
        }
    //#ProfileListModel.java:172: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.contains(String)
    }

    /**
     * Clears the model.
     */
    @Override
    public void clear() {
        final int size = profiles.size();
    //#ProfileListModel.java:180: method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.clear()
    //#input(void clear()): this
    //#input(void clear()): this.profiles
    //#pre[2] (void clear()): this.profiles != null
        profiles.clear();
        fireIntervalRemoved(this, 0, size);
    //#ProfileListModel.java:182: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#    method: void clear()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalRemoved(Object, int, int)
    }
    //#ProfileListModel.java:183: end of method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.clear()

    /**
     * Adds a profile at the index
     *
     * @param index index to add the profile
     * @param element profile to add
     */
    public void add(int index, Profile element) {
        profiles.add(index, element);
    //#ProfileListModel.java:192: method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.add(int, Profile)
    //#input(void add(int, Profile)): element
    //#input(void add(int, Profile)): index
    //#input(void add(int, Profile)): this
    //#input(void add(int, Profile)): this.profiles
    //#pre[4] (void add(int, Profile)): this.profiles != null

        fireIntervalAdded(this, index, index);
    //#ProfileListModel.java:194: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalAdded(Object, int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#    method: void add(int, Profile)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalAdded(Object, int, int)
    }
    //#ProfileListModel.java:195: end of method: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.add(int, Profile)

    /**
     * Adds the profile to the model
     *
     * @param p profile to add
     *
     * @return true if the item was added
     */
    public boolean add(Profile p) {
        final boolean returnValue = profiles.add(p);
    //#ProfileListModel.java:205: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.add(Profile)
    //#input(bool add(Profile)): p
    //#input(bool add(Profile)): this
    //#input(bool add(Profile)): this.profiles
    //#output(bool add(Profile)): return_value
    //#pre[3] (bool add(Profile)): this.profiles != null
    //#post(bool add(Profile)): init'ed(return_value)
        final int index = profiles.indexOf(p);

        fireIntervalAdded(this, index, index);
    //#ProfileListModel.java:208: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalAdded(Object, int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
    //#    method: bool add(Profile)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel:fireIntervalAdded(Object, int, int)

        return returnValue;
    //#ProfileListModel.java:210: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.add(Profile)
    }

    /**
     * Returns an iterator for this model.
     *
     * @return Iterator for the model
     */
    @Override
    public Iterator<Profile> iterator() {
        return profiles.iterator();
    //#ProfileListModel.java:220: method: Iterator com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.iterator()
    //#input(Iterator iterator()): this
    //#input(Iterator iterator()): this.profiles
    //#output(Iterator iterator()): return_value
    //#pre[2] (Iterator iterator()): this.profiles != null
    //#post(Iterator iterator()): return_value != null
    //#ProfileListModel.java:220: end of method: Iterator com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.iterator()
    }

    /** {@inheritDoc} */
    @Override
    public boolean equals(Object obj) {
        return profiles.equals(obj);
    //#ProfileListModel.java:226: method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.equals(Object)
    //#input(bool equals(Object)): obj
    //#input(bool equals(Object)): this
    //#input(bool equals(Object)): this.profiles
    //#output(bool equals(Object)): return_value
    //#pre[3] (bool equals(Object)): this.profiles != null
    //#post(bool equals(Object)): init'ed(return_value)
    //#ProfileListModel.java:226: end of method: bool com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.equals(Object)
    }

    /** {@inheritDoc} */
    @Override
    public int hashCode() {
        return profiles.hashCode();
    //#ProfileListModel.java:232: method: int com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.hashCode()
    //#input(int hashCode()): this
    //#input(int hashCode()): this.profiles
    //#output(int hashCode()): return_value
    //#pre[2] (int hashCode()): this.profiles != null
    //#post(int hashCode()): init'ed(return_value)
    //#ProfileListModel.java:232: end of method: int com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.hashCode()
    }
    
    /** {@inheritDoc} */
    @Override
    public String toString() {
        return profiles.toString();
    //#ProfileListModel.java:238: method: String com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.toString()
    //#input(String toString()): this
    //#input(String toString()): this.profiles
    //#input(String toString()): this.profiles._tainted
    //#output(String toString()): java.lang.Object:toString(...)._tainted
    //#output(String toString()): return_value
    //#new obj(String toString()): java.lang.Object:toString(...)
    //#pre[2] (String toString()): this.profiles != null
    //#post(String toString()): java.lang.Object:toString(...)._tainted == this.profiles._tainted
    //#post(String toString()): init'ed(java.lang.Object:toString(...)._tainted)
    //#post(String toString()): return_value == &java.lang.Object:toString(...)
    //#ProfileListModel.java:238: end of method: String com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.toString()
    }
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.add(ILcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.add(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.clear()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.contains(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.contains(Ljava/lang/String;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.get(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.get(I)Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getElementAt(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getElementAt(I)Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getProfiles()Ljava/util/List;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getSize()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.hashCode()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.indexOf(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)I
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.isEmpty()Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.iterator()Ljava/util/Iterator;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(I)Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.toString()Ljava/lang/String;
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileListModel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.add(ILcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)V == &add
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.add(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z == &add
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.clear()V == &clear
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.contains(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z == &contains
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.contains(Ljava/lang/String;)Z == &contains
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z == &equals
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.get(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile; == &get
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.get(I)Ljava/lang/Object; == &get
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getElementAt(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile; == &getElementAt
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getElementAt(I)Ljava/lang/Object; == &getElementAt
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getProfiles()Ljava/util/List; == &getProfiles
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.getSize()I == &getSize
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.hashCode()I == &hashCode
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.indexOf(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)I == &indexOf
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.isEmpty()Z == &isEmpty
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.iterator()Ljava/util/Iterator; == &iterator
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(I)Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile; == &remove
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(I)Ljava/lang/Object; == &remove
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.remove(Lcom/dmdirc/addons/ui_swing/dialogs/profiles/Profile;)Z == &remove
    //#post(com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init): __Dispatch_Table.toString()Ljava/lang/String; == &toString
    //#ProfileListModel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel.com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel__static_init
    //#ProfileListModel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileListModel
