[Demonstration 1]

[Buggy Method]
public void startElement(String namespaceUri, String localName, String qualifiedName, Attributes attributes) throws SAXException {
    // look for our tag
    //if (qualifiedName.equalsIgnoreCase(formatDefinitions.getSampleTagNames()))
    if (formatDefinitions.getSampleTagNames().contains(qualifiedName)) {
        String labelName = attributes.getValue(formatDefinitions.getLabelAttributeName());
        String simpleLabel = simplifyLabelName(labelName);
        labelName = PageIdProcessorImpl.processPageId(simpleLabel);
        String pageTitle = PageIdProcessorImpl.humanReadableTitle(simpleLabel);
        // check if we already have a request for this stuff
        currentRequest = requestMap.get(labelName);
        if (currentRequest == null) {
            currentRequest = new RequestHolder();
            currentRequest.setPageId(labelName);
            currentRequest.setPageTitle(pageTitle);
            requestMap.put(labelName, currentRequest);
        }
        // add return code/is Good
        String returnCode = attributes.getValue(formatDefinitions.getReturnCodeName());
        try {
            if (returnCode != null) {
                int retVal = Integer.parseInt(returnCode);
                currentRequest.setReturnCode(retVal);
            } else {
                logger.error("Error on reading return code flag " + returnCode);
            }
        } catch (NumberFormatException ne) {
            logger.error("Read non numeric as return code for a page >" + returnCode + "<");
        }
        // add time spent
        String timeSpent = attributes.getValue(formatDefinitions.getElapsedTimeAttributeName());
        // try conversion
        try {
            if (logger.isDebugEnabled()) {
                logger.debug("Adding raw performance for " + labelName + " val " + timeSpent);
            }
            // add to current page
            long requestTime = Long.parseLong(timeSpent);
            currentRequest.addResult(requestTime);
            // add to overall averages
            summaryRequestHolder.addResult(requestTime);
        } catch (NumberFormatException nfe) {
            logger.error("Invalid time in xml " + nfe);
        }
    }
}

[Buggy Hunk]
logger.error("Error on reading return code flag "+returnCode);

[Patch]
logger.error("Error on reading return code flag");

[Demonstration 2]

[Buggy Method]
public HttpResponse doCommenceLogin() throws IOException, OpenIDException {
    final AuthRequest authReq = manager.authenticate(endpoint, Hudson.getInstance().getRootUrl() + finishUrl);
    OpenIdExtension.extendRequest(authReq);
    String url = authReq.getDestinationUrl(true);
    // remember this in the session
    Stapler.getCurrentRequest().getSession().setAttribute(SESSION_NAME, this);
    return new HttpRedirect(url);
}

[Buggy Hunk]
Stapler.getCurrentRequest().getSession().setAttribute(SESSION_NAME,this);

[Patch]
Stapler.getCurrentRequest().getSession().setAttribute(SESSION_NAME,this.toString());

[Demonstration 3]

[Buggy Method]
public static Result service(String ownerName, String projectName, String service, boolean isAdvertise) throws IOException, UnsupportedOperationException, ServletException {
    if (!isSupportedService(service)) {
        return forbidden(String.format("Unsupported service: '%s'", service));
    }
    Project project = Project.findByOwnerAndProjectName(ownerName, projectName);
    if (project == null) {
        return notFound();
    }
    models.User user = UserApp.currentUser();
    if (!isAllowed(project, service)) {
        if (user.isAnonymous()) {
            return BasicAuthAction.unauthorized(response());
        } else {
            // If you want the Git client showing your custom message to
            // the user, the Content-Type should be exact "text/plain"
            // without any parameter. For more details, see the code at
            // https://github.com/git/git/commit/426e70d4a11ce3b4f70636d57c6a0ab16ae08a00#diff-eea0ad565ec5903a11b6023755d491cfR154
            response().setHeader("Content-Type", "text/plain");
            return forbidden(String.format("'%s' has no permission to '%s/%s'.", user.name, ownerName, projectName));
        }
    }
    if (isAdvertise) {
        return ok(RepositoryService.gitAdvertise(project, service, response()));
    } else {
        if (request().body().isMaxSizeExceeded()) {
            return status(REQUEST_ENTITY_TOO_LARGE);
        } else {
            user.visits(project);
            return ok(RepositoryService.gitRpc(project, service, request(), response()));
        }
    }
}

[Buggy Hunk]
user.name, ownerName, projectName));

[Patch]
user.loginId, ownerName, projectName));