[Demonstration 1]

[Buggy Method]
@Override
public void run() {
    try {
        synchronized (game) {
            // add new enemies
            addEnemies();
            // remove dead enemies
            removeEnemies();
            // execute extensions
            LOG.debug("============debut============");
            for (EnemyExtension extension : extensions) {
                runExtension(extension);
            }
            LOG.debug("============fin============");
        }
    } catch (Exception e) {
        LOG.error("Failed to add or remove enemy on game {}. Cause: {}", game, e);
        messageService.addError(new GameException("Failed to add or remove enemy", e));
    }
}

[Buggy Hunk]
for(EnemyExtension extension : extensions) {

[Patch]
for(EnemyExtension extension : new CopyOnWriteArrayList<>(extensions)) {

[Demonstration 2]

[Buggy Method]
public boolean shift(boolean a) {
    boolean rc = this.bits[0];
    for (int i = 0; i < bits.length; i++) {
        bits[i] = bits[i + 1];
    }
    bits[bits.length - 1] = a;
    return (rc);
}

[Buggy Hunk]
for (int i=0;i<bits.length;i++){

[Patch]
for (int i=0;i<bits.length-1;i++){

[Demonstration 3]

[Buggy Method]
private void addModeButtonHandler() {
    addMode.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            try {
                if (modeName.getSelectionModel().isEmpty()) {
                    Alert alert = new Alert(AlertType.ERROR, "Please enter a mode name.", ButtonType.OK);
                    alert.showAndWait();
                } else {
                    if (modes.getModes().isEmpty()) {
                        startMode.setSelected(true);
                    }
                    if (modes.getModes().containsKey(modeName.getSelectionModel().getSelectedItem().toString())) {
                        //System.out.println(flaggerMap.getFlagMapping().get(flaggerName.getSelectionModel().getSelectedItem().toString()).getTrueCondition());
                        modes.remove(modeName.getSelectionModel().getSelectedItem().toString());
                    }
                    if (checkModes() == true) {
                        RadioButton selectedRadioButton1 = (RadioButton) motorGroup1.getSelectedToggle();
                        String toogleGroupValue1 = selectedRadioButton1.getText();
                        RadioButton selectedRadioButton2 = (RadioButton) motorGroup2.getSelectedToggle();
                        String toogleGroupValue2 = selectedRadioButton2.getText();
                        //System.out.println(toogleGroupValue2);
                        //RadioButton selectedRadioButton3 = (RadioButton) startingMode.getSelectedToggle();
                        //String toogleGroupValue3 = selectedRadioButton3.getText();
                        String isStart = "";
                        if (startMode.isSelected()) {
                            isStart = "Starting Mode";
                        }
                        modes.add(modeName.getSelectionModel().getSelectedItem().toString().toUpperCase(), motor1.getSelectionModel().getSelectedItem().toString(), toogleGroupValue1, motor2.getSelectionModel().getSelectedItem().toString(), toogleGroupValue2, isStart, (int) modeTableNumber.getValue());
                        previewCode();
                        clearAllMode();
                        populateModeTransition();
                        populateModeNameSelector();
                    }
                }
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
}

[Buggy Hunk]
if(modeName.getSelectionModel().isEmpty()){

[Patch]
if(modeName.getSelectionModel().getSelectedItem().equals("Mode Name")){