[Demonstration 1]

[Buggy Method]
public ArrayList<EnumFiremode> getFiremodes() {
    if (type == EnumGunType.PISTOL || type == EnumGunType.SHOTGUN || type == EnumGunType.SNIPER_RIFLE) {
        //noinspection ArraysAsListWithZeroOrOneArgument
        return (ArrayList<EnumFiremode>) Arrays.asList(EnumFiremode.SINGLE);
    }
    ArrayList<EnumFiremode> firemodes = new ArrayList<>();
    switch(this) {
        case C8_SFW:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case L85A2:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AR33:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.DOUBLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case SIG_556xi:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case G36_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case R4_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case FAMAS_F2:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AK12:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case HK_416_C:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
        case SIG_552_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AUG_A2:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case Mk17_CQB:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case PARA_308:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case TYPE_89:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
        case G8A1:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case PKP_6P41:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case M249:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case K9X19VSN:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case FMG9:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5K:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP7:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case P90:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case STEN_9MM_C1:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case UMP45:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MPX:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case M12:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5SD:
            {
                break;
            }
        case SMG11:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case BEARING_9:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
    }
    return firemodes;
}

[Buggy Hunk]
return (ArrayList<EnumFiremode>) Arrays.asList(EnumFiremode.SINGLE);

[Patch]
return new ArrayList<>(Arrays.asList(EnumFiremode.SINGLE));

[Demonstration 2]

[Buggy Method]
private void updateTrolleys(Trolley[] trolleys) {
    Set<Integer> keySet = new HashSet<>(trolleyMarkers.keySet());
    for (int i = 0; i < trolleys.length; i++) {
        Trolley t = trolleys[i];
        if (trolleyMarkers.containsKey(t.ID)) {
            trolleyMarkers.get(t.ID).setPosition(new LatLng(t.Lat, t.Lon));
            keySet.remove(t.ID);
        } else {
            trolleyMarkers.put(t.ID, mapFragment.mMap.addMarker(new MarkerOptions().anchor(0.5f, 1.0f).title("Trolley " + t.ID).icon(BitmapDescriptorFactory.fromResource(((t.ID - 1) % 2 == 0) ? R.drawable.marker1 : R.drawable.marker2)).position(new LatLng(t.Lat, t.Lon))));
        }
    }
    for (Integer deadTrolleyID : keySet) {
        trolleyMarkers.get(deadTrolleyID).remove();
        trolleyMarkers.remove(deadTrolleyID);
    }
    if (trolleyMarkers.isEmpty()) {
        if (!notifiedEmpty) {
            mapFragment.showNoTrolleysDialog();
            notifiedEmpty = true;
        }
    } else {
        notifiedEmpty = false;
    }
    lastTrolleyUpdate = trolleys;
    lastUpdatedAt = DateTime.now().getMillis();
}

[Buggy Hunk]
private void updateTrolleys(Trolley[] trolleys){

[Patch]
private synchronized void updateTrolleys(Trolley[] trolleys){

[Demonstration 3]

[Buggy Method]
public boolean addSlices(Collection<Slice> slices) {
    slices.addAll(slices);
    return true;
}

[Buggy Hunk]
slices.addAll(slices);

[Patch]
this.slices.addAll(slices);