[Demonstration 1]

[Buggy Method]
public synchronized void addPowerup(PowerupData msg) {
    powerups.add(new Powerup(msg.position));
}

[Buggy Hunk]
powerups.add(new Powerup(msg.position));

[Patch]
powerups.add(new Powerup(msg.position, msg.type));

[Demonstration 2]

[Buggy Method]
private boolean arrayContains(String[] array, String toFind) {
    if (array == null || array.length == 0) {
        return false;
    }
    for (String item : array) {
        if (toFind.equals(item)) {
            return true;
        }
    }
    return false;
}

[Buggy Hunk]
private boolean arrayContains(String[] array, String toFind) {

[Patch]
private boolean arrayContains(final String[] array, final String toFind) {

[Demonstration 3]

[Buggy Method]
public long rebase(final TaskListener listener, final long upstreamRev) throws IOException, InterruptedException {
    final SubversionSCM svn = (SubversionSCM) getOwner().getScm();
    final ISVNAuthenticationProvider provider = svn.createAuthenticationProvider(getOwner(), svn.getLocations()[0]);
    final ModuleLocation upstreamLocation = getUpstreamSubversionLocation();
    AbstractBuild build = owner.getSomeBuildWithWorkspace();
    if (build == null) {
        final PrintStream logger = listener.getLogger();
        logger.print("No workspace found for project! Please perform a build first.\n");
        return -1L;
    }
    return build.getModuleRoot().act(new FileCallable<Long>() {

        public Long invoke(File mr, VirtualChannel virtualChannel) throws IOException {
            try {
                final PrintStream logger = listener.getLogger();
                final boolean[] foundConflict = new boolean[1];
                ISVNEventHandler printHandler = new SubversionEventHandlerImpl(logger, mr) {

                    @Override
                    public void handleEvent(SVNEvent event, double progress) throws SVNException {
                        super.handleEvent(event, progress);
                        if (event.getContentsStatus() == SVNStatusType.CONFLICTED || event.getContentsStatus() == SVNStatusType.CONFLICTED_UNRESOLVED) {
                            foundConflict[0] = true;
                        }
                    }
                };
                SvnClientManager svnm = SubversionSCM.createClientManager(provider);
                SVNURL up = upstreamLocation == null ? null : upstreamLocation.getSVNURL();
                SVNClientManager cm = svnm.getCore();
                cm.setEventHandler(printHandler);
                SVNWCClient wc = cm.getWCClient();
                SVNDiffClient dc = cm.getDiffClient();
                logger.printf("Updating workspace to the latest revision\n");
                long wsr = cm.getUpdateClient().doUpdate(mr, HEAD, INFINITY, false, false);
                //                    logger.printf("  Updated to rev.%d\n",wsr);  // reported by printHandler
                SVNRevision mergeRev = upstreamRev >= 0 ? SVNRevision.create(upstreamRev) : cm.getWCClient().doInfo(up, HEAD, HEAD).getCommittedRevision();
                logger.printf("Merging change from the upstream %s at rev.%s\n", up, mergeRev);
                SVNRevisionRange r = new SVNRevisionRange(SVNRevision.create(0), mergeRev);
                dc.doMerge(up, mergeRev, Arrays.asList(r), mr, INFINITY, true, false, false, false);
                if (foundConflict[0]) {
                    logger.println("Found conflict. Reverting this failed merge");
                    wc.doRevert(new File[] { mr }, INFINITY, null);
                    return -1L;
                } else {
                    try {
                        logger.println("Committing changes");
                        SVNCommitClient cc = cm.getCommitClient();
                        SVNCommitInfo ci = cc.doCommit(new File[] { mr }, false, commitPrefix + "Rebasing from " + up + "@" + mergeRev, null, null, false, false, INFINITY);
                        if (ci.getNewRevision() < 0) {
                            logger.println("  No changes since the last rebase. This rebase was a no-op.");
                            return 0L;
                        } else {
                            logger.println("  committed revision " + ci.getNewRevision());
                            return ci.getNewRevision();
                        }
                    } catch (SVNException e) {
                        logger.println("Failed to commit!");
                        logger.println(e.getLocalizedMessage());
                        logger.println("Reverting this failed merge.");
                        wc.doRevert(new File[] { mr }, INFINITY, null);
                        return -1L;
                    }
                }
            } catch (SVNException e) {
                throw new IOException2("Failed to merge", e);
            }
        }
    });
}

[Buggy Hunk]
false, commitPrefix	+ "Rebasing from " + up + "@"

[Patch]
false, getCommitPrefix() + " Rebasing from " + up + "@"