[Demonstration 1]

[Buggy Method]
@Override
public void preStart() throws Exception {
    log.info("Search Handler started.");
    getContext().system().scheduler().schedule(Duration.create(30, TimeUnit.SECONDS), Duration.create(5, TimeUnit.MINUTES), () -> {
        //Future<Object> itemsFuture = Patterns.ask(itemHandler, "getItems", 100);
        ArrayNode items = null;
        JsonNode json = null;
        try {
            //TODO change to message
            json = readJsonFromUrl("http://localhost:9001/articles");
            items = (ArrayNode) json.get("items");
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (items != null) {
            try {
                Set<Document> docSet = new HashSet<>();
                for (JsonNode data : items) {
                    String itemId = data.get("itemId").asText();
                    JsonNode item = data.get("item");
                    String title = item.get("title").asText();
                    String text = item.get("text").asText();
                    Document doc = new Document();
                    doc.add(new Field("id", itemId, TextField.TYPE_STORED));
                    doc.add(new Field("title", title, TextField.TYPE_STORED));
                    doc.add(new Field("text", text, TextField.TYPE_STORED));
                    docSet.add(doc);
                }
                indexWriter.addDocuments(docSet);
                log.info("Building new Index successful!");
            } catch (IOException e) {
                log.error("Indexing items failed!");
                e.printStackTrace();
            }
        } else {
            log.error("No items found!");
        }
    }, getContext().dispatcher());
    super.preStart();
}

[Buggy Hunk]
log.info("Building new Index successful!");

[Patch]
log.debug("Building new Index successful!");

[Demonstration 2]

[Buggy Method]
public int lastIndexOf(char c, int fromIndex) {
    return lastIndexOf(c, 0, getPos());
}

[Buggy Hunk]
return lastIndexOf(c, 0, getPos());

[Patch]
return lastIndexOf(c, fromIndex, getPos());

[Demonstration 3]

[Buggy Method]
private void addPayment() {
    int nextPaymentId = 1;
    // Check db, then locally.
    for (Payment payment : owner.getDatabase().getPayments()) {
        if (payment.getPaymentId() >= nextPaymentId) {
            nextPaymentId = payment.getPaymentId() + 1;
        }
    }
    for (int i = 0; i < paymentsListModel.size(); i++) {
        Payment p = paymentsListModel.getElementAt(i).payment;
        if (p.getPaymentId() >= nextPaymentId) {
            nextPaymentId = p.getPaymentId() + 1;
        }
    }
    Payment p = new Payment(nextPaymentId, membership.getMembershipId());
    p.setYear(UiUtils.defaultYear());
    p.setPaymentDate(UiUtils.lastSunday());
    Calendar cal = Calendar.getInstance();
    int month = cal.get(Calendar.MONTH);
    if (month == Calendar.OCTOBER) {
        p.setAmount(getDatabase().getDefaultMembershipAmountFromOctober());
    } else if (month == Calendar.SEPTEMBER) {
        p.setAmount(getDatabase().getDefaultMembershipAmountFromAugust());
    } else if (month == Calendar.AUGUST) {
        p.setAmount(getDatabase().getDefaultMembershipAmountFromAugust());
    } else if (month == Calendar.JULY) {
        p.setAmount(getDatabase().getDefaultMembershipAmountFromJuly());
    } else {
        p.setAmount(getDatabase().getDefaultMembershipAmount());
    }
    PaymentDialog dialog = new PaymentDialog(this, true, p);
    dialog.setVisible(true);
}

[Buggy Hunk]
p.setAmount(getDatabase().getDefaultMembershipAmountFromAugust());

[Patch]
p.setAmount(getDatabase().getDefaultMembershipAmountFromSeptember());