[Demonstration 1]

[Buggy Method]
@Override
public void handleEvent(MHIEvent event) {
    logger.fine("handling event : " + event.toString());
    if (event.getId() == EventType.UserCheckInEvent) {
        IdleTimerService.instance.checkIn();
    }
}

[Buggy Hunk]
logger.fine("handling event : " + event.toString());

[Patch]
logger.finest("handling event : " + event.toString());

[Demonstration 2]

[Buggy Method]
@EventListener
public void handleMessage(NetworkStateChangeEvent event) {
    boolean blockHeightIncreased = blockNumber < event.getBlockNumber();
    boolean generationSignatureChanged = !Arrays.equals(event.getGenerationSignature(), generationSignature);
    boolean restart = false;
    boolean alreadyMined = finishedLookup.contains(Convert.toHexString(event.getGenerationSignature()));
    if (alreadyMined && CoreProperties.isUpdateMiningInfo()) {
        fireEvent(new RoundGenSigUpdatedEvent(event.getBlockNumber(), event.getGenerationSignature()));
    }
    if (!blockHeightIncreased && (!alreadyMined && CoreProperties.isUpdateMiningInfo() && generationSignatureChanged)) {
        restart = true;
        // generationSignature for block updated
        if (finishedBlockNumber == blockNumber) {
            finishedBlockNumber--;
        }
        // ui event
        fireEvent(new RoundGenSigUpdatedEvent(blockNumber, generationSignature));
    }
    long previousBlockNumber = event.getBlockNumber();
    if (blockHeightIncreased) {
        previousBlockNumber = blockNumber;
        this.blockNumber = event.getBlockNumber();
    }
    if (blockHeightIncreased || (!alreadyMined && CoreProperties.isUpdateMiningInfo() && generationSignatureChanged)) {
        this.baseTarget = event.getBaseTarget();
        this.targetDeadline = event.getTargetDeadline();
        long lastBestCommittedDeadline = bestCommittedDeadline;
        plots = reader.getPlots();
        initNewRound(plots);
        // reconfigure checker
        generationSignature = event.getGenerationSignature();
        checker.reconfigure(blockNumber, generationSignature);
        // start reader
        int scoopNumber = calcScoopNumber(event.getBlockNumber(), event.getGenerationSignature());
        reader.read(previousBlockNumber, blockNumber, generationSignature, scoopNumber, lastBestCommittedDeadline);
        // ui event
        fireEvent(new RoundStartedEvent(restart, blockNumber, scoopNumber, plots.getSize(), targetDeadline, baseTarget));
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                network.checkLastWinner(blockNumber);
            }
        }, // deferred}
        0);
    }
}

[Buggy Hunk]
fireEvent(new RoundGenSigUpdatedEvent(event.getBlockNumber(), event.getGenerationSignature()));

[Patch]
fireEvent(new RoundGenSigAlreadyMinedEvent(event.getBlockNumber(), event.getGenerationSignature()));

[Demonstration 3]

[Buggy Method]
public Item dequeue() throws IndexOutOfBoundsException {
    if (isEmpty())
        throw new IndexOutOfBoundsException("Queue underflow");
    Item item = arr[first];
    arr[first] = null;
    size--;
    first++;
    if (first == arr.length)
        first = 0;
    if (arr.length <= size / 4) {
        resize(size / 2);
    }
    return item;
}

[Buggy Hunk]
resize(size / 2);

[Patch]
resize(arr.length / 2);