Buggy code:
public class EndpointStep extends WizardStep < CreateVMWizardModel > { private final VMServiceModule node ; private CreateVMWizardModel model ; private JPanel rootPanel ; private JList createVmStepsList ; private JTable endpointsTable ; private JComboBox portNameComboBox ; private JButton addButton ; private Project project ; public EndpointStep ( final CreateVMWizardModel model , Project project , VMServiceModule node ) { } @ Override public JComponent prepare ( WizardNavigationState wizardNavigationState ) { rootPanel . revalidate ( ) ; final EndpointStep . EndpointTableModel endpointTableModel = new EndpointStep . EndpointTableModel ( ) ; endpointsTable . addMouseListener ( new MouseAdapter ( ) { @ Override public void mouseClicked ( MouseEvent evt ) { int row = endpointsTable . rowAtPoint ( evt . getPoint ( ) ) ; int col = endpointsTable . columnAtPoint ( evt . getPoint ( ) ) ; if ( col == 5 ) { if ( ( ( endpointsTable . getWidth ( ) ) - 30 ) < ( evt . getX ( ) ) ) { endpointTableModel . getData ( ) . remove ( row ) ; endpointTableModel . fireTableDataChanged ( ) ; } } } } ) ; endpointTableModel . addTableModelListener ( new TableModelListener ( ) { @ Override public void tableChanged ( TableModelEvent tableModelEvent ) { boolean hasErrors = false ; for ( int i = 0 ; ( i < ( endpointTableModel . getRowCount ( ) ) ) && ( ! hasErrors ) ; i ++ ) { String errorFromRow = EndpointStep . getErrorFromRow ( i , endpointTableModel . getData ( ) ) ; if ( ( errorFromRow . length ( ) ) > 0 ) { hasErrors = true ; } } <START_BUG> model . getCurrentNavigationState ( ) . FINISH . setEnabled ( ( ( ! hasErrors ) && ( ( endpointTableModel . getRowCount ( ) ) > 0 ) ) ) ; <END_BUG> } } ) ; if ( model . getVirtualMachineImage ( ) . getOperatingSystemType ( ) . equals ( "Windows" ) ) { endpointTableModel . getData ( ) . add ( new Endpoint ( "Powershell" , "TCP" , 5983 , 5983 ) ) ; endpointTableModel . getData ( ) . add ( new Endpoint ( "Remote<seq2seq4repair_space>Desktop" , "TCP" , 3389 , 3389 ) ) ; } else { endpointTableModel . getData ( ) . add ( new Endpoint ( "SSH" , "TCP" , 22 , 22 ) ) ; } endpointsTable . setModel ( endpointTableModel ) ; endpointsTable . getColumnModel ( ) . getColumn ( 0 ) . setPreferredWidth ( 15 ) ; endpointsTable . getColumnModel ( ) . getColumn ( 1 ) . setPreferredWidth ( 150 ) ; endpointsTable . getColumnModel ( ) . getColumn ( 2 ) . setPreferredWidth ( 75 ) ; endpointsTable . getColumnModel ( ) . getColumn ( 3 ) . setPreferredWidth ( 75 ) ; endpointsTable . getColumnModel ( ) . getColumn ( 4 ) . setPreferredWidth ( 60 ) ; endpointsTable . getColumnModel ( ) . getColumn ( 5 ) . setPreferredWidth ( 205 ) ; endpointsTable . setTableHeader ( null ) ; return rootPanel ; } @ Override public boolean onFinish ( ) { } private void createUIComponents ( ) { } private static String getErrorFromRow ( int row , Vector < Endpoint > list ) { } private class DeleteRenderer extends JPanel implements TableCellRenderer { public DeleteRenderer ( ) { } @ Override public Component getTableCellRendererComponent ( final JTable jTable , Object o , boolean b , boolean b1 , final int row , int i1 ) { } } private class ProtocolRenderer extends ComboBox implements TableCellRenderer { public ProtocolRenderer ( ) { } @ Override public Component getTableCellRendererComponent ( JTable jTable , Object value , boolean b , boolean b1 , int i , int i1 ) { } } private class ErrorRenderer extends JLabel implements TableCellRenderer { public ErrorRenderer ( ) { } @ Override public Component getTableCellRendererComponent ( JTable jTable , Object value , boolean isSelected , boolean hasFocus , int row , int col ) { } } private class EndpointTableModel extends AbstractTableModel { private Vector < Endpoint > data = new Vector < Endpoint > ( ) ; private String [ ] columns = new String [ ] { "" , "Port<seq2seq4repair_space>name" , "Public<seq2seq4repair_space>port" , "Private<seq2seq4repair_space>port" , "Protocol" , "" } ; @ Override public int getRowCount ( ) { } @ Override public int getColumnCount ( ) { } @ Override public String getColumnName ( int i ) { } @ Override public boolean isCellEditable ( int row , int col ) { } @ Override public Object getValueAt ( int row , int column ) { } @ Override public void setValueAt ( Object object , int row , int col ) { } public Vector < Endpoint > getData ( ) { } } }

Fix:
model . getCurrentNavigationState ( ) . FINISH . setEnabled ( ( ! hasErrors ) ) ;