[Demonstration 1]

[Buggy Method]
public static void main(String[] args) {
    // check arguments
    if (args.length != 3) {
        System.out.println("USAGE: java " + LabelAdder.class.getName() + " <repo dir> <input file> <output file>");
        System.exit(0);
    }
    File repoDir = new File(args[0]);
    File inputFile = new File(args[1]);
    File outputFile = new File(args[2]);
    // start repository
    try {
        NativeStore store = new NativeStore(repoDir);
        Repository repository = new SailRepository(store);
        repository.initialize();
        RepositoryConnection connection = repository.getConnection();
        FileReader fileReader = new FileReader(inputFile);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        FileWriter fileWriter = new FileWriter(outputFile);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        try {
            String line = bufferedReader.readLine();
            // check if input file is empty
            if (line == null) {
                System.err.println("input file is empty: " + inputFile.getAbsolutePath());
                System.exit(1);
            }
            // write header line
            bufferedWriter.write("lineage" + Reconciler.COLUMN_SEPARATOR + line + "\n");
            while ((line = bufferedReader.readLine()) != null) {
                String[] fields = Reconciler.COLUMN_SPLITTER.split(line);
                if (fields[0].length() == 0)
                    continue;
                String[] places = Reconciler.LIST_SPLITTER.split(fields[0]);
                StringBuilder lineages = new StringBuilder();
                for (String place : places) {
                    URL placeURL = new URL(place);
                    lineages.append(Reconciler.LIST_SEPARATOR);
                    lineages.append(lineage(connection, placeURL));
                }
                bufferedWriter.write(lineages.substring(Reconciler.LIST_SEPARATOR.length()) + Reconciler.COLUMN_SEPARATOR + line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (QueryEvaluationException e) {
            e.printStackTrace();
        } catch (MalformedQueryException e) {
            e.printStackTrace();
        } finally {
            bufferedWriter.close();
            fileWriter.close();
            bufferedReader.close();
            fileReader.close();
            connection.close();
            repository.shutDown();
            store.shutDown();
        }
    } catch (RepositoryException e) {
        e.printStackTrace();
    } catch (SailException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

[Buggy Hunk]
if (fields[0].length() == 0) continue;

[Patch]
if (fields[0].length() == 0) bufferedWriter.write(Reconciler.COLUMN_SEPARATOR + line + "\n");

[Demonstration 2]

[Buggy Method]
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // Setup any handles to view objects here
    // EditText etFoo = (EditText) view.findViewById(R.id.etFoo);
    EditText editText;
    Spinner spinnerPriority;
    Spinner spinnerStatus;
    DatePicker datePicker;
    String taskName;
    /* get todoList id */
    id = getArguments().getLong("itemId", 0);
    /* Set Task Name */
    taskName = getArguments().getString("itemText", "");
    editText = (EditText) getView().findViewById(R.id.editTaskName);
    editText.setText(taskName);
    TodoList todoList = getTodoInfoFromDB(taskName);
    /* Set date picker */
    datePicker = (DatePicker) getView().findViewById(R.id.datePicker);
    String dateStr = getArguments().getString("itemDueDate", "");
    String[] strArray = dateStr.toLowerCase().split("-");
    datePicker.init(parseInt(strArray[0]), parseInt(strArray[1]) - 1, parseInt(strArray[2]), null);
    /* Set priority spinner */
    spinnerPriority = (Spinner) getView().findViewById(R.id.spinner);
    spinnerPriority.setOnItemSelectedListener(this);
    // Creating adapter for spinner
    ArrayAdapter<CharSequence> priorityAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.priority, android.R.layout.simple_spinner_dropdown_item);
    // attaching data adapter to spinner
    spinnerPriority.setAdapter(priorityAdapter);
    int priorityFromList = getArguments().getInt("itemPriority", 0);
    spinnerPriority.setSelection(priorityFromList, true);
    /* Set spinner status */
    spinnerStatus = (Spinner) getView().findViewById(R.id.spinnerStatus);
    spinnerStatus.setOnItemSelectedListener(this);
    ArrayAdapter<CharSequence> statusAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.status, android.R.layout.simple_spinner_dropdown_item);
    spinnerStatus.setAdapter(statusAdapter);
    spinnerStatus.setSelection(todoList.status, true);
}

[Buggy Hunk]
TodoList todoList = getTodoInfoFromDB(taskName);

[Patch]
TodoList todoList = getTodoInfoFromDB(id);

[Demonstration 3]

[Buggy Method]
private void initBinding() {
    algorithmTypeChoiceBox.valueProperty().bindBidirectional(parameters.algorithmTypeProperty());
    evaporationFactorTextField.textProperty().bindBidirectional(parameters.evaporationFactorProperty(), new DecimalFormat());
    pheromoneImportanceTextField.textProperty().bindBidirectional(parameters.pheromoneImportanceProperty(), new DecimalFormat());
    heuristicImportanceTextField.textProperty().bindBidirectional(parameters.heuristicImportanceProperty(), new DecimalFormat());
    nnFactorTextField.textProperty().bindBidirectional(parameters.nnFactorProperty(), new DecimalFormat());
    antsCountTextField.textProperty().bind(parameters.antsCountProperty());
    maxStagnationTextField.textProperty().bindBidirectional(parameters.maxStagnationCountProperty(), new DecimalFormat());
    minLimitDividerTextField.textProperty().bindBidirectional(parameters.minLimitDividerProperty(), new DecimalFormat());
    reinitializationCountTextField.textProperty().bindBidirectional(parameters.reinitializationCountProperty(), new DecimalFormat());
    weightTextField.textProperty().bindBidirectional(parameters.weightProperty(), new DecimalFormat());
    localSearchCheckBox.selectedProperty().bindBidirectional(parameters.localSearchProperty());
}

[Buggy Hunk]
.bind(parameters.antsCountProperty());

[Patch]
.bindBidirectional(parameters.antsCountProperty(), new DecimalFormat());