[Demonstration 1]

[Buggy Method]
public void executeAction(Action lastAction) {
    if (lastAction != null && !gun.outOfShots()) {
        gun.shoot();
        round.checkHitDuck(lastAction.getX(), lastAction.getY(), gun);
    }
}

[Buggy Hunk]
round.checkHitDuck(lastAction.getX(), lastAction.getY(), gun);

[Patch]
checkHitDuck(lastAction.getX(), lastAction.getY(), gun);

[Demonstration 2]

[Buggy Method]
public static UserMealWithExceed createWithExceed(UserMeal um, boolean exceeded) {
    return new UserMealWithExceed(um.getDateTime(), um.getDescription(), um.getCalories(), exceeded);
}

[Buggy Hunk]
return new UserMealWithExceed(um.getDateTime(), um.getDescription(), um.getCalories(), exceeded);

[Patch]
return new UserMealWithExceed(um.getId(), um.getDateTime(), um.getDescription(), um.getCalories(), exceeded);

[Demonstration 3]

[Buggy Method]
private void assertRenameCategoryResult(String command) throws IllegalValueException {
    TestTask sampleA;
    TestTask sampleB;
    sampleA = new TaskBuilder().withName("Attend wedding").withInformation("123, Jurong West Ave 6, #08-111").withPriorityLevel("Yes").withStartDateTime("Feb 18, 2017 5pm").withEndDateTime("Mar 28, 2017 5pm").withCategories("Project").build();
    sampleB = new TaskBuilder().withName("Birthday party").withInformation("311, Clementi Ave 2, #02-25").withPriorityLevel("No").withStartDateTime("Feb 23, 2017 10pm").withEndDateTime("Jun 28, 2017 5pm").withCategories("owesMoney", "Project").build();
    TestTask[] taskListExpected = { sampleA, sampleB };
    commandBox.runCommand(command);
    assertResultMessage(RenameCategoryCommand.MESSAGE_SUCCESS);
    assertTrue(taskListPanel.isListMatching(taskListExpected));
}

[Buggy Hunk]
.withCategories("Project").build();

[Patch]
.withCategories("Project", AddCommand.DEFAULT).build();