[Demonstration 1]

[Buggy Method]
public void init(String storeId, CredentialStoreConfig configuration) throws CredentialStoreException {
    Properties properties = configuration.getStoreProperties();
    this.credentialStoreConfig = configuration;
    this.credentialStoreId = storeId;
    try {
        this.dataSource = DatabaseUtil.getInstance().getDataSource(properties.getProperty(ConnectorConstants.DATA_SOURCE));
    } catch (DataSourceException e) {
        throw new CredentialStoreException("Error while setting the data source.", e);
    }
    loadQueries((String) properties.get(ConnectorConstants.DATABASE_TYPE));
    if (log.isDebugEnabled()) {
        log.debug(String.format("JDBC credential store with id %s initialized successfully.", credentialStoreId));
    }
}

[Buggy Hunk]
if (log.isDebugEnabled()) {

[Patch]
if (IS_DEBUG_ENABLED) {

[Demonstration 2]

[Buggy Method]
private Realm realm() {
    long key = Thread.currentThread().getId();
    Realm realm = realms.get(key);
    if (realm == null) {
        realm = Realm.getDefaultInstance();
        realms.put(key, realm);
    }
    return realm;
}

[Buggy Hunk]
realm = Realm.getDefaultInstance();

[Patch]
realm = Realm.getInstance(MainActivity.realmConfiguration());;

[Demonstration 3]

[Buggy Method]
public List<Triple> executeQuery(Query query, Integer limit, Integer offset, String orderBy) {
    final List<Triple> triples = new ArrayList<Triple>();
    if (!query.isNull()) {
        final String sparqlString = query.toSparqlString();
        log.info("SPARQL ASKED:{}", sparqlString);
        log.info("QUESTION ASKED:{}", query.toString());
        final SelectResultSet results = sparqlDao.executeQuery(sparqlString, limit, offset, orderBy);
        for (SelectResult result : results.getResults()) {
            final Triple triple = resultToTriple(results.getHead(), result);
            triples.add(triple);
        }
    }
    //Specialising bnode.size = 1 and where we define vcard#Address functionality
    final List<Triple> finalTriples = new ArrayList<Triple>();
    for (Triple triple : triples) {
        if (triple.getObject().getFirst() instanceof IRI) {
            List<Triple> iriTriples = executeIRIQuery(triple.getObject().getFirst().getValue());
            System.err.println("This size of the triples for a Given IRI is" + iriTriples.size());
            boolean isAddress = false;
            for (Triple row : iriTriples) {
                if (row.getPredicate().getFirst().getValue().equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") && row.getObject().getFirst().getValue().equals("http://www.w3.org/2006/vcard/ns#Address")) {
                    isAddress = true;
                    break;
                }
            }
            //Am now handling the special cases here
            if (isAddress) {
                Triple newTriple = triple;
                newTriple.getObject().getFirst().setValue(makeAddressPretty(iriTriples));
                finalTriples.add(newTriple);
            } else {
                finalTriples.add(triple);
            }
        } else if (triple.getObject().getFirst() instanceof BNode) {
            List<Triple> bnodeTriples = executeBnodeQuery(triple.getObject().getFirst().getValue());
            if (bnodeTriples.size() == 1) {
                Triple newTriple = triple;
                newTriple.getObject().getFirst().setValue(bnodeTriples.get(0).getObject().getFirst().getValue());
                finalTriples.add(newTriple);
            } else {
                finalTriples.add(triple);
            }
        } else {
            finalTriples.add(triple);
        }
    }
    return finalTriples;
}

[Buggy Hunk]
System.err.println("This size of the triples for a Given IRI is"+iriTriples.size());

[Patch]
log.info("This size of the triples for a Given IRI is"+iriTriples.size());