[Demonstration 1]

[Buggy Method]
private static boolean gameOver(final Board board) {
    return board.getCurrentPlayer().checkMate() || board.getCurrentPlayer().staleMate();
}

[Buggy Hunk]
return board.getCurrentPlayer().checkMate() || board.getCurrentPlayer().staleMate();

[Patch]
return board.endGame() != Alliance.NONE;

[Demonstration 2]

[Buggy Method]
private void initViewPager() {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(IntroFragment.newInstance(R.color.blue));
    adapter.addFragment(IntroFragment.newInstance(R.color.red));
    adapter.addFragment(IntroFinishFragment.newInstance(R.color.green));
    viewPagerInto.setAdapter(adapter);
    indicatordots.setViewPager(viewPagerInto);
}

[Buggy Hunk]
adapter.addFragment(IntroFinishFragment.newInstance(R.color.green));

[Patch]
adapter.addFragment(IntroFragment.newInstance(R.color.green));

[Demonstration 3]

[Buggy Method]
private SearchNode solve(SearchNode origin, SearchNode twin) {
    MinPQ<SearchNode> pq = new MinPQ<>();
    MinPQ<SearchNode> pqTwin = new MinPQ<>();
    pq.insert(origin);
    pq.insert(twin);
    SearchNode goal = null;
    solutions = new ArrayList<>();
    while (true) {
        SearchNode node = pq.delMin();
        SearchNode nodeTwin = pqTwin.delMin();
        solutions.add(node.board);
        // Check the removed node and its twin
        if (node.board.isGoal()) {
            isSolvable = true;
            goal = node;
            break;
        }
        if (nodeTwin.board.isGoal()) {
            isSolvable = false;
            solutions = null;
            break;
        }
        // Get neighbors and insert
        insertNeighbor(node, pq);
        insertNeighbor(nodeTwin, pqTwin);
    }
    return goal;
}

[Buggy Hunk]
pq.insert(twin);

[Patch]
pqTwin.insert(twin);