[Demonstration 1]

[Buggy Method]
public void testYesWorkflowCLI_Extract_InjectedExtractor_SourceOnly() throws Exception {
    String[] args = { "-c", "extract", "-s", "src/test/resources/simpleExample.py" };
    YesWorkflowCLI cli = new YesWorkflowCLI(stdoutStream, stderrStream);
    MockExtractor extractor = new MockExtractor();
    cli.extractor(extractor);
    assertFalse(extractor.extracted);
    int returnValue = cli.runForArgs(args);
    assertEquals(YesWorkflowCLI.YW_CLI_SUCCESS, returnValue);
    assertEquals("", stdoutBuffer.toString());
    assertEquals("", stderrBuffer.toString());
    assertTrue(extractor.extracted);
}

[Buggy Hunk]
String[] args = {"-c", "extract", "-s", "src/test/resources/simpleExample.py"};

[Patch]
String[] args = {"-c", "extract", "-s", TEST_RESOURCE_DIR + "pythonFileLowercase.py"};

[Demonstration 2]

[Buggy Method]
public MockRestServiceServer build() {
    if (this.ignoreExpectOrder) {
        // default is false
        builder.ignoreExpectOrder(true);
    }
    MockRestServiceServer server = this.builder.build();
    List<StubMapping> mappings = new ArrayList<>();
    for (String location : this.locations) {
        try {
            for (Resource resource : this.resolver.getResources(pattern(location))) {
                StubMapping mapping = mapping(resource);
                mappings.add(mapping);
            }
        } catch (IOException e) {
            throw new IllegalStateException("Cannot load resources for: " + location, e);
        }
    }
    if (this.ignoreExpectOrder) {
        Collections.sort(mappings, new StubMappingComparator());
    }
    for (StubMapping mapping : mappings) {
        ResponseActions expect = server.expect(requestTo(request(mapping.getRequest())));
        requestHeaders(expect, mapping.getRequest());
        expect.andRespond(response(mapping.getResponse()));
    }
    return server;
}

[Buggy Hunk]
builder.ignoreExpectOrder(true); // default is false

[Patch]
this.builder.ignoreExpectOrder(true); // default is false

[Demonstration 3]

[Buggy Method]
public void submitQualityReport() throws IllegalArgumentException {
    Editable latEditable = latitudeText.getText();
    Editable longEditable = longitudeText.getText();
    try {
        latitude = Double.parseDouble(latEditable.toString());
        longitude = Double.parseDouble(longEditable.toString());
    } catch (NumberFormatException e) {
        throw new IllegalArgumentException("Enter Valid Latitude and Longitude");
    }
    if ((Math.abs(latitude) > WaterSourceReport.MAX_LATITUDE) | (Math.abs(longitude) > WaterSourceReport.MAX_LONGITUDE)) {
        throw new IllegalArgumentException("Latitude or Longitude is out of range.");
    }
    Editable virusEditable = virusPPMText.getText();
    Editable contaminantEditable = contaminantPPMText.getText();
    int virusPPM;
    int contaminantPPM;
    try {
        virusPPM = Integer.parseInt(virusEditable.toString());
        contaminantPPM = Integer.parseInt(contaminantEditable.toString());
    } catch (NumberFormatException e) {
        throw new IllegalArgumentException("Enter valid PPM values");
    }
    WaterQuality waterQuality = (WaterQuality) waterQualitySpinner.getSelectedItem();
    long currentTime = System.currentTimeMillis();
    Date date = new Date(currentTime);
    WaterQualityReport waterQualityReport = new WaterQualityReport(date, currentTime, firebaseUser.getDisplayName(), firebaseUser.getUid(), latitude, longitude, virusPPM, contaminantPPM, waterQuality);
    waterQualityReport.writeToDatabase();
}

[Buggy Hunk]
public void submitQualityReport() throws IllegalArgumentException {

[Patch]
private void submitQualityReport() throws IllegalArgumentException {