//# 0 errors, 627 messages
//#
/*
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$5
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$4
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$3
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init
    //#SwingSearchBar.java:1:1: class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#SwingSearchBar.java:1:1: method: com.dmdirc.addons.ui_swing.components.SwingSearchBar.com.dmdirc.addons.ui_swing.components.SwingSearchBar__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.components;

import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
import com.dmdirc.addons.ui_swing.components.frames.InputTextFrame;
import com.dmdirc.ui.IconManager;
import com.dmdirc.ui.interfaces.SearchBar;
import com.dmdirc.ui.messages.ColourManager;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.actions.SearchAction;
import com.dmdirc.addons.ui_swing.textpane.IRCDocument;
import com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher;
import com.dmdirc.addons.ui_swing.textpane.LinePosition;
import com.dmdirc.addons.ui_swing.textpane.TextPane;
import com.dmdirc.util.ListenerList;

import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import net.miginfocom.swing.MigLayout;

/**
 * Status bar, shows message and info on the gui.
 */
public final class SwingSearchBar extends JPanel implements ActionListener,
    //#SwingSearchBar.java:59: method: JTextField com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$000(SwingSearchBar)
    //#input(JTextField access$000(SwingSearchBar)): x0
    //#input(JTextField access$000(SwingSearchBar)): x0.searchBox
    //#output(JTextField access$000(SwingSearchBar)): return_value
    //#pre[1] (JTextField access$000(SwingSearchBar)): x0 != null
    //#pre[2] (JTextField access$000(SwingSearchBar)): init'ed(x0.searchBox)
    //#post(JTextField access$000(SwingSearchBar)): return_value == x0.searchBox
    //#post(JTextField access$000(SwingSearchBar)): init'ed(return_value)
    //#SwingSearchBar.java:59: end of method: JTextField com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$000(SwingSearchBar)
    //#SwingSearchBar.java:59: method: TextFrame com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$100(SwingSearchBar)
    //#input(TextFrame access$100(SwingSearchBar)): x0
    //#input(TextFrame access$100(SwingSearchBar)): x0.parent
    //#output(TextFrame access$100(SwingSearchBar)): return_value
    //#pre[1] (TextFrame access$100(SwingSearchBar)): x0 != null
    //#post(TextFrame access$100(SwingSearchBar)): return_value == x0.parent
    //#post(TextFrame access$100(SwingSearchBar)): init'ed(return_value)
    //#SwingSearchBar.java:59: end of method: TextFrame com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$100(SwingSearchBar)
    //#SwingSearchBar.java:59: method: ListenerList com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$200(SwingSearchBar)
    //#input(ListenerList access$200(SwingSearchBar)): x0
    //#input(ListenerList access$200(SwingSearchBar)): x0.listeners
    //#output(ListenerList access$200(SwingSearchBar)): return_value
    //#pre[1] (ListenerList access$200(SwingSearchBar)): x0 != null
    //#post(ListenerList access$200(SwingSearchBar)): return_value == x0.listeners
    //#post(ListenerList access$200(SwingSearchBar)): init'ed(return_value)
    //#SwingSearchBar.java:59: end of method: ListenerList com.dmdirc.addons.ui_swing.components.SwingSearchBar.access$200(SwingSearchBar)
        KeyListener, SearchBar, DocumentListener {

    /**
     * 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 = 6;
    /** Frame parent. */
    private final TextFrame parent;
    /** Close button. */
    private ImageButton closeButton;
    /** Next match button. */
    private JButton nextButton;
    /** Previous match button. */
    private JButton prevButton;
    /** Case sensitive checkbox. */
    private JCheckBox caseCheck;
    /** Search text field. */
    private JTextField searchBox;
    /** Line to search from. */
    private int line;
    /** Listener list. */
    private final ListenerList listeners;
    /** Parent window. */
    private Window parentWindow;

    /**
     * Creates a new instance of StatusBar.
     * 
     * @param newParent parent frame for the dialog
     * @param parentWindow Parent window
     */
    public SwingSearchBar(final TextFrame newParent, final Window parentWindow) {
        super();
    //#SwingSearchBar.java:94: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): newParent
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): parentWindow
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ImageButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ImageButton(initComponents#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JCheckBox(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JTextField(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ListenerList(SwingSearchBar#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.caseCheck
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.closeButton
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.line
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.listeners
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.nextButton
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.parent
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.parentWindow
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.prevButton
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.searchBox
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ImageButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JCheckBox(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JTextField(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ListenerList(SwingSearchBar#1)
    //#presumption(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): com.dmdirc.addons.ui_swing.components.SwingSearchBar:getActionMap(...)@104 != null
    //#presumption(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): com.dmdirc.addons.ui_swing.components.SwingSearchBar:getInputMap(...)@101 != null
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.caseCheck == &new JCheckBox(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.closeButton == &new ImageButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): init'ed(this.line)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.listeners == &new ListenerList(SwingSearchBar#1)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.nextButton == &new JButton(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.parent == newParent
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): init'ed(this.parent)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.parentWindow == parentWindow
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): init'ed(this.parentWindow)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.prevButton == &new JButton(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): this.searchBox == &new JTextField(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ImageButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JButton(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JCheckBox(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new JTextField(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ListenerList(SwingSearchBar#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): new ImageButton(initComponents#1).__Tag == com/dmdirc/addons/ui_swing/components/ImageButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JCheckBox:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingSearchBar:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.SwingSearchBar:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JTextField:addKeyListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.JCheckBox:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)): Effects-of-calling:javax.swing.AbstractAction

        listeners = new ListenerList();
    //#SwingSearchBar.java:96: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList()

        this.parent = newParent;
        this.parentWindow = parentWindow;

        getInputMap(JComponent.WHEN_FOCUSED).
    //#SwingSearchBar.java:101: Warning: method not available - call not analyzed
    //#    call on InputMap com.dmdirc.addons.ui_swing.components.SwingSearchBar:getInputMap(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)
    //#    unanalyzed callee: InputMap com.dmdirc.addons.ui_swing.components.SwingSearchBar:getInputMap(int)
                put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), "searchAction");

        getActionMap().put("searchAction", new SearchAction(this));
    //#SwingSearchBar.java:104: Warning: method not available - call not analyzed
    //#    call on ActionMap com.dmdirc.addons.ui_swing.components.SwingSearchBar:getActionMap()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)
    //#    unanalyzed callee: ActionMap com.dmdirc.addons.ui_swing.components.SwingSearchBar:getActionMap()

        initComponents();
        layoutComponents();
        addListeners();
    }
    //#SwingSearchBar.java:109: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.com.dmdirc.addons.ui_swing.components.SwingSearchBar(TextFrame, Window)

    /** Initialises components. */
    private void initComponents() {
        closeButton = new ImageButton("close",
    //#SwingSearchBar.java:113: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.initComponents()
    //#SwingSearchBar.java:113: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void initComponents()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#SwingSearchBar.java:113: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void initComponents()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#input(void initComponents()): this
    //#output(void initComponents()): new ImageButton(initComponents#1) num objects
    //#output(void initComponents()): this.closeButton.__Tag
    //#output(void initComponents()): new JButton(initComponents#2) num objects
    //#output(void initComponents()): new JButton(initComponents#3) num objects
    //#output(void initComponents()): new JCheckBox(initComponents#4) num objects
    //#output(void initComponents()): new JTextField(initComponents#5) num objects
    //#output(void initComponents()): this.caseCheck
    //#output(void initComponents()): this.closeButton
    //#output(void initComponents()): this.line
    //#output(void initComponents()): this.nextButton
    //#output(void initComponents()): this.prevButton
    //#output(void initComponents()): this.searchBox
    //#new obj(void initComponents()): new ImageButton(initComponents#1)
    //#new obj(void initComponents()): new JButton(initComponents#2)
    //#new obj(void initComponents()): new JButton(initComponents#3)
    //#new obj(void initComponents()): new JCheckBox(initComponents#4)
    //#new obj(void initComponents()): new JTextField(initComponents#5)
    //#presumption(void initComponents()): com.dmdirc.ui.IconManager:getIconManager(...)@113 != null
    //#presumption(void initComponents()): com.dmdirc.ui.IconManager:getIconManager(...)@113 != null
    //#post(void initComponents()): this.caseCheck == &new JCheckBox(initComponents#4)
    //#post(void initComponents()): this.closeButton == &new ImageButton(initComponents#1)
    //#post(void initComponents()): this.line == -1
    //#post(void initComponents()): this.nextButton == &new JButton(initComponents#2)
    //#post(void initComponents()): this.prevButton == &new JButton(initComponents#3)
    //#post(void initComponents()): this.searchBox == &new JTextField(initComponents#5)
    //#post(void initComponents()): new ImageButton(initComponents#1) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#2) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#3) num objects == 1
    //#post(void initComponents()): new JCheckBox(initComponents#4) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#5) num objects == 1
    //#post(void initComponents()): this.closeButton.__Tag == com/dmdirc/addons/ui_swing/components/ImageButton
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setRolloverIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPressedIcon
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setContentAreaFilled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.BorderFactory:createEmptyBorder
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setBorder
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setMargin
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setPreferredSize
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ImageButton:setActionCommand
                IconManager.getIconManager().getIcon("close-inactive"),
                IconManager.getIconManager().getIcon("close-active"));
        nextButton = new JButton();
        prevButton = new JButton();
        caseCheck = new JCheckBox();
        searchBox = new JTextField();

        nextButton.setText("Later");
        prevButton.setText("Earlier");
        caseCheck.setText("Case sensitive");

        line = -1;
    }
    //#SwingSearchBar.java:126: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.initComponents()

    /** Lays out components. */
    private void layoutComponents() {
        this.setLayout(new MigLayout("ins 0, fill"));
    //#SwingSearchBar.java:130: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.layoutComponents()
    //#SwingSearchBar.java:130: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#SwingSearchBar.java:130: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setLayout(LayoutManager)
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.caseCheck
    //#input(void layoutComponents()): this.closeButton
    //#input(void layoutComponents()): this.nextButton
    //#input(void layoutComponents()): this.prevButton
    //#input(void layoutComponents()): this.searchBox
    //#pre[2] (void layoutComponents()): init'ed(this.caseCheck)
    //#pre[3] (void layoutComponents()): init'ed(this.closeButton)
    //#pre[4] (void layoutComponents()): init'ed(this.nextButton)
    //#pre[5] (void layoutComponents()): init'ed(this.prevButton)
    //#pre[6] (void layoutComponents()): init'ed(this.searchBox)

        add(closeButton);
    //#SwingSearchBar.java:132: Warning: method not available - call not analyzed
    //#    call on Component com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: Component com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component)
        add(searchBox, "growx, pushx, sgy all");
    //#SwingSearchBar.java:133: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
        add(prevButton, "sgx button, sgy all");
    //#SwingSearchBar.java:134: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
        add(nextButton, "sgx button, sgy all");
    //#SwingSearchBar.java:135: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
        add(caseCheck, "sgy all");
    //#SwingSearchBar.java:136: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:add(Component, Object)
    }
    //#SwingSearchBar.java:137: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.layoutComponents()

    /** Adds listeners to components. */
    private void addListeners() {
        closeButton.addActionListener(this);
    //#SwingSearchBar.java:141: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.addListeners()
    //#SwingSearchBar.java:141: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener(ActionListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void addListeners()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.ImageButton:addActionListener(ActionListener)
    //#input(void addListeners()): this
    //#input(void addListeners()): this.caseCheck
    //#input(void addListeners()): this.closeButton
    //#input(void addListeners()): this.nextButton
    //#input(void addListeners()): this.prevButton
    //#input(void addListeners()): this.searchBox
    //#pre[2] (void addListeners()): this.caseCheck != null
    //#pre[3] (void addListeners()): this.closeButton != null
    //#pre[4] (void addListeners()): this.nextButton != null
    //#pre[5] (void addListeners()): this.prevButton != null
    //#pre[6] (void addListeners()): this.searchBox != null
        searchBox.addKeyListener(this);
        nextButton.addActionListener(this);
        prevButton.addActionListener(this);
        caseCheck.addActionListener(this);
    }
    //#SwingSearchBar.java:146: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.addListeners()

    /**
     * {@inheritDoc}.
     *
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (e.getSource() == closeButton) {
    //#SwingSearchBar.java:155: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): "?"._tainted
    //#input(void actionPerformed(ActionEvent)): "Do you want to continue searching from the "._tainted
    //#input(void actionPerformed(ActionEvent)): "beginning"._tainted
    //#input(void actionPerformed(ActionEvent)): "end"._tainted
    //#input(void actionPerformed(ActionEvent)): com.dmdirc.ui.interfaces.SearchBar$Direction.DOWN
    //#input(void actionPerformed(ActionEvent)): com.dmdirc.ui.interfaces.SearchBar$Direction.UP
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.caseCheck
    //#input(void actionPerformed(ActionEvent)): this.closeButton
    //#input(void actionPerformed(ActionEvent)): this.nextButton
    //#input(void actionPerformed(ActionEvent)): this.parent
    //#input(void actionPerformed(ActionEvent)): this.parentWindow
    //#input(void actionPerformed(ActionEvent)): this.prevButton
    //#input(void actionPerformed(ActionEvent)): this.searchBox
    //#output(void actionPerformed(ActionEvent)): this.line
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[5] (void actionPerformed(ActionEvent)): init'ed(this.closeButton)
    //#pre[4] (void actionPerformed(ActionEvent)): (soft) this.caseCheck != null
    //#pre[6] (void actionPerformed(ActionEvent)): (soft) init'ed(this.nextButton)
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.parent != null
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) init'ed(this.parentWindow)
    //#pre[9] (void actionPerformed(ActionEvent)): (soft) init'ed(this.prevButton)
    //#pre[10] (void actionPerformed(ActionEvent)): (soft) this.searchBox != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane(...)@163 != null
    //#presumption(void actionPerformed(ActionEvent)): init'ed(com.dmdirc.ui.interfaces.SearchBar$Direction.DOWN)
    //#presumption(void actionPerformed(ActionEvent)): init'ed(com.dmdirc.ui.interfaces.SearchBar$Direction.UP)
    //#post(void actionPerformed(ActionEvent)): possibly_updated(this.line)
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getDocument
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:setPosition
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchUp
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchDown
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getStartLine
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JOptionPane:showConfirmDialog
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setScrollBarPosition
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setSelectedTexT
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JTextField:setBackground
            close();
        } else if (e.getSource() == nextButton) {
            search(Direction.DOWN, searchBox.getText(), caseCheck.isSelected());
        } else if (e.getSource() == prevButton) {
            search(Direction.UP, searchBox.getText(), caseCheck.isSelected());
        } else if (e.getSource() == caseCheck) {
            searchBox.setBackground(ColourManager.getColour("FFFFFF"));
    //#SwingSearchBar.java:162: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
            line = parent.getTextPane().getLastVisibleLine();
    //#SwingSearchBar.java:163: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#SwingSearchBar.java:163: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
        }
    }
    //#SwingSearchBar.java:165: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.actionPerformed(ActionEvent)

    /** {@inheritDoc}. */
    @Override
    public void open() {
        SwingUtilities.invokeLater(new Runnable() {
    //#SwingSearchBar.java:170: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)): init'ed(this.this$0)
    //#SwingSearchBar.java:170: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.com.dmdirc.addons.ui_swing.components.SwingSearchBar$1(SwingSearchBar)
    //#SwingSearchBar.java:170: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.open()
    //#input(void open()): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                setVisible(true);
    //#SwingSearchBar.java:175: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.run()
    //#SwingSearchBar.java:175: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setVisible(bool)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.searchBox
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.searchBox != null
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
                searchBox.setBackground(ColourManager.getColour("FFFFFF"));
    //#SwingSearchBar.java:176: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1
    //#    method: void run()
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
                getFocus();
            }
    //#SwingSearchBar.java:178: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.run()
        });
    }
    //#SwingSearchBar.java:180: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.open()

    /** {@inheritDoc}. */
    @Override
    public void close() {
        SwingUtilities.invokeLater(new Runnable() {
    //#SwingSearchBar.java:185: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)): init'ed(this.this$0)
    //#SwingSearchBar.java:185: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.com.dmdirc.addons.ui_swing.components.SwingSearchBar$2(SwingSearchBar)
    //#SwingSearchBar.java:185: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.close()
    //#input(void close()): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                setVisible(false);
    //#SwingSearchBar.java:190: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.run()
    //#SwingSearchBar.java:190: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.SwingSearchBar:setVisible(bool)
    //#input(void run()): com/dmdirc/addons/ui_swing/UIUtilities.com.dmdirc.logger.ErrorLevel.HIGH
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingInputField]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/SwingInputField.__Dispatch_Table.requestFocusInWindow()Z
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ChannelFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/CustomInputFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/InputTextFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/QueryFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[com/dmdirc/addons/ui_swing/components/frames/ServerFrame]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.__Descendant_Table[others]
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.parent
    //#input(void run()): this.this$0.parent.__Tag
    //#input(void run()): this.this$0.parent.inputField
    //#input(void run()): this.this$0.parent.inputField.__Tag
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.parent != null
    //#pre[5] (void run()): (soft) this.parent.inputField != null
    //#pre[6] (void run()): (soft) this.parent.inputField.__Tag == com/dmdirc/addons/ui_swing/components/SwingInputField
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.SwingUtilities:invokeAndWait
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.logger.Logger:appError
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:run
    //#unanalyzed(void run()): Effects-of-calling:com.dmdirc.util.ReturnableThread:getObject
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Boolean:booleanValue
    //#test_vector(void run()): this.parent.__Tag: {0..506_367, 506_369..508_671, 508_673..509_183, 509_185..509_695, 509_697..510_207, 510_209..+Inf}, {506_368, 508_672, 509_184, 509_696, 510_208}
                if (parent instanceof InputTextFrame) {
                    ((InputTextFrame) parent).getInputField().requestFocusInWindow();
                } else {
                    parent.requestFocusInWindow();
    //#SwingSearchBar.java:194: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.components.frames.TextFrame:requestFocusInWindow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2
    //#    method: void run()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.components.frames.TextFrame:requestFocusInWindow()
                }
            }
    //#SwingSearchBar.java:196: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.run()
        });
    }
    //#SwingSearchBar.java:198: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.close()

    /** {@inheritDoc}. */
    @Override
    public void search(final String text, final boolean caseSensitive) {
        if (!searchBox.getText().isEmpty()) {
    //#SwingSearchBar.java:203: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.search(String, bool)
    //#input(void search(String, bool)): "?"._tainted
    //#input(void search(String, bool)): "Do you want to continue searching from the "._tainted
    //#input(void search(String, bool)): "beginning"._tainted
    //#input(void search(String, bool)): "end"._tainted
    //#input(void search(String, bool)): caseSensitive
    //#input(void search(String, bool)): com.dmdirc.ui.interfaces.SearchBar$Direction.UP
    //#input(void search(String, bool)): text
    //#input(void search(String, bool)): this
    //#input(void search(String, bool)): this.line
    //#input(void search(String, bool)): this.parent
    //#input(void search(String, bool)): this.parentWindow
    //#input(void search(String, bool)): this.searchBox
    //#output(void search(String, bool)): this.line
    //#pre[7] (void search(String, bool)): this.searchBox != null
    //#pre[2] (void search(String, bool)): (soft) init'ed(this.line)
    //#pre[5] (void search(String, bool)): (soft) this.parent != null
    //#pre[6] (void search(String, bool)): (soft) init'ed(this.parentWindow)
    //#presumption(void search(String, bool)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane(...)@205 != null
    //#presumption(void search(String, bool)): init'ed(com.dmdirc.ui.interfaces.SearchBar$Direction.UP)
    //#presumption(void search(String, bool)): javax.swing.JTextField:getText(...)@203 != null
    //#post(void search(String, bool)): init'ed(this.line)
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getDocument
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:setPosition
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchUp
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchDown
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getStartLine
    //#unanalyzed(void search(String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void search(String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void search(String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void search(String, bool)): Effects-of-calling:javax.swing.JOptionPane:showConfirmDialog
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setScrollBarPosition
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setSelectedTexT
    //#unanalyzed(void search(String, bool)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void search(String, bool)): Effects-of-calling:javax.swing.JTextField:setBackground
    //#test_vector(void search(String, bool)): this.line: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(void search(String, bool)): java.lang.String:isEmpty(...)@203: {1}, {0}
            if (line == -1) {
                line = parent.getTextPane().getLastVisibleLine();
    //#SwingSearchBar.java:205: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(String, bool)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#SwingSearchBar.java:205: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(String, bool)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
            }
            search(Direction.UP, text, caseSensitive);
        }
    }
    //#SwingSearchBar.java:209: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.search(String, bool)

    /** {@inheritDoc}. */
    @Override
    public void search(final Direction direction, final String text,
            final boolean caseSensitive) {
        boolean foundText = false;
    //#SwingSearchBar.java:215: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.search(SearchBar$Direction, String, bool)
    //#SwingSearchBar.java:215: Warning: unused assignment
    //#    Unused assignment into foundText
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    Attribs:  Uncertain
    //#input(void search(SearchBar$Direction, String, bool)): "?"._tainted
    //#input(void search(SearchBar$Direction, String, bool)): "Do you want to continue searching from the "._tainted
    //#input(void search(SearchBar$Direction, String, bool)): "beginning"._tainted
    //#input(void search(SearchBar$Direction, String, bool)): "end"._tainted
    //#input(void search(SearchBar$Direction, String, bool)): caseSensitive
    //#input(void search(SearchBar$Direction, String, bool)): com.dmdirc.ui.interfaces.SearchBar$Direction.UP
    //#input(void search(SearchBar$Direction, String, bool)): direction
    //#input(void search(SearchBar$Direction, String, bool)): text
    //#input(void search(SearchBar$Direction, String, bool)): this
    //#input(void search(SearchBar$Direction, String, bool)): this.parent
    //#input(void search(SearchBar$Direction, String, bool)): this.parentWindow
    //#input(void search(SearchBar$Direction, String, bool)): this.searchBox
    //#pre[5] (void search(SearchBar$Direction, String, bool)): this.parent != null
    //#pre[7] (void search(SearchBar$Direction, String, bool)): this.searchBox != null
    //#pre[6] (void search(SearchBar$Direction, String, bool)): (soft) init'ed(this.parentWindow)
    //#presumption(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane(...)@219 != null
    //#presumption(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange(...)@229 != null
    //#presumption(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange(...)@229 != null
    //#presumption(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange(...)@229 != null
    //#presumption(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange(...)@229 != null
    //#presumption(void search(SearchBar$Direction, String, bool)): init'ed(com.dmdirc.ui.interfaces.SearchBar$Direction.UP)
    //#test_vector(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine(...)@229: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void search(SearchBar$Direction, String, bool)): com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos(...)@229: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(void search(SearchBar$Direction, String, bool)): javax.swing.JOptionPane:showConfirmDialog(...)@229: {0}, {-2_147_483_648..-1, 1..4_294_967_295}

        final boolean up = Direction.UP == direction;

        final TextPane textPane = parent.getTextPane();
    //#SwingSearchBar.java:219: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
        final IRCDocument document = textPane.getDocument();
    //#SwingSearchBar.java:220: Warning: method not available - call not analyzed
    //#    call on IRCDocument com.dmdirc.addons.ui_swing.textpane.TextPane:getDocument()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: IRCDocument com.dmdirc.addons.ui_swing.textpane.TextPane:getDocument()
        final IRCDocumentSearcher searcher = new IRCDocumentSearcher(text, document,
    //#SwingSearchBar.java:221: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher(String, IRCDocument, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher(String, IRCDocument, bool)
                caseSensitive);
        searcher.setPosition(textPane.getSelectedRange());
    //#SwingSearchBar.java:223: Warning: method not available - call not analyzed
    //#    call on LinePosition com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: LinePosition com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange()
    //#SwingSearchBar.java:223: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:setPosition(LinePosition)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:setPosition(LinePosition)

        final LinePosition result = up ? searcher.searchUp() : searcher.searchDown();
    //#SwingSearchBar.java:225: Warning: method not available - call not analyzed
    //#    call on LinePosition com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchDown()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: LinePosition com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchDown()
    //#SwingSearchBar.java:225: Warning: method not available - call not analyzed
    //#    call on LinePosition com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchUp()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: LinePosition com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchUp()

        if (result == null) {
            foundText = false;
        } else if ((textPane.getSelectedRange().getEndLine() != 0 || 
    //#SwingSearchBar.java:229: Warning: method not available - call not analyzed
    //#    call on LinePosition com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: LinePosition com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange()
    //#SwingSearchBar.java:229: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine()
    //#SwingSearchBar.java:229: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos()
    //#SwingSearchBar.java:229: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.LinePosition:getStartLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.LinePosition:getStartLine()
                textPane.getSelectedRange().getEndPos() != 0) 
                && ((up && result.getEndLine() > textPane.getSelectedRange().getEndLine()) 
                || (!up && result.getStartLine() < textPane.getSelectedRange().getStartLine())) 
                && JOptionPane.showConfirmDialog(parentWindow,
                "Do you want to continue searching from the " + (up ? "end" : "beginning") + "?",
                "No more results", JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE) != JOptionPane.OK_OPTION) {
            // It's wrapped, and they don't want to continue searching

            foundText = false;
        } else {
            //found, select and return found
            textPane.setScrollBarPosition(result.getEndLine());
    //#SwingSearchBar.java:242: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine()
    //#SwingSearchBar.java:242: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.textpane.TextPane:setScrollBarPosition(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.textpane.TextPane:setScrollBarPosition(int)
            textPane.setSelectedTexT(result);
    //#SwingSearchBar.java:243: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.textpane.TextPane:setSelectedTexT(LinePosition)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.textpane.TextPane:setSelectedTexT(LinePosition)
            foundText = true;
        }

        if (foundText) {
            searchBox.setBackground(ColourManager.getColour("FFFFFF"));
    //#SwingSearchBar.java:248: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
        } else {
            searchBox.setBackground(ColourManager.getColour("FF0000"));
    //#SwingSearchBar.java:250: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void search(SearchBar$Direction, String, bool)
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
        }
    }
    //#SwingSearchBar.java:252: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.search(SearchBar$Direction, String, bool)

    /**
     * {@inheritDoc}.
     *
     * @param event Key event
     */
    @Override
    public void keyPressed(final KeyEvent event) {
        if (event.getSource() == searchBox) {
    //#SwingSearchBar.java:261: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyPressed(KeyEvent)
    //#input(void keyPressed(KeyEvent)): "?"._tainted
    //#input(void keyPressed(KeyEvent)): "Do you want to continue searching from the "._tainted
    //#input(void keyPressed(KeyEvent)): "beginning"._tainted
    //#input(void keyPressed(KeyEvent)): "end"._tainted
    //#input(void keyPressed(KeyEvent)): com.dmdirc.ui.interfaces.SearchBar$Direction.UP
    //#input(void keyPressed(KeyEvent)): event
    //#input(void keyPressed(KeyEvent)): this
    //#input(void keyPressed(KeyEvent)): this.caseCheck
    //#input(void keyPressed(KeyEvent)): this.listeners
    //#input(void keyPressed(KeyEvent)): this.parent
    //#input(void keyPressed(KeyEvent)): this.parentWindow
    //#input(void keyPressed(KeyEvent)): this.searchBox
    //#output(void keyPressed(KeyEvent)): this.line
    //#pre[1] (void keyPressed(KeyEvent)): event != null
    //#pre[5] (void keyPressed(KeyEvent)): this.listeners != null
    //#pre[4] (void keyPressed(KeyEvent)): (soft) this.caseCheck != null
    //#pre[6] (void keyPressed(KeyEvent)): (soft) this.parent != null
    //#pre[7] (void keyPressed(KeyEvent)): (soft) init'ed(this.parentWindow)
    //#pre[8] (void keyPressed(KeyEvent)): (soft) this.searchBox != null
    //#presumption(void keyPressed(KeyEvent)): com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane(...)@267 != null
    //#presumption(void keyPressed(KeyEvent)): init'ed(com.dmdirc.ui.interfaces.SearchBar$Direction.UP)
    //#presumption(void keyPressed(KeyEvent)): com.dmdirc.util.ListenerList:get(...)@271 != null
    //#presumption(void keyPressed(KeyEvent)): java.util.Iterator:next(...)@271 != null
    //#post(void keyPressed(KeyEvent)): possibly_updated(this.line)
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getDocument
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:getSelectedRange
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:setPosition
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchUp
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.IRCDocumentSearcher:searchDown
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndLine
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getEndPos
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.LinePosition:getStartLine
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:javax.swing.JOptionPane:showConfirmDialog
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setScrollBarPosition
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.textpane.TextPane:setSelectedTexT
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:com.dmdirc.ui.messages.ColourManager:getColour
    //#unanalyzed(void keyPressed(KeyEvent)): Effects-of-calling:javax.swing.JTextField:setBackground
    //#test_vector(void keyPressed(KeyEvent)): java.awt.event.KeyEvent:getKeyCode(...)@262: {-2_147_483_648..26, 28..4_294_967_295}, {27}
    //#test_vector(void keyPressed(KeyEvent)): java.awt.event.KeyEvent:getKeyCode(...)@264: {-2_147_483_648..9, 11..4_294_967_295}, {10}
    //#test_vector(void keyPressed(KeyEvent)): java.awt.event.KeyEvent:getKeyCode(...)@266: {114}, {-2_147_483_648..113, 115..4_294_967_295}
    //#test_vector(void keyPressed(KeyEvent)): java.awt.event.KeyEvent:getKeyCode(...)@266: {70}, {-2_147_483_648..69, 71..4_294_967_295}
    //#test_vector(void keyPressed(KeyEvent)): java.util.Iterator:hasNext(...)@271: {0}, {1}
            if (event.getKeyCode() == KeyEvent.VK_ESCAPE) {
                close();
            } else if (event.getKeyCode() == KeyEvent.VK_ENTER) {
                search(Direction.UP, searchBox.getText(), caseCheck.isSelected());
            } else if (event.getKeyCode() != KeyEvent.VK_F3 && event.getKeyCode() != KeyEvent.VK_F) {
                line = parent.getTextPane().getLastVisibleLine();
    //#SwingSearchBar.java:267: Warning: method not available - call not analyzed
    //#    call on TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void keyPressed(KeyEvent)
    //#    unanalyzed callee: TextPane com.dmdirc.addons.ui_swing.components.frames.TextFrame:getTextPane()
    //#SwingSearchBar.java:267: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void keyPressed(KeyEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.textpane.TextPane:getLastVisibleLine()
            }
        }

        for (KeyListener listener : listeners.get(KeyListener.class)) {
    //#SwingSearchBar.java:271: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void keyPressed(KeyEvent)
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
            listener.keyPressed(event);
        }
    }
    //#SwingSearchBar.java:274: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyPressed(KeyEvent)

    /**
     * {@inheritDoc}.
     *
     * @param event Key event
     */
    @Override
    public void keyTyped(final KeyEvent event) {
        //Ignore
    }
    //#SwingSearchBar.java:284: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyTyped(KeyEvent)
    //#SwingSearchBar.java:284: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyTyped(KeyEvent)

    /**
     * {@inheritDoc}.
     *
     * @param event Key event
     */
    @Override
    public void keyReleased(final KeyEvent event) {
        //Ignore
    }
    //#SwingSearchBar.java:294: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyReleased(KeyEvent)
    //#SwingSearchBar.java:294: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.keyReleased(KeyEvent)

    /** Focuses the search box in the search bar. */
    public void getFocus() {
        SwingUtilities.invokeLater(new Runnable() {
    //#SwingSearchBar.java:298: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)): init'ed(this.this$0)
    //#SwingSearchBar.java:298: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.com.dmdirc.addons.ui_swing.components.SwingSearchBar$3(SwingSearchBar)
    //#SwingSearchBar.java:298: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.getFocus()
    //#input(void getFocus()): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                searchBox.requestFocusInWindow();
    //#SwingSearchBar.java:303: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.run()
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.searchBox
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.searchBox != null
    //#presumption(void run()): javax.swing.JTextField:getText(...)@305 != null
                searchBox.setSelectionStart(0);
                searchBox.setSelectionEnd(searchBox.getText().length());
            }
    //#SwingSearchBar.java:306: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.run()
        });
    }
    //#SwingSearchBar.java:308: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.getFocus()

    /** {@inheritDoc}. */
    @Override
    public String getSearchPhrase() {
        return searchBox.getText();
    //#SwingSearchBar.java:313: method: String com.dmdirc.addons.ui_swing.components.SwingSearchBar.getSearchPhrase()
    //#input(String getSearchPhrase()): this
    //#input(String getSearchPhrase()): this.searchBox
    //#output(String getSearchPhrase()): return_value
    //#pre[2] (String getSearchPhrase()): this.searchBox != null
    //#post(String getSearchPhrase()): init'ed(return_value)
    //#SwingSearchBar.java:313: end of method: String com.dmdirc.addons.ui_swing.components.SwingSearchBar.getSearchPhrase()
    }

    /** {@inheritDoc}. */
    @Override
    public boolean isCaseSensitive() {
        return caseCheck.isSelected();
    //#SwingSearchBar.java:319: method: bool com.dmdirc.addons.ui_swing.components.SwingSearchBar.isCaseSensitive()
    //#input(bool isCaseSensitive()): this
    //#input(bool isCaseSensitive()): this.caseCheck
    //#output(bool isCaseSensitive()): return_value
    //#pre[2] (bool isCaseSensitive()): this.caseCheck != null
    //#post(bool isCaseSensitive()): init'ed(return_value)
    //#SwingSearchBar.java:319: end of method: bool com.dmdirc.addons.ui_swing.components.SwingSearchBar.isCaseSensitive()
    }

    /** {@inheritDoc}. */
    @Override
    public void insertUpdate(final DocumentEvent e) {
        searchBox.setBackground(ColourManager.getColour("FFFFFF"));
    //#SwingSearchBar.java:325: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.insertUpdate(DocumentEvent)
    //#SwingSearchBar.java:325: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void insertUpdate(DocumentEvent)
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#input(void insertUpdate(DocumentEvent)): this
    //#input(void insertUpdate(DocumentEvent)): this.searchBox
    //#pre[2] (void insertUpdate(DocumentEvent)): this.searchBox != null
    }
    //#SwingSearchBar.java:326: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.insertUpdate(DocumentEvent)

    /** {@inheritDoc}. */
    @Override
    public void removeUpdate(final DocumentEvent e) {
        searchBox.setBackground(ColourManager.getColour("FFFFFF"));
    //#SwingSearchBar.java:331: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.removeUpdate(DocumentEvent)
    //#SwingSearchBar.java:331: Warning: method not available - call not analyzed
    //#    call on Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
    //#    method: void removeUpdate(DocumentEvent)
    //#    unanalyzed callee: Color com.dmdirc.ui.messages.ColourManager:getColour(String)
    //#input(void removeUpdate(DocumentEvent)): this
    //#input(void removeUpdate(DocumentEvent)): this.searchBox
    //#pre[2] (void removeUpdate(DocumentEvent)): this.searchBox != null
    }
    //#SwingSearchBar.java:332: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.removeUpdate(DocumentEvent)

    /** {@inheritDoc}. */
    @Override
    public void changedUpdate(final DocumentEvent e) {
        //Ignore
    }
    //#SwingSearchBar.java:338: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.changedUpdate(DocumentEvent)
    //#SwingSearchBar.java:338: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.changedUpdate(DocumentEvent)

    /** {@inheritDoc} */
    @Override
    public void addKeyListener(final KeyListener l) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingSearchBar.java:343: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): this.val$l
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): this.val$l == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)): init'ed(this.val$l)
    //#SwingSearchBar.java:343: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.com.dmdirc.addons.ui_swing.components.SwingSearchBar$4(SwingSearchBar, KeyListener)
    //#SwingSearchBar.java:343: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.addKeyListener(KeyListener)
    //#input(void addKeyListener(KeyListener)): l
    //#input(void addKeyListener(KeyListener)): this
    //#unanalyzed(void addKeyListener(KeyListener)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void addKeyListener(KeyListener)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void addKeyListener(KeyListener)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                listeners.add(KeyListener.class, l);
    //#SwingSearchBar.java:348: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.run()
    //#SwingSearchBar.java:348: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:add(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$4
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:add(Class, Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.listeners
    //#input(void run()): this.val$l
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.listeners != null
            }
    //#SwingSearchBar.java:349: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.run()
        });
    }
    //#SwingSearchBar.java:351: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.addKeyListener(KeyListener)

    /** {@inheritDoc} */
    @Override
    public void removeKeyListener(final KeyListener l) {
        UIUtilities.invokeLater(new Runnable() {
    //#SwingSearchBar.java:356: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): Param_2
    //#input(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): this
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): this.val$l
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): this.val$l == Param_2
    //#post(void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)): init'ed(this.val$l)
    //#SwingSearchBar.java:356: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.com.dmdirc.addons.ui_swing.components.SwingSearchBar$5(SwingSearchBar, KeyListener)
    //#SwingSearchBar.java:356: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.removeKeyListener(KeyListener)
    //#input(void removeKeyListener(KeyListener)): l
    //#input(void removeKeyListener(KeyListener)): this
    //#unanalyzed(void removeKeyListener(KeyListener)): Effects-of-calling:javax.swing.SwingUtilities:isEventDispatchThread
    //#unanalyzed(void removeKeyListener(KeyListener)): Effects-of-calling:java.lang.Runnable:run
    //#unanalyzed(void removeKeyListener(KeyListener)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater

            /** {@inheritDoc} */
            @Override
            public void run() {
                listeners.remove(KeyListener.class, l);
    //#SwingSearchBar.java:361: method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.run()
    //#SwingSearchBar.java:361: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$5
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.listeners
    //#input(void run()): this.val$l
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.listeners != null
            }
    //#SwingSearchBar.java:362: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.run()
        });
    }
    //#SwingSearchBar.java:364: end of method: void com.dmdirc.addons.ui_swing.components.SwingSearchBar.removeKeyListener(KeyListener)
}
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$5]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$5] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init): __Dispatch_Table.run()V == &run
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$5.com.dmdirc.addons.ui_swing.components.SwingSearchBar$5__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$5
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$4]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$4] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init): __Dispatch_Table.run()V == &run
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$4.com.dmdirc.addons.ui_swing.components.SwingSearchBar$4__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$4
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$3]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$3] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init): __Dispatch_Table.run()V == &run
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$3.com.dmdirc.addons.ui_swing.components.SwingSearchBar$3__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$3
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$2]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init): __Dispatch_Table.run()V == &run
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2.com.dmdirc.addons.ui_swing.components.SwingSearchBar$2__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$2
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$1]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init): __Dispatch_Table.run()V == &run
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1.com.dmdirc.addons.ui_swing.components.SwingSearchBar$1__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar$1
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar]
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.close()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.getFocus()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.getSearchPhrase()Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.isCaseSensitive()Z
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyPressed(Ljava/awt/event/KeyEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyReleased(Ljava/awt/event/KeyEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyTyped(Ljava/awt/event/KeyEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.open()V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.removeKeyListener(Ljava/awt/event/KeyListener;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.search(Lcom/dmdirc/ui/interfaces/SearchBar$Direction;Ljava/lang/String;Z)V
    //#output(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.search(Ljava/lang/String;Z)V
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/SwingSearchBar] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.addKeyListener(Ljava/awt/event/KeyListener;)V == &addKeyListener
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V == &changedUpdate
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.close()V == &close
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.getFocus()V == &getFocus
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.getSearchPhrase()Ljava/lang/String; == &getSearchPhrase
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V == &insertUpdate
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.isCaseSensitive()Z == &isCaseSensitive
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyPressed(Ljava/awt/event/KeyEvent;)V == &keyPressed
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyReleased(Ljava/awt/event/KeyEvent;)V == &keyReleased
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.keyTyped(Ljava/awt/event/KeyEvent;)V == &keyTyped
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.open()V == &open
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.removeKeyListener(Ljava/awt/event/KeyListener;)V == &removeKeyListener
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V == &removeUpdate
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.search(Lcom/dmdirc/ui/interfaces/SearchBar$Direction;Ljava/lang/String;Z)V == &search
    //#post(com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init): __Dispatch_Table.search(Ljava/lang/String;Z)V == &search
    //#SwingSearchBar.java:: end of method: com.dmdirc.addons.ui_swing.components.SwingSearchBar.com.dmdirc.addons.ui_swing.components.SwingSearchBar__static_init
    //#SwingSearchBar.java:: end of class: com.dmdirc.addons.ui_swing.components.SwingSearchBar
