[Demonstration 1]

[Buggy Method]
@FXML
private void dice(ActionEvent event) {
    if (game.getMoveWithFigurine() == false) {
        if (checkForThreeThrow()) {
            changeLabel("Kostkou hází " + game.getNiceNamePlayer() + " hráč.");
            if (throwIterator < 2) {
                UIDiceRoll();
                throwIterator++;
                if (diceClass.getEasyRoll() == 6) {
                    changeLabel(game.getNiceNamePlayer() + ", nasaď figurku.");
                    game.setMoveWithFigurine(true);
                    throwIterator = 0;
                }
            } else {
                game.actualPlayer();
                changeLabel("Kostkou hází " + game.getNiceNamePlayer() + " hráč.");
                throwIterator = 0;
            }
        } else {
            UIDiceRoll();
            changeLabel(game.getNiceNamePlayer() + ", nyní pohni figurkou.");
            game.setMoveWithFigurine(true);
        }
    } else {
        changeLabel("Ne, " + game.getNiceNamePlayer() + " má pohybovat figurkou.");
    }
}

[Buggy Hunk]
private void dice(ActionEvent event) {

[Patch]
private void dice(ActionEvent event) throws InterruptedException {

[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]
@Override
public void onLoadFinished(Loader<List<Event>> loader, List<Event> events) {
    mProgressBar.setVisibility(View.GONE);
    // Clear the adapter of previous events data
    mAdapter.clear();
    // If there is a valid list of Events, then add them to the adapter's
    // data set. This will trigger the ListView to update.
    if (events != null && !events.isEmpty()) {
        mAdapter.addAll(events);
    }
    mEmptyStateTextView.setText(noConnectionOrData);
    getLoaderManager().destroyLoader(EVENT_LOADER_ID);
}

[Buggy Hunk]
mEmptyStateTextView.setText(noConnectionOrData);

[Patch]
mEmptyStateTextView.setText(noEventData);