[Demonstration 1]

[Buggy Method]
@Override
public boolean equals(Object obj) {
    PathNode b = (PathNode) obj;
    if (b.getCurr() == this.curr && b.getPrev() == this.curr) {
        return true;
    }
    return false;
}

[Buggy Hunk]
if(b.getCurr() == this.curr && b.getPrev() == this.curr){

[Patch]
if(b.getCurr() == this.curr && b.getPrev() == this.prev){

[Demonstration 2]

[Buggy Method]
void readCacheFromDB() {
    String sql = sqlPrefix + curSeq + " AND " + (curSeq + cacheSize);
    try {
        cachedDocIds.clear();
        ArrayList<List<String>> results = DBUtil.getSQLQueryResult(sql);
        if (results != null && results.size() > 0) {
            for (int i = 0; i < results.size(); i++) {
                cachedDocIds.add(DBUtil.getRSMatrixElemByLocation(results, i, 0));
            }
        } else {
            // no result anymore
            maxSeq = -1;
        }
    } catch (Exception e) {
        _logger.error(e.getMessage() + "\n" + sql);
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

[Buggy Hunk]
String sql = sqlPrefix + curSeq + " AND " + (curSeq + cacheSize);

[Patch]
String sql = sqlPrefix + curSeq + " AND " + Math.min(maxSeq, curSeq + cacheSize);

[Demonstration 3]

[Buggy Method]
public void setLonAccuracyAvailable(boolean b) {
    lonAccuracyAvailable = b;
}

[Buggy Hunk]
public void setLonAccuracyAvailable(boolean b) {

[Patch]
public final void setLonAccuracyAvailable(boolean b) {