Buggy code:
public class ManagePanel extends JPanel { public ManagePanel ( PluginManager window ) { } public void update ( ) { } private JCheckBox hideLibraries ; private JTable table ; private ManagePanel . PluginTableModel pluginModel ; private PluginManager window ; class Entry { static final String ERROR = "error" ; static final String LOADED = "loaded" ; static final String NOT_LOADED = "not-loaded" ; String status ; String jar ; String clazz ; String name ; String version ; String author ; String docs ; List jars ; Entry ( String jar ) { } Entry ( PluginJAR jar ) { } } class PluginTableModel extends AbstractTableModel { private List entries ; private int sortType = ManagePanel . EntryCompare . NAME ; public PluginTableModel ( ) { } public int getColumnCount ( ) { } public Class getColumnClass ( int columnIndex ) { } public String getColumnName ( int column ) { } public ManagePanel . Entry getEntry ( int rowIndex ) { } public int getRowCount ( ) { } public Object getValueAt ( int rowIndex , int columnIndex ) { } public boolean isCellEditable ( int rowIndex , int columnIndex ) { } public void setValueAt ( Object value , int rowIndex , int columnIndex ) { } public void setSortType ( int type ) { } public void sort ( int type ) { } public void update ( ) { } private void loadPluginJAR ( String jarPath ) { } private void unloadPluginJARWithDialog ( PluginJAR jar ) { } private void transitiveClosure ( String [ ] dependents , List listModel ) { } private void unloadPluginJAR ( PluginJAR jar ) { } } class TextRenderer extends DefaultTableCellRenderer { private DefaultTableCellRenderer tcr ; public TextRenderer ( DefaultTableCellRenderer tcr ) { } public Component getTableCellRendererComponent ( JTable table , Object value , boolean isSelected , boolean hasFocus , int row , int column ) { } } class HideLibrariesButton extends JCheckBox implements ActionListener { HideLibrariesButton ( ) { } public void actionPerformed ( ActionEvent evt ) { jEdit . setBooleanProperty ( "plugin-manager.hide-libraries.toggle" , isSelected ( ) ) ; ManagePanel . this . update ( ) ; } } class RemoveButton extends JButton implements ActionListener , ListSelectionListener { public RemoveButton ( ) { } public void actionPerformed ( ActionEvent evt ) { int [ ] selected = table . getSelectedRows ( ) ; List listModel = new LinkedList ( ) ; Roster roster = new Roster ( ) ; for ( int i = 0 ; i < ( selected . length ) ; i ++ ) { ManagePanel . Entry entry = pluginModel . getEntry ( selected [ i ] ) ; Iterator iter = entry . jars . iterator ( ) ; while ( iter . hasNext ( ) ) { String jar = ( ( String ) ( iter . next ( ) ) ) ; listModel . add ( jar ) ; roster . addRemove ( jar ) ; } } int button = GUIUtilities . listConfirm ( window , "plugin-manager.remove-confirm" , null , listModel . toArray ( ) ) ; if ( button == ( JOptionPane . YES_OPTION ) ) { roster . performOperationsInAWTThread ( window ) ; pluginModel . update ( ) ; } } public void valueChanged ( ListSelectionEvent e ) { } } class HelpButton extends JButton implements ActionListener , ListSelectionListener { private URL docURL ; public HelpButton ( ) { } public void actionPerformed ( ActionEvent evt ) { <START_BUG> HelpViewer . create ( docURL ) ; <END_BUG> } public void valueChanged ( ListSelectionEvent e ) { } } static class EntryCompare implements Comparator { public static final int NAME = 1 ; public static final int STATUS = 2 ; private int type ; public EntryCompare ( int type ) { } public int compare ( Object o1 , Object o2 ) { } private int compareNames ( ManagePanel . Entry e1 , ManagePanel . Entry e2 ) { } } class HeaderMouseHandler extends MouseAdapter { public void mouseClicked ( MouseEvent evt ) { } } }

Fix:
HelpViewerFactory . create ( docURL ) ;