[Demonstration 1]

[Buggy Method]
public String readWhileNot(Predicate<Character> predicate) {
    StringBuilder builder = new StringBuilder();
    while (!currentIs(predicate)) {
        builder.append(readAndAdvance());
    }
    return builder.toString();
}

[Buggy Hunk]
while (!currentIs(predicate)) {

[Patch]
while (notEof() && !currentIs(predicate)) {

[Demonstration 2]

[Buggy Method]
public void updateRouteStats(ArrayList<Event> events, Route r) {
    if (r != null) {
        r.addToTotalCost(calculateCost(events, r));
        r.addToTotalPrice(calculatePrice(events, r));
        r.addToTotalVolume((double) this.getVolume());
        r.addToTotalWeight((double) this.getWeight());
        r.addToTotalMailCount();
        CostEvent c = getCostEvent(events, r);
        if (c != null) {
            r.addToDuration(c.getDuration());
            System.out.println("Price: " + calculatePrice(events, r) + "\tCost: " + calculateCost(events, r));
        }
    }
}

[Buggy Hunk]
if(r != null){

[Patch]
if(r != null && calculateCost(events, r) != 0){

[Demonstration 3]

[Buggy Method]
private static Optional findInJsonArray(JsonArray array, Predicate<JsonObject> predicate) {
    return StreamSupport.stream(array.spliterator(), false).map(element -> element.getAsJsonObject()).filter(predicate).findFirst();
}

[Buggy Hunk]
private static Optional findInJsonArray(JsonArray array, Predicate<JsonObject> predicate) {

[Patch]
private static Optional<JsonObject> findInJsonArray(JsonArray array, Predicate<JsonObject> predicate) {