[Demonstration 1]

[Buggy Method]
@Override
public void updateStatus(Job job, NodeStatus targetStatus, Set<NodeStatus> skipped) {
    List<NodeResult> list = list(job, false);
    for (NodeResult nodeResult : list) {
        if (skipped.contains(nodeResult.getStatus())) {
            continue;
        }
        NodeStatus originStatus = nodeResult.getStatus();
        if (originStatus == targetStatus) {
            continue;
        }
        nodeResult.setStatus(targetStatus);
        nodeResultDao.save(nodeResult);
        this.dispatchEvent(new NodeStatusChangeEvent(this, nodeResult.getKey(), originStatus, targetStatus));
    }
}

[Buggy Hunk]
nodeResultDao.save(nodeResult);

[Patch]
nodeResultDao.update(nodeResult);

[Demonstration 2]

[Buggy Method]
protected String getDiskSubFolder() {
    StringBuilder diskFolder = new StringBuilder(this.getFolder());
    if (this.isProtectedResource()) {
        //PROTECTED Resource
        diskFolder.append(this.getMainGroup()).append(File.separator);
    }
    return diskFolder.toString();
}

[Buggy Hunk]
diskFolder.append(this.getMainGroup()).append(File.separator);

[Patch]
diskFolder.append(this.getMainGroup()).append("/");

[Demonstration 3]

[Buggy Method]
@Override
public boolean equals(Object obj) {
    if (!(obj instanceof Symbol))
        return false;
    if (obj == this)
        return true;
    Symbol otherSymbol = (Symbol) obj;
    return new EqualsBuilder().// if deriving: appendSuper(super.equals(obj)).
    append(representation, otherSymbol.representation).append(isOperand(), otherSymbol.isOperand()).append(isTerminal(), otherSymbol.isTerminal()).append(isNonTerminal(), otherSymbol.isNonTerminal()).isEquals();
}

[Buggy Hunk]
append(representation, otherSymbol.representation).

[Patch]
append(toString(), otherSymbol.toString()).