[Demonstration 1]

[Buggy Method]
private void playOneRound(Player[] players) {
    // cards on table
    List<Card> cardsOnTable = new ArrayList<>();
    Player winner = players[0];
    int maxFaceValue = Integer.MIN_VALUE;
    boolean someoneWinsThisRound = false;
    int numPlayersWithCard = 0;
    while (!someoneWinsThisRound) {
        for (int i = 0; i < players.length; i++) {
            // lose if no cards left
            if (players[i].getCardsInHand().size() == 0) {
                continue;
            }
            ++numPlayersWithCard;
            Card dealtCard = players[i].dealCard();
            cardsOnTable.add(dealtCard);
            if (dealtCard.getRank().getValue() > maxFaceValue) {
                maxFaceValue = dealtCard.getRank().getValue();
                winner = players[i];
                someoneWinsThisRound = true;
            }
        }
    }
    Collections.shuffle(cardsOnTable);
    winner.addCards(cardsOnTable);
    if (numPlayersWithCard == 1) {
        hasAFinalWinner = true;
    }
    for (Player player : players) {
        System.out.println(player);
    }
    System.out.println("-------------------------------------------------------------------------");
}

[Buggy Hunk]
List<Card> cardsOnTable = new ArrayList<>();

[Patch]
List<Card> cardsOnTable = new ArrayList<Card>();

[Demonstration 2]

[Buggy Method]
private void updateState(StateBase state) {
    String counterName = getCounterName();
    log.trace("Removing counter " + counterName);
    state.remove(counterName);
    Stack<String> repeatNames = (Stack<String>) state.get(RepeatStage.REPEAT_NAMES);
    if (repeatNames == null || repeatNames.isEmpty() || repeatNames.peek() != name) {
        throw new IllegalStateException("Cannot unwind repeat: " + repeatNames);
    }
    repeatNames.pop();
}

[Buggy Hunk]
if (repeatNames == null || repeatNames.isEmpty() || repeatNames.peek() != name) {

[Patch]
if (repeatNames == null || repeatNames.isEmpty() || !equals(repeatNames.peek(), name)) {

[Demonstration 3]

[Buggy Method]
@Override
protected Worker SelectWorker(HashMap<Worker, ArrayList<Task>> eligibleWorkers, Task task) {
    Worker selectedWorker = null;
    int minId = -1;
    for (Worker w : eligibleWorkers.keySet()) {
        if (w.id < minId) {
            selectedWorker = w;
            minId = w.id;
        }
    }
    return selectedWorker;
}

[Buggy Hunk]
int minId = -1;

[Patch]
int minId = Integer.MAX_VALUE;