[Demonstration 1]

[Buggy Method]
@Override
public void evaluate() throws Throwable {
    MockitoAnnotations.initMocks(target);
    ObjectWrapper<Object> targetWrapper = new ObjectWrapper<>(target);
    overriddenObjectsMap.redefineMocksWithInitializer(targetWrapper);
    overriddenObjectsMap.init(target);
    overriddenObjectsMap.checkOverriddenInjectAnnotatedClass();
    ModuleOverrider moduleOverrider = new ModuleOverrider(overriddenObjectsMap);
    overriddenObjectsMap.checkOverridesInSubComponentsWithNoParameters(componentClass);
    ObjectWrapper<Object> componentBuilder = initComponent(componentClass, modules, moduleOverrider);
    componentBuilder = initComponentDependencies(componentClass.getWrappedClass(), componentBuilder, moduleOverrider);
    C component = componentBuilder.invokeMethod("build");
    component = new ComponentOverrider(moduleOverrider).override(componentClass.getWrappedClass(), component);
    invokeSetters(component);
    initInjectFromComponentFields(targetWrapper, new ObjectWrapper<>(component));
    base.evaluate();
    Mockito.validateMockitoUsage();
}

[Buggy Hunk]
initInjectFromComponentFields(targetWrapper, new ObjectWrapper<>(component));

[Patch]
initInjectFromComponentFields(targetWrapper, new ObjectWrapper<>(component, componentClass.getWrappedClass()));

[Demonstration 2]

[Buggy Method]
public static IntervalCategoryDataset createDataset() throws ModelNotFoundException, InvalidInputException {
    final TaskSeries s1 = new TaskSeries("Scheduled");
    final TaskSeries s2 = new TaskSeries("Actual");
    Date today = new Date();
    for (int i = 0; i < model.getTasks().size(); i++) {
        if (!model.getTasks().get(i).isDone()) {
            s2.add(new Task(String.valueOf(model.getTasks().get(i).getTaskId()), new SimpleTimePeriod(date(model.getTasks().get(i).getActualStartDate()), date(model.getTasks().get(i).getActualEndDate()))));
        }
        if ((model.getTasks().get(i).getStartDate() != (null)) && (model.getTasks().get(i).getDeadline() != (null))) {
            s1.add(new Task(String.valueOf(model.getTasks().get(i).getTaskId()), new SimpleTimePeriod(date(model.getTasks().get(i).getStartDate()), date(model.getTasks().get(i).getDeadline()))));
        } else {
            String title = "Info";
            String header = "Task with id " + model.getTasks().get(i).getTaskId() + " is missing start date/deadline";
            DialogCreator.showInfoDialog(title, header);
        }
    }
    final TaskSeriesCollection collection = new TaskSeriesCollection();
    collection.add(s1);
    collection.add(s2);
    return collection;
}

[Buggy Hunk]
if (!model.getTasks().get(i).isDone()){

[Patch]
if (!model.getTasks().get(i).isDone()&&(((model.getTasks().get(i).getActualEndDate()!=(null))&&(model.getTasks().get(i).getActualEndDate()!=(null))))){

[Demonstration 3]

[Buggy Method]
public void update(TodoItem item) {
    id = item.getId();
    contentLabel.setText(item.getText());
    contentInput.setText(item.getText());
    completed.setSelected(item.isCompleted());
    if (item.isCompleted()) {
        contentLabel.getStyleClass().add(STRIKETHROUGH_CSS_CLASS);
    } else {
        contentLabel.getStyleClass().remove(STRIKETHROUGH_CSS_CLASS);
    }
}

[Buggy Hunk]
contentLabel.getStyleClass().remove(STRIKETHROUGH_CSS_CLASS);

[Patch]
contentLabel.getStyleClass().removeAll(STRIKETHROUGH_CSS_CLASS);