Buggy code:
void reorderActionPressed ( ActionEvent e ) { } void swapActions ( int row ) { } void updateConditionalPressed ( ActionEvent e ) { } void cancelConditionalPressed ( ActionEvent e ) { } void deleteConditionalPressed ( String sName ) { } @ SuppressWarnings ( "fallthrough" ) @ SuppressFBWarnings ( "SF_SWITCH_FALLTHROUGH" ) boolean logicTypeChanged ( ActionEvent e ) { } void helpPressed ( ActionEvent e ) { } void makeAntecedent ( ) { } void appendToAntecedent ( ConditionalVariable variable ) { } boolean validateAntecedent ( ) { } boolean alreadyEditingActionOrVariable ( ) { } void makeEditVariableWindow ( int row ) { } void makeEditActionWindow ( int row ) { } JPanel makeTopPanel ( JFrame frame , String title , int width , int height ) { } JPanel makeEditPanel ( JComponent comp , String label , String hint ) { } JPanel makeButtonPanel ( ActionListener updateListener , ActionListener cancelListener , ActionListener deleteListener ) { } void updateActionPressed ( ) { } void updateVariablePressed ( ) { } void cancelEditActionPressed ( ) { } void cleanUpAction ( ) { } void cancelEditVariablePressed ( ) { } void cleanUpVariable ( ) { } void deleteActionPressed ( ) { } void deleteActionPressed ( int row ) { } void deleteVariablePressed ( ) { } void deleteVariablePressed ( int row ) { } void initializeStateVariables ( ) { } void initializeActionVariables ( ) { } JFileChooser sndFileChooser = null ; JFileChooser scriptFileChooser = null ; JFileChooser defaultFileChooser = null ; void setFileLocation ( ActionEvent e ) { } void actionItemChanged ( int type ) { } private void compareTypeChanged ( int selection ) { } transient ActionListener variableSignalTestStateListener = new ActionListener ( ) { public void actionPerformed ( ActionEvent e ) { } } ; transient ActionListener variableSignalHeadNameListener = new ActionListener ( ) { public void actionPerformed ( ActionEvent e ) { } } ; transient ActionListener actionSignalHeadNameListener = new ActionListener ( ) { public void actionPerformed ( ActionEvent e ) { } } ; void loadJComboBoxWithSignalAspects ( JComboBox < String > box , String signalName ) { } transient ActionListener variableSignalMastNameListener = new ActionListener ( ) { public void actionPerformed ( ActionEvent e ) { } } ; transient ActionListener actionSignalMastNameListener = new ActionListener ( ) { public void actionPerformed ( ActionEvent e ) { } } ; void loadJComboBoxWithMastAspects ( JComboBox < String > box , String mastName ) { } private void variableTypeChanged ( int itemType ) { } boolean validateVariable ( ) { } boolean validateAction ( ) { } static int getActionTypeFromBox ( int itemType , int actionTypeSelection ) { } boolean validateIntensityReference ( int actionType , String intReference ) { } boolean validateIntensity ( int time ) { } boolean validateTimeReference ( int actionType , String ref ) { } boolean validateTime ( int actionType , float time ) { } void displayBadNumberReference ( int actionType ) { } String validateMemoryReference ( String name ) { } boolean confirmIndirectMemory ( String memName ) { } String validateTurnoutReference ( String name ) { } String validateSignalHeadReference ( String name ) { } String validateSignalMastReference ( String name ) { } String validateWarrantReference ( String name ) { } String validateOBlockReference ( String name ) { } String validateSensorReference ( String name ) { } String validateLightReference ( String name ) { } String validateConditionalReference ( String name ) { } String validateLogixReference ( String name ) { } String validateRouteReference ( String name ) { } String validateAudioReference ( String name ) { } String validateEntryExitReference ( String name ) { } Light getLight ( String name ) { } int parseTime ( String s ) { int nHour = 0 ; int nMin = 0 ; boolean error = false ; int index = s . indexOf ( ':' ) ; String hour = null ; String minute = null ; try { if ( index > 0 ) { hour = s . substring ( 0 , index ) ; <START_BUG> if ( index < ( s . length ( ) ) ) { <END_BUG> minute = s . substring ( ( index + 1 ) ) ; } else { minute = "0" ; } } else if ( index == 0 ) { hour = "0" ; minute = s . substring ( ( index + 1 ) ) ; } else { hour = s ; minute = "0" ; } } catch ( IndexOutOfBoundsException ioob ) { error = true ; } if ( ! error ) { try { nHour = Integer . valueOf ( hour ) ; if ( ( nHour < 0 ) || ( nHour > 24 ) ) { error = true ; } nMin = Integer . valueOf ( minute ) ; if ( ( nMin < 0 ) || ( nMin > 59 ) ) { error = true ; } } catch ( NumberFormatException e ) { error = true ; } } if ( error ) { JOptionPane . showMessageDialog ( editConditionalFrame , MessageFormat . format ( LogixTableAction . rbx . getString ( "Error26" ) , new Object [ ] { s } ) , LogixTableAction . rbx . getString ( "ErrorTitle" ) , JOptionPane . ERROR_MESSAGE ) ; return - 1 ; } return ( nHour * 60 ) + nMin ; } public static String formatTime ( int hour , int minute ) { } void messageInvalidSignalHeadAppearance ( String name , String appearance ) { } void messageInvalidActionItemName ( String name , String itemType ) { } void messageDuplicateConditionalUserName ( String svName ) { } public class ConditionalTableModel extends AbstractTableModel implements PropertyChangeListener { public static final int SNAME_COLUMN = 0 ; public static final int UNAME_COLUMN = 1 ; public static final int STATE_COLUMN = 2 ; public static final int BUTTON_COLUMN = 3 ; public ConditionalTableModel ( ) { } synchronized void updateConditionalListeners ( ) { } public void propertyChange ( PropertyChangeEvent e ) { }

Fix:
if ( ( index + 1 ) < ( s . length ( ) ) ) {