[Demonstration 1]

[Buggy Method]
public String getDetails(Server server) {
    LocalizationService ls = LocalizationService.getInstance();
    StringBuilder retval = new StringBuilder();
    retval.append(ls.getMessage("system.event.details.execute", getEarliestDate()));
    retval.append("</br>");
    ServerAction sa = ActionFactory.getServerActionForServerAndAction(server, action);
    retval.append(ls.getMessage("system.event.details.status", ls.getMessage("system.event.details.status" + sa.getStatus().getName())));
    retval.append("</br>");
    if (sa.getPickupTime() != null) {
        retval.append(ls.getMessage("system.event.details.pickup", sa.getPickupTime()));
    } else {
        retval.append(ls.getMessage("system.event.details.notPickedUp"));
        retval.append(action.getHistoryDetails(server));
        return retval.toString();
    }
    retval.append("</br>");
    if (sa.getCompletionTime() != null) {
        retval.append(ls.getMessage("system.event.details.completed", sa.getCompletionTime()));
    } else {
        retval.append(ls.getMessage("system.event.details.notCompleted"));
        retval.append(action.getHistoryDetails(server));
        return retval.toString();
    }
    retval.append("</br>");
    retval.append(ls.getMessage("system.event.details.returned", sa.getResultMsg(), sa.getResultCode()));
    retval.append(action.getHistoryDetails(server));
    return retval.toString();
}

[Buggy Hunk]
sa.getResultMsg(), sa.getResultCode()));

[Patch]
StringEscapeUtils.escapeHtml(sa.getResultMsg()), sa.getResultCode()));

[Demonstration 2]

[Buggy Method]
@Override
public Domain generateDomain() {
    Domain domain = new SADomain();
    int maxAmount = (int) (Math.pow(2, rounds) * initialAmount);
    Attribute currentAmount = new Attribute(domain, STATE_CURRENT_AMOUNT, AttributeType.INT);
    currentAmount.setLims(0, maxAmount);
    Attribute currentIteration = new Attribute(domain, STATE_CURRENT_ITERATION, AttributeType.INT);
    currentIteration.setLims(0, rounds);
    ObjectClass agent = new ObjectClass(domain, CLASS_AGENT);
    agent.addAttribute(currentAmount);
    agent.addAttribute(currentIteration);
    for (int i = 1; i <= maxAmount; i++) {
        new Bet(ACTION_BET, domain, winProb, i);
    }
    return domain;
}

[Buggy Hunk]
new Bet(ACTION_BET, domain, winProb, i);

[Patch]
new Bet(ACTION_BET + "_" + i, domain, winProb, i);

[Demonstration 3]

[Buggy Method]
private List<String> applyXSLDocumentListToCurrentCMDir() {
    List<org.w3c.dom.Document> xslDocumentList = normaArgProcessor.getXslDocumentList();
    xmlStringList = new ArrayList<String>();
    for (org.w3c.dom.Document xslDocument : xslDocumentList) {
        try {
            String xmlString = transform(xslDocument);
            xmlStringList.add(xmlString);
        } catch (IOException e) {
            LOG.error("Cannot transform " + currentCMDir + "; " + e);
        }
    }
    return xmlStringList;
}

[Buggy Hunk]
LOG.error("Cannot transform "+currentCMDir+"; "+e);

[Patch]
LOG.error("Cannot transform "+normaArgProcessor.getCurrentCMDir()+"; "+e);