[Demonstration 1]

[Buggy Method]
public RepositoryItem getItem(String id, String itemDescriptor) {
    ItemDescriptor item = findItemDescriptor(itemDescriptor);
    if (item != null) {
        RecipeDbHelper dbHelper = new RecipeDbHelper(context, resources);
        db = dbHelper.getReadableDatabase();
        Map<String, List<Table>> tables = item.getTables();
        List<Table> primaryTable = tables.get("primary");
        if (primaryTable == null || primaryTable.isEmpty()) {
            throw new IllegalStateException("No primary table found for itemDescriptor: " + item.getName());
        }
        if (primaryTable.size() > 1) {
            throw new IllegalStateException("Multiple primary tables found for itemDescriptor: " + item.getName());
        }
        Table t = primaryTable.get(0);
        Cursor c = db.rawQuery("select * from " + t.getName() + " where " + t.getIdColumn() + " = " + id, null);
        MutableRepositoryItemImpl mri = new MutableRepositoryItemImpl();
        if (c.moveToFirst()) {
            mri.setName(item.getName());
            mri.setRepositoryId(c.getString(c.getColumnIndex(t.getIdColumn())));
            for (Property p : t.getProperties()) {
                setProperty(mri, c, p);
            }
            c.close();
        } else {
            return null;
        }
        List<Table> auxilaryTables = tables.get("auxilary");
        if (auxilaryTables != null) {
            for (Table auxTable : auxilaryTables) {
                processAuxilaryTable(auxTable, mri);
            }
        }
        return mri.convertToRepositoryItem();
    }
    return null;
}

[Buggy Hunk]
Cursor c = db.rawQuery("select * from " + t.getName() + " where " + t.getIdColumn() + " = " + id, null);

[Patch]
Cursor c = db.rawQuery("select * from " + t.getName() + " where " + t.getIdColumn() + " = " + "'" + id + "'", null);

[Demonstration 2]

[Buggy Method]
public Stream<Agent> streamAgents() {
    return clusters.values().stream().flatMap(c -> c.streamAgents());
}

[Buggy Hunk]
return clusters.values().stream().flatMap(c -> c.streamAgents());

[Patch]
return streamClusters().flatMap(c -> c.streamAgents());

[Demonstration 3]

[Buggy Method]
private Request req(String method, Uri template, String contentType, byte[] body) {
    RequestBuilder builder = new RequestBuilder(method);
    if (realm != null) {
        builder.setRealm(realm);
    } else {
        builder.addHeader("Authorization", "Bearer " + oauthToken);
    }
    //replace out %2B with + due to API restriction
    builder.setUrl(template.toString().replace("%2B", "+"));
    builder.addHeader("Content-type", contentType);
    builder.setBody(body);
    return builder.build();
}

[Buggy Hunk]
builder.setUrl(template.toString().replace("%2B", "+")); //replace out %2B with + due to API restriction

[Patch]
builder.setUrl(RESTRICTED_PATTERN.matcher(template.toString()).replaceAll("+")); //replace out %2B with + due to API restriction