[Demonstration 1]

[Buggy Method]
private void invokePlay(Boolean loop) {
    Boolean playing = (mp.isLooping() || mp.isPlaying());
    if (playing) {
        mp.pause();
        mp.setLooping(loop);
        mp.seekTo(0);
        mp.start();
    }
    if (!playing && state == PREPARED) {
        state = (loop ? PENDING_LOOP : PENDING_PLAY);
        onPrepared(mp);
    } else if (!playing) {
        state = (loop ? PENDING_LOOP : PENDING_PLAY);
        mp.setLooping(loop);
        mp.start();
    }
}

[Buggy Hunk]
Boolean playing = ( mp.isLooping() || mp.isPlaying() );

[Patch]
Boolean playing = mp.isPlaying();

[Demonstration 2]

[Buggy Method]
public boolean pause() {
    try {
        if (mp.isLooping() || mp.isPlaying()) {
            mp.pause();
            return true;
        }
    } catch (IllegalStateException e) {
        // I don't know why this gets thrown; catch here to save app
    }
    return false;
}

[Buggy Hunk]
if ( mp.isLooping() || mp.isPlaying() )

[Patch]
if ( mp.isPlaying() )

[Demonstration 3]

[Buggy Method]
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    // Set movement flags based on the layout manager
    if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
        final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
        final int swipeFlags = 0;
        return makeMovementFlags(dragFlags, swipeFlags);
    } else {
        final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
        final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
        return makeMovementFlags(dragFlags, swipeFlags);
    }
}

[Buggy Hunk]
if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {

[Patch]
if (recyclerView.getLayoutManager() instanceof GridLayoutManager || recyclerView.getLayoutManager() instanceof SpannedGridLayoutManager) {