[Demonstration 1]

[Buggy Method]
public List<String> run(List<String> input, Set<String> ignoredWords, Set<String> requiredWords) {
    rawInputLines.clearLines();
    resultLines.clearLines();
    rawResultLines.clearLines();
    // Set ignore words and required words (make them lowercase for comparison)
    shifter.setIgnoreWords(this.transformSetToLowercase(ignoredWords));
    requireFilter.setRequiredWords(this.transformSetToLowercase(requiredWords));
    if (requiredWords.size() == 1) {
        // Set up observation
        rawInputLines.addObserver(shifter);
        resultLines.addObserver(alphabetizer);
        // Add data line by line
        for (String line : input) {
            rawInputLines.addLine(line);
        }
        return resultLines.getAll();
    } else {
        // Set up observation
        rawInputLines.addObserver(shifter);
        resultLines.addObserver(requireFilter);
        rawResultLines.addObserver(alphabetizer);
        for (String line : input) {
            rawInputLines.addLine(line);
        }
        return rawResultLines.getAll();
    }
}

[Buggy Hunk]
if (requiredWords.size() == 1) {

[Patch]
if (requiredWords.size() == 0) {

[Demonstration 2]

[Buggy Method]
private void updateServerChecked() {
    // todo maintain list of modified events and checkpoints, and only updated the server with the changes
    Log.i(TAG, "Updating server checked");
    for (Event event : getEvents()) {
        for (CheckPoint checkPoint : event.getCheckPoints()) {
            // body for request
            FormBody formBody = new FormBody.Builder().add(HEADER_REQUEST_CODE, REQUEST_CODE_UPDATE_CHECKED_BY_CHECKPOINT).add(HEADER_DATA, String.valueOf(checkPoint.getID())).add(HEADER_STATUS, String.valueOf(checkPoint.getChecked() ? 1 : 0)).build();
            // build request
            Request request = new Request.Builder().url(((Activity) mContext).getString(R.string.magpie_server_event_data)).post(formBody).addHeader(HEADER_REQUEST_CODE, REQUEST_CODE_GET_EVENTS_WITH_CHECKPOINTS).build();
            // make new call with request
            mClient.newCall(request).enqueue(new Callback() {

                @Override
                public void onFailure(Call call, IOException e) {
                    Log.e(TAG, "Failure updating server with checkpoint status");
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Log.i(TAG, "Server updated successfully");
                    Log.i(TAG, "Response: " + response.toString());
                }
            });
        }
    }
}

[Buggy Hunk]
.add(HEADER_STATUS, String.valueOf(checkPoint.getChecked() ? 1 : 0))

[Patch]
.add(HEADER_STATUS, String.valueOf(checkPoint.getChecked()))

[Demonstration 3]

[Buggy Method]
public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) {
    YdtContext ydtContext = defaultYdtBuilder.getRootNode();
    YdtContext ydtContext1 = ydtContext.getFirstChild();
    DefaultYobBuilder defaultYobBuilder = new DefaultYobBuilder();
    Object yangObject = defaultYobBuilder.getYangObject((YdtExtendedContext) ydtContext1, YdtTestUtils.getSchemaRegistry());
    assertNotNull(yangObject);
    assertTrue(yangObject.getClass().getSimpleName().equals("RootlistOpParam"));
    try {
        Field field = yangObject.getClass().getDeclaredField("listwithoutcontainer");
        field.setAccessible(true);
        List listwithoutcontainer = (List) field.get(yangObject);
        assertEquals(true, listwithoutcontainer.isEmpty());
        Field listwithcontainerField = yangObject.getClass().getDeclaredField("listwithcontainer");
        listwithcontainerField.setAccessible(true);
        List listwithcontainer = (List) listwithcontainerField.get(yangObject);
        Field invalid = listwithcontainer.get(0).getClass().getDeclaredField("invalid");
        invalid.setAccessible(true);
        assertEquals("12", invalid.get(listwithcontainer.get(0)).toString());
        Field invalidinterval = listwithcontainer.get(0).getClass().getDeclaredField("invalidinterval");
        invalidinterval.setAccessible(true);
        List invalidintervalList = (List) invalidinterval.get(listwithcontainer.get(0));
        assertEquals("1", invalidintervalList.get(0).toString());
        assertEquals("2", invalidintervalList.get(1).toString());
    } catch (NoSuchFieldException | IllegalAccessException e) {
        Assert.fail();
    }
}

[Buggy Hunk]
assertEquals(true, listwithoutcontainer.isEmpty());

[Patch]
assertNull(listwithoutcontainer);