[Demonstration 1]

[Buggy Method]
public Response process(Request request) {
    Response response = new Response();
    Action action = request.getAction();
    switch(action) {
        case GET_ALL_KEYS:
            {
                List<KeyValues> filteredKeyValuesList = new ArrayList<KeyValues>();
                String pattern = request.getPattern();
                List<KeyValues> keyValuesList = keyValuesStore.readAll();
                for (KeyValues keyValues : keyValuesList) {
                    if (keyValues.getKey().contains(pattern)) {
                        filteredKeyValuesList.add(keyValues);
                    }
                }
                response.setKeyValuesList(filteredKeyValuesList);
                break;
            }
        case RIGHT_ADD:
            {
                String key = request.getKey();
                String value = request.getValue();
                KeyValues keyValues = add(key, value, true);
                if (keyValues == null) {
                    response = new Response(true, "key " + key + " not found");
                } else {
                    response.addKeyValues(keyValues);
                }
                break;
            }
        case LEFT_ADD:
            {
                String key = request.getKey();
                String value = request.getValue();
                KeyValues keyValues = add(key, value, false);
                if (keyValues == null) {
                    response = new Response(true, "key " + key + " not found");
                } else {
                    response.addKeyValues(keyValues);
                }
                break;
            }
        case GET:
            {
                String key = request.getKey();
                KeyValues keyValues = keyValuesStore.read(key);
                if (keyValues == null) {
                    response = new Response(true, "key " + key + " not found");
                } else {
                    response.addKeyValues(keyValues);
                }
                break;
            }
        case SET:
            {
                String key = request.getKey();
                List<String> values = request.getValues();
                KeyValues keyValues = new KeyValues(key, values);
                keyValuesStore.write(keyValues);
                response.addKeyValues(keyValues);
                break;
            }
        default:
            break;
    }
    return response;
}

[Buggy Hunk]
List<KeyValues> keyValuesList = keyValuesStore.readAll();

[Patch]
Set<KeyValues> keyValuesList = keyValuesStore.readAll();

[Demonstration 2]

[Buggy Method]
private Set<String> getErrorInfo() {
    Set<String> errorInfo = new HashSet<String>();
    for (ErrorCodeCount errorCodeCount : this.errorInfos.values()) {
        String info = null;
        try {
            info = BeansUtils.obj2json(errorCodeCount);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            logger.error(e.toString());
        }
        errorInfo.add(info);
    }
    return errorInfo;
}

[Buggy Hunk]
Set<String> errorInfo = new HashSet<String>();

[Patch]
Set<String> errorInfo = new CopyOnWriteArraySet<String>();

[Demonstration 3]

[Buggy Method]
private static float[] loadScores_Hitting(LocalPlayer lp, MlbPlayer mlbPlayer) {
    float[] localScore;
    // Load Local Player Stats
    ArrayList<LocalPlayerBattingStatistics_Season> lpStatsBat = LocalPlayerBattingStatistics_Season.getStatisticsFromDatabase(lp.getLocalPlayerId());
    LocalPlayerBattingStatistics_Season lpStats = lpStatsBat.get(0);
    // local player batting average
    float battingAverageLocal = 0.00f;
    if (lpStats.getBatting_totals_ab() != 0) {
        battingAverageLocal = (float) lpStats.getBatting_onbase_totals_h() / (float) lpStats.getBatting_totals_ab();
    } else {
        battingAverageLocal = 0.00f;
    }
    float[] localScores = { 0, lpStats.getBatting_totals_ab(), lpStats.getBatting_totals_runs(), lpStats.getBatting_onbase_totals_h(), lpStats.getBatting_onbase_totals_d(), lpStats.getBatting_onbase_totals_t(), lpStats.getBatting_onbase_totals_hr(), lpStats.getBatting_totals_rbi(), lpStats.getBatting_totals_outs_k(), lpStats.getBatting_steal_totals_stolen() };
    localBAverage = battingAverageLocal;
    localSlug = lpStats.getSlugging();
    localScore = localScores;
    // Load Mlb Player Stats
    float[] mlbScores = { mlbPlayer.getBatting_games_play(), mlbPlayer.getBatting_ab(), mlbPlayer.getBatting_runs_total(), mlbPlayer.getBatting_onbase_h(), mlbPlayer.getBatting_onbase_d(), mlbPlayer.getBatting_onbase_t(), mlbPlayer.getBatting_onbase_hr(), mlbPlayer.getBatting_rbi(), mlbPlayer.getBatting_outs_ktotal(), mlbPlayer.getBatting_steal_stolen() };
    mlbScore = mlbScores;
    mlbBAverage = mlbPlayer.getBattingAverage();
    mlbSlug = mlbPlayer.getSlugging();
    return localScore;
}

[Buggy Hunk]
float[] localScores = {0, lpStats.getBatting_totals_ab(), lpStats.getBatting_totals_runs(), lpStats.getBatting_onbase_totals_h(),

[Patch]
float[] localScores = {lpStats.getBatting_game_play(), lpStats.getBatting_totals_ab(), lpStats.getBatting_totals_runs(), lpStats.getBatting_onbase_totals_h(),