Program: 50009
Project: 50009
Buggy source:
/** 
 * Initialize components of the GUI Create all the GUI components, set their specific properties and add them to the  window. Also add any necessary ActionListeners.
 */
public void initComponents(){
  humanPlay=new JButton("String_Node_Str");
  humanPlay.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent arg0){
      final JFrame popup=new JFrame("String_Node_Str");
      popup.setLayout(new FlowLayout());
      popup.setSize(370,150);
      popup.setResizable(false);
      popup.setLocationRelativeTo(null);
      final JComboBox dropdown=new JComboBox(Builder.getArray());
      popup.add(new JLabel("String_Node_Str"));
      popup.add(dropdown);
      final JButton done=new JButton("String_Node_Str");
      String[] timerNames={"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
      final JComboBox timers=new JComboBox(timerNames);
      final JLabel totalTimeText=new JLabel("String_Node_Str");
      totalTimeText.setVisible(false);
      final TextField totalTime=new TextField("String_Node_Str",3);
      totalTime.setVisible(false);
      final JLabel increaseText=new JLabel("String_Node_Str");
      increaseText.setVisible(false);
      final TextField increase=new TextField("String_Node_Str",3);
      increase.setVisible(false);
      timers.addActionListener(new ActionListener(){
        @Override public void actionPerformed(        ActionEvent arg0){
          String timerName=(String)timers.getSelectedItem();
          if (timerName.equals("String_Node_Str") == false) {
            totalTimeText.setVisible(true);
            totalTime.setVisible(true);
            increaseText.setVisible(true);
            increase.setVisible(true);
          }
 else {
            totalTimeText.setVisible(false);
            totalTime.setVisible(false);
            increaseText.setVisible(false);
            increase.setVisible(false);
          }
        }
      }
);
      popup.add(new JLabel("String_Node_Str"));
      popup.add(timers);
      popup.add(totalTimeText);
      popup.add(totalTime);
      popup.add(increaseText);
      popup.add(increase);
      done.addActionListener(new ActionListener(){
        @Override public void actionPerformed(        ActionEvent arg0){
          String timerName=(String)timers.getSelectedItem();
          long startTime=Integer.parseInt(totalTime.getText()) * 1000;
          long increment=Integer.parseInt(increase.getText()) * 1000;
          ChessTimer blackTimer=null;
          ChessTimer whiteTimer=null;
          if (timerName.equals("String_Node_Str")) {
            blackTimer=new NoTimer();
            whiteTimer=new NoTimer();
          }
 else           if (timerName.equals("String_Node_Str")) {
            blackTimer=new BronsteinDelay(increment,startTime,true);
            whiteTimer=new BronsteinDelay(increment,startTime,false);
          }
 else           if (timerName.equals("String_Node_Str")) {
            blackTimer=new Fischer(increment,startTime,false,true);
            whiteTimer=new Fischer(increment,startTime,false,false);
          }
 else           if (timerName.equals("String_Node_Str")) {
            blackTimer=new Fischer(increment,startTime,true,true);
            whiteTimer=new Fischer(increment,startTime,true,false);
          }
 else           if (timerName.equals("String_Node_Str")) {
            blackTimer=new HourGlass(startTime / 2,true);
            whiteTimer=new HourGlass(startTime / 2,false);
          }
 else           if (timerName.equals("String_Node_Str")) {
            blackTimer=new SimpleDelay(increment,startTime,true);
            whiteTimer=new SimpleDelay(increment,startTime,false);
          }
 else {
            blackTimer=new Word(startTime);
            whiteTimer=new Word(startTime);
          }
          Game toPlay=Builder.newGame((String)dropdown.getSelectedItem());
          toPlay.setTimers(whiteTimer,blackTimer);
          PlayGame game=new PlayGame(toPlay,false);
          Driver.getInstance().setPanel(game);
          popup.dispose();
        }
      }
);
      popup.add(done);
      final JButton back=new JButton("String_Node_Str");
      back.addActionListener(new ActionListener(){
        @Override public void actionPerformed(        ActionEvent arg0){
          popup.dispose();
        }
      }
);
      popup.add(back);
      popup.setVisible(true);
    }
  }
);
  networkPlay=new JButton("String_Node_Str");
  AIPlay=new JButton("String_Node_Str");
  backButton=new JButton("String_Node_Str");
  backButton.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent e){
      Driver.getInstance().helpMenu.setText("String_Node_Str");
      Driver.getInstance().gameInfo.setVisible(false);
      Driver.getInstance().gamePlayHelp.setVisible(false);
      Driver.getInstance().revertPanel();
    }
  }
);
  GroupLayout layout=new GroupLayout(this);
  this.setLayout(layout);
  layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(20,20,20).addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(AIPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE).addComponent(networkPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE).addComponent(humanPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE))).addGroup(layout.createSequentialGroup().addGap(112,112,112).addComponent(backButton))).addContainerGap(20,Short.MAX_VALUE)));
  layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addComponent(humanPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(networkPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(AIPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(backButton).addGap(4,4,4)));
}

Fixed version (ground truth):
/** 
 * Initialize components of the GUI Create all the GUI components, set their specific properties and add them to the  window. Also add any necessary ActionListeners.
 */
public void initComponents(){
  humanPlay=new JButton("String_Node_Str");
  humanPlay.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent arg0){
      if (!clicked) {
        clicked=true;
        final JFrame popup=new JFrame("String_Node_Str");
        popup.setLayout(new FlowLayout());
        popup.setSize(370,150);
        popup.setResizable(false);
        popup.setLocationRelativeTo(null);
        final JComboBox dropdown=new JComboBox(Builder.getArray());
        popup.add(new JLabel("String_Node_Str"));
        popup.add(dropdown);
        final JButton done=new JButton("String_Node_Str");
        String[] timerNames={"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
        final JComboBox timers=new JComboBox(timerNames);
        final JLabel totalTimeText=new JLabel("String_Node_Str");
        totalTimeText.setVisible(false);
        final TextField totalTime=new TextField("String_Node_Str",3);
        totalTime.setVisible(false);
        final JLabel increaseText=new JLabel("String_Node_Str");
        increaseText.setVisible(false);
        final TextField increase=new TextField("String_Node_Str",3);
        increase.setVisible(false);
        timers.addActionListener(new ActionListener(){
          @Override public void actionPerformed(          ActionEvent arg0){
            String timerName=(String)timers.getSelectedItem();
            if (timerName.equals("String_Node_Str") == false) {
              totalTimeText.setVisible(true);
              totalTime.setVisible(true);
              increaseText.setVisible(true);
              increase.setVisible(true);
            }
 else {
              totalTimeText.setVisible(false);
              totalTime.setVisible(false);
              increaseText.setVisible(false);
              increase.setVisible(false);
            }
          }
        }
);
        popup.add(new JLabel("String_Node_Str"));
        popup.add(timers);
        popup.add(totalTimeText);
        popup.add(totalTime);
        popup.add(increaseText);
        popup.add(increase);
        popup.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        popup.addWindowListener(new WindowListener(){
          public void windowActivated(          WindowEvent arg0){
          }
          public void windowClosed(          WindowEvent arg0){
          }
          public void windowClosing(          WindowEvent arg0){
            clicked=false;
            popup.setVisible(false);
            popup.dispose();
          }
          public void windowDeactivated(          WindowEvent arg0){
          }
          public void windowDeiconified(          WindowEvent arg0){
          }
          public void windowIconified(          WindowEvent arg0){
          }
          public void windowOpened(          WindowEvent arg0){
          }
        }
);
        done.addActionListener(new ActionListener(){
          @Override public void actionPerformed(          ActionEvent arg0){
            clicked=false;
            String timerName=(String)timers.getSelectedItem();
            long startTime=Integer.parseInt(totalTime.getText()) * 1000;
            long increment=Integer.parseInt(increase.getText()) * 1000;
            ChessTimer blackTimer=null;
            ChessTimer whiteTimer=null;
            if (timerName.equals("String_Node_Str")) {
              blackTimer=new NoTimer();
              whiteTimer=new NoTimer();
            }
 else             if (timerName.equals("String_Node_Str")) {
              blackTimer=new BronsteinDelay(increment,startTime,true);
              whiteTimer=new BronsteinDelay(increment,startTime,false);
            }
 else             if (timerName.equals("String_Node_Str")) {
              blackTimer=new Fischer(increment,startTime,false,true);
              whiteTimer=new Fischer(increment,startTime,false,false);
            }
 else             if (timerName.equals("String_Node_Str")) {
              blackTimer=new Fischer(increment,startTime,true,true);
              whiteTimer=new Fischer(increment,startTime,true,false);
            }
 else             if (timerName.equals("String_Node_Str")) {
              blackTimer=new HourGlass(startTime / 2,true);
              whiteTimer=new HourGlass(startTime / 2,false);
            }
 else             if (timerName.equals("String_Node_Str")) {
              blackTimer=new SimpleDelay(increment,startTime,true);
              whiteTimer=new SimpleDelay(increment,startTime,false);
            }
 else {
              blackTimer=new Word(startTime);
              whiteTimer=new Word(startTime);
            }
            Game toPlay=Builder.newGame((String)dropdown.getSelectedItem());
            toPlay.setTimers(whiteTimer,blackTimer);
            PlayGame game=new PlayGame(toPlay,false);
            Driver.getInstance().setPanel(game);
            popup.dispose();
          }
        }
);
        popup.add(done);
        final JButton back=new JButton("String_Node_Str");
        back.addActionListener(new ActionListener(){
          @Override public void actionPerformed(          ActionEvent arg0){
            clicked=false;
            popup.dispose();
          }
        }
);
        popup.add(back);
        popup.setVisible(true);
      }
    }
  }
);
  networkPlay=new JButton("String_Node_Str");
  AIPlay=new JButton("String_Node_Str");
  backButton=new JButton("String_Node_Str");
  backButton.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent e){
      Driver.getInstance().helpMenu.setText("String_Node_Str");
      Driver.getInstance().gameInfo.setVisible(false);
      Driver.getInstance().gamePlayHelp.setVisible(false);
      Driver.getInstance().revertPanel();
    }
  }
);
  GroupLayout layout=new GroupLayout(this);
  this.setLayout(layout);
  layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(20,20,20).addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(AIPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE).addComponent(networkPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE).addComponent(humanPlay,GroupLayout.PREFERRED_SIZE,234,GroupLayout.PREFERRED_SIZE))).addGroup(layout.createSequentialGroup().addGap(112,112,112).addComponent(backButton))).addContainerGap(20,Short.MAX_VALUE)));
  layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addComponent(humanPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(networkPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(AIPlay).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(backButton).addGap(4,4,4)));
}