[Demonstration 1]

[Buggy Method]
@Override
public Parse<Predicate<Record>> call() throws Exception {
    return PARTS.between(ws('('), ws(')'));
}

[Buggy Hunk]
public Parse<Predicate<Record>> call() throws Exception {

[Patch]
public Parser<Predicate<Record>> call() throws Exception {

[Demonstration 2]

[Buggy Method]
private void visitaSimmetrica(Nodo_m_ario radice) {
    if (radice != null) {
        for (int i = 0; i <= padre.getGrado() / 2; i++) {
            visitaSimmetrica(radice.getFigli()[i]);
        }
        System.out.print(radice.getChiave());
        for (int i = (radice.getGrado() / 2) + 1; i < radice.getGrado(); i++) {
            visitaSimmetrica(radice.getFigli()[i]);
        }
    }
}

[Buggy Hunk]
for (int i = 0; i <= padre.getGrado()/2; i++) {

[Patch]
for (int i = 0; i <= radice.getGrado()/2; i++) {

[Demonstration 3]

[Buggy Method]
@Nullable
@SuppressWarnings("AutoUnboxing")
private ParseTreeNode getParseTreeNodeFromId(final Integer id) throws ExecutionException {
    final DSLContext dsl;
    try {
        dsl = future.get();
    } catch (InterruptedException | CancellationException ignored) {
        return null;
    }
    final Record nodeRecord = dsl.select(NODES.fields()).from(NODES).where(NODES.ID.equal(id)).fetchOne();
    final Integer matcherId = nodeRecord.getValue(NODES.MATCHER_ID);
    final RuleInfo ruleInfo = getRuleInfoFromId(matcherId);
    final int nrChildren = dsl.select(DSL.count()).from(NODES).where(NODES.PARENT_ID.equal(0)).fetchOne().value1();
    return new ParseTreeNode(nodeRecord.getValue(NODES.PARENT_ID), nodeRecord.getValue(NODES.ID), nodeRecord.getValue(NODES.LEVEL), nodeRecord.getValue(NODES.SUCCESS) == 1, ruleInfo, nodeRecord.getValue(NODES.START_INDEX), nodeRecord.getValue(NODES.END_INDEX), nodeRecord.getValue(NODES.TIME), nrChildren != 0);
}

[Buggy Hunk]
.where(NODES.PARENT_ID.equal(0))

[Patch]
.where(NODES.PARENT_ID.equal(id))