//# 0 errors, 163 messages
//#
/*
    //#LicensePanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1
    //#LicensePanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init
    //#LicensePanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#LicensePanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__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.about;

import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.util.resourcemanager.ResourceManager;

import java.awt.Font;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;

import net.miginfocom.swing.MigLayout;

/**
 * License panel.
 */
public final class LicensePanel extends JPanel {
    //#LicensePanel.java:50: method: JScrollPane com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.access$000(LicensePanel)
    //#input(JScrollPane access$000(LicensePanel)): x0
    //#input(JScrollPane access$000(LicensePanel)): x0.scrollPane
    //#output(JScrollPane access$000(LicensePanel)): return_value
    //#pre[1] (JScrollPane access$000(LicensePanel)): x0 != null
    //#pre[2] (JScrollPane access$000(LicensePanel)): init'ed(x0.scrollPane)
    //#post(JScrollPane access$000(LicensePanel)): return_value == x0.scrollPane
    //#post(JScrollPane access$000(LicensePanel)): init'ed(return_value)
    //#LicensePanel.java:50: end of method: JScrollPane com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.access$000(LicensePanel)

    /**
     * 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;
    /** License scroll pane. */
    private JScrollPane scrollPane;

    /** Creates a new instance of LicensePanel. */
    public LicensePanel() {
        super();
    //#LicensePanel.java:63: method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "; "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<.h1>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<.html>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<.li>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<.ul>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<br>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<h1>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<html>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "<li>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "Below are the licenses used in various components of DMDirc: <br><ul>"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "Error loading licenses."._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "body { font-family: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "font-size: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): "pt; }"._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): new JScrollPane(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): this.scrollPane
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): new JScrollPane(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): this.scrollPane == &new JScrollPane(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): new JScrollPane(initComponents#6) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.io.InputStreamReader
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JEditorPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JEditorPane:setEditorKit
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.UIManager:getFont
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JEditorPane:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.text.html.HTMLDocument:getStyleSheet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.awt.Font:getFamily
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.awt.Font:getSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.text.html.StyleSheet:addRule
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:com.dmdirc.util.resourcemanager.ResourceManager:getResourcesStartingWithAsInputStreams
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.TreeMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Map:entrySet
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Map$Entry:getKey
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.util.Map$Entry:getValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JEditorPane:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JEditorPane:setEditable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:add

        this.setOpaque(UIUtilities.getTabbedPaneOpaque());
    //#LicensePanel.java:65: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.UIUtilities:getTabbedPaneOpaque()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.UIUtilities:getTabbedPaneOpaque()
    //#LicensePanel.java:65: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:setOpaque(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:setOpaque(bool)
        initComponents();
    }
    //#LicensePanel.java:67: end of method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel()

    /** Initialises the components. */
    private void initComponents() {
        final JEditorPane license;
        final ResourceManager rm = ResourceManager.getResourceManager();
    //#LicensePanel.java:72: method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.initComponents()
    //#LicensePanel.java:72: Warning: method not available - call not analyzed
    //#    call on ResourceManager com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: ResourceManager com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager()
    //#input(void initComponents()): "; "._tainted
    //#input(void initComponents()): "<.h1>"._tainted
    //#input(void initComponents()): "<.html>"._tainted
    //#input(void initComponents()): "<.li>"._tainted
    //#input(void initComponents()): "<.ul>"._tainted
    //#input(void initComponents()): "<br>"._tainted
    //#input(void initComponents()): "<h1>"._tainted
    //#input(void initComponents()): "<html>"._tainted
    //#input(void initComponents()): "<li>"._tainted
    //#input(void initComponents()): "Below are the licenses used in various components of DMDirc: <br><ul>"._tainted
    //#input(void initComponents()): "Error loading licenses."._tainted
    //#input(void initComponents()): "body { font-family: "._tainted
    //#input(void initComponents()): "font-size: "._tainted
    //#input(void initComponents()): "pt; }"._tainted
    //#input(void initComponents()): this
    //#output(void initComponents()): new JScrollPane(initComponents#6) num objects
    //#output(void initComponents()): this.scrollPane
    //#new obj(void initComponents()): new JScrollPane(initComponents#6)
    //#presumption(void initComponents()): java.lang.String:lastIndexOf(...)@105 <= 4_294_967_294
    //#presumption(void initComponents()): java.lang.String:lastIndexOf(...)@94 <= 4_294_967_294
    //#presumption(void initComponents()): java.util.Iterator:next(...)@104 != null
    //#presumption(void initComponents()): java.util.Iterator:next(...)@93 != null
    //#presumption(void initComponents()): java.util.Map:entrySet(...)@104 != null
    //#presumption(void initComponents()): java.util.Map:entrySet(...)@93 != null
    //#presumption(void initComponents()): java.util.Map_Entry:getKey(...)@105 != null
    //#presumption(void initComponents()): java.util.Map_Entry:getKey(...)@105 != null
    //#presumption(void initComponents()): java.util.Map_Entry:getKey(...)@94 != null
    //#presumption(void initComponents()): java.util.Map_Entry:getKey(...)@94 != null
    //#presumption(void initComponents()): javax.swing.JEditorPane:getDocument(...)@77 != null
    //#presumption(void initComponents()): javax.swing.UIManager:getFont(...)@76 != null
    //#presumption(void initComponents()): javax.swing.text.html.HTMLDocument:getStyleSheet(...)@77 != null
    //#post(void initComponents()): this.scrollPane == &new JScrollPane(initComponents#6)
    //#post(void initComponents()): new JScrollPane(initComponents#6) num objects == 1
    //#unanalyzed(void initComponents()): Effects-of-calling:java.io.InputStreamReader
    //#unanalyzed(void initComponents()): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initComponents()): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder:toString
    //#test_vector(void initComponents()): com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@72: Inverse{null}, Addr_Set{null}
    //#test_vector(void initComponents()): java.lang.String:length(...)@108: {0,1}, {2..4_294_967_295}
    //#test_vector(void initComponents()): java.lang.String:length(...)@97: {0,1}, {2..4_294_967_295}
    //#test_vector(void initComponents()): java.util.Iterator:hasNext(...)@104: {0}, {1}
    //#test_vector(void initComponents()): java.util.Iterator:hasNext(...)@93: {0}, {1}

        license = new JEditorPane();
        license.setEditorKit(new HTMLEditorKit());
        final Font font = UIManager.getFont("Label.font");
        ((HTMLDocument) license.getDocument()).getStyleSheet().addRule("body " +
                "{ font-family: " + font.getFamily() + "; " + "font-size: " +
                font.getSize() + "pt; }");

        final StringBuilder licenseText = new StringBuilder();
        licenseText.append("<html>");

        if (rm == null) {
            licenseText.append("Error loading licenses.");
        } else {
            final Map<String, InputStream> licenses =
    //#LicensePanel.java:87: Warning: method not available - call not analyzed
    //#    call on Map com.dmdirc.util.resourcemanager.ResourceManager:getResourcesStartingWithAsInputStreams(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: Map com.dmdirc.util.resourcemanager.ResourceManager:getResourcesStartingWithAsInputStreams(String)
                    new TreeMap<String, InputStream>(rm.
                    getResourcesStartingWithAsInputStreams(
                    "com/dmdirc/licenses/"));
            licenseText.append("Below are the licenses used in various " +
                    "components of DMDirc: <br><ul>");
            for (Entry<String, InputStream> entry : licenses.entrySet()) {
                final String licenseString = entry.getKey().substring(entry.
                        getKey().
                        lastIndexOf('/') + 1);
                if (licenseString.length() > 1) {
                    licenseText.append("<li>");
                    licenseText.append(licenseString);
                    licenseText.append("</li>");
                }
            }
            licenseText.append("</ul>");
            for (Entry<String, InputStream> entry : licenses.entrySet()) {
                final String licenseString = entry.getKey().substring(entry.
                        getKey().
                        lastIndexOf('/') + 1);
                if (licenseString.length() > 1) {
                    licenseText.append("<h1>");
                    licenseText.append(licenseString.substring(0,
                            licenseString.lastIndexOf(" - ")));
                    licenseText.append("</h1>");
                    licenseText.append(
                            readInputStream(entry.getValue()).replaceAll("\n",
                            "<br>"));
                }
            }
        }
        licenseText.append("</html>");
        license.setText(licenseText.toString());
        license.setEditable(false);

        scrollPane = new JScrollPane(license);
        SwingUtilities.invokeLater(new Runnable() {
    //#LicensePanel.java:124: method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)): init'ed(this.this$0)
    //#LicensePanel.java:124: end of method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1(LicensePanel)

            /** {@inheritDoc} */
            @Override
            public void run() {
                scrollPane.getVerticalScrollBar().setValue(0);
    //#LicensePanel.java:129: method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.scrollPane
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.scrollPane != null
    //#presumption(void run()): javax.swing.JScrollPane:getVerticalScrollBar(...)@129 != null
            }
    //#LicensePanel.java:130: end of method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.run()
        });

        setLayout(new MigLayout("ins rel, fill"));
    //#LicensePanel.java:133: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#LicensePanel.java:133: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:setLayout(LayoutManager)
        add(scrollPane, "grow, push");
    //#LicensePanel.java:134: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel:add(Component, Object)
    }
    //#LicensePanel.java:135: end of method: void com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.initComponents()

    /**
     * Converts an input stream into a string.
     * 
     * @param stream Stream to convert
     * 
     * @return Contents of the input stream
     */
    private String readInputStream(final InputStream stream) {

        String line;
        final BufferedReader input =
    //#LicensePanel.java:147: method: String com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.readInputStream(InputStream)
    //#input(String readInputStream(InputStream)): "<br>"._tainted
    //#input(String readInputStream(InputStream)): stream
    //#output(String readInputStream(InputStream)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String readInputStream(InputStream)): return_value
    //#new obj(String readInputStream(InputStream)): java.lang.StringBuilder:toString(...)
    //#post(String readInputStream(InputStream)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(String readInputStream(InputStream)): return_value == &java.lang.StringBuilder:toString(...)
                new BufferedReader(new InputStreamReader(stream));
        final StringBuilder text = new StringBuilder();

        try {
            line = input.readLine();
            while (line != null) {
                text.append(line);
                text.append("<br>");
                line = input.readLine();
            }
        } catch (IOException ex) {
            //Ignore
        }

        return text.toString();
    //#LicensePanel.java:162: end of method: String com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.readInputStream(InputStream)

    }
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/about/LicensePanel$1]
    //#output(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/about/LicensePanel$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init): __Dispatch_Table.run()V == &run
    //#LicensePanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1__static_init
    //#LicensePanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel$1
    //#output(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/about/LicensePanel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Dispatch_Table.readInputStream(Ljava/io/InputStream;)Ljava/lang/String;
    //#post(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/about/LicensePanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init): __Dispatch_Table.readInputStream(Ljava/io/InputStream;)Ljava/lang/String; == &readInputStream
    //#LicensePanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel.com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel__static_init
    //#LicensePanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.about.LicensePanel
