[Demonstration 1]

[Buggy Method]
public int playRound(Player player, DiceValue pick, int bet) {
    if (player == null)
        throw new IllegalArgumentException("Player cannot be null.");
    if (pick == null)
        throw new IllegalArgumentException("Pick cannot be negative.");
    if (bet < 0)
        throw new IllegalArgumentException("Bet cannot be negative.");
    player.takeBet(bet);
    int matches = 0;
    for (Dice d : dice) {
        d.roll();
        if (d.getValue().equals(pick)) {
            matches += 1;
        }
    }
    int winnings = (matches + 1) * bet;
    if (matches > 0) {
        player.receiveWinnings(winnings);
    }
    return winnings;
}

[Buggy Hunk]
int winnings = (matches+1) * bet;

[Patch]
int winnings = matches * bet;

[Demonstration 2]

[Buggy Method]
public Option getOption(T obj) {
    for (Option<T> opt : this) if (obj == opt.getKey())
        return opt;
    return null;
}

[Buggy Hunk]
public Option getOption(T obj)

[Patch]
public Option<T> getOption(T obj)