[Demonstration 1]

[Buggy Method]
private void done() {
    list = null;
    smartController.unbind();
    smartController.getCancelButton().setDisable(true);
    smartController.depositWorking = false;
    smartController.getLoadService().startService(true, true, false);
}

[Buggy Hunk]
smartController.getLoadService().startService(true, true, false);

[Patch]
smartController.getLoadService().startService(true, true, true);

[Demonstration 2]

[Buggy Method]
private void projectChanged(IProject project) throws CoreException {
    final IJavaProject javaProject = JavaCore.create(project);
    if (javaProject == null || !javaProject.exists()) {
        return;
    }
    Set<String> roboVmLibs = new HashSet<String>();
    roboVmLibs.add("robovm-rt");
    roboVmLibs.add("robovm-objc");
    roboVmLibs.add("robovm-cocoatouch");
    final Set<String> foundRoboVmLibs = new HashSet<String>();
    boolean isRoboVMProject = false;
    boolean hasRoboVMContainer = false;
    boolean hasRoboVMNature = project.hasNature(RoboVMNature.ID);
    for (IClasspathEntry entry : javaProject.getRawClasspath()) {
        if (RoboVMClasspathContainer.ID.equals(entry.getPath().toString())) {
            hasRoboVMContainer = true;
            isRoboVMProject = true;
        }
    }
    for (IClasspathEntry entry : javaProject.getResolvedClasspath(true)) {
        String lastSegment = entry.getPath().lastSegment();
        for (String lib : roboVmLibs) {
            if (lastSegment.startsWith(lib)) {
                foundRoboVmLibs.add(lastSegment);
                isRoboVMProject = true;
                break;
            }
        }
    }
    if (isRoboVMProject) {
        if (!hasRoboVMContainer || !hasRoboVMNature) {
            final boolean hasContainer = hasRoboVMContainer;
            final boolean hasNature = hasRoboVMNature;
            // we need to submit the project modification as a job
            // as modifying the workspace tree during event notification
            // is not allowed.
            Job job = new Job("RoboVM Project Updater") {

                @Override
                protected IStatus run(IProgressMonitor monitor) {
                    try {
                        ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {

                            @Override
                            public void run(IProgressMonitor monitor) throws CoreException {
                                if (!hasNature) {
                                    RoboVMNature.configureNatures(project, monitor);
                                }
                                if (!hasContainer) {
                                    addClasspathContainer(javaProject, monitor, foundRoboVmLibs);
                                }
                            }
                        }, null);
                    } catch (CoreException e) {
                        RoboVMPlugin.getConsoleLogger().error("Couldn't run project update job, %s", e.getMessage());
                        RoboVMPlugin.log(e);
                    }
                    return Status.OK_STATUS;
                }
            };
            job.schedule();
        }
    }
}

[Buggy Hunk]
private void projectChanged(IProject project) throws CoreException {

[Patch]
private void projectChanged(final IProject project) throws CoreException {

[Demonstration 3]

[Buggy Method]
@Override
public boolean equals(Object o) {
    if (this == o)
        return true;
    if (o == null || getClass() != o.getClass())
        return false;
    Participation that = (Participation) o;
    if (id != null ? !id.equals(that.id) : that.id != null)
        return false;
    if (meetingId != null ? !meetingId.equals(that.meetingId) : that.meetingId != null)
        return false;
    return participants != null ? participants.equals(that.participants) : that.participants == null;
}

[Buggy Hunk]
if (meetingId != null ? !meetingId.equals(that.meetingId) : that.meetingId != null) return false;

[Patch]
if (eventId != null ? !eventId.equals(that.eventId) : that.eventId != null) return false;