[Demonstration 1]

[Buggy Method]
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    //        Log.e("onInterceptTouchEvent", ev.toString());
    int action = ev.getAction();
    if ((action == MotionEvent.ACTION_MOVE) && (mode == MODE.DRAGGING)) {
        initVelocityTrackerIfNotExists();
        mVelocityTracker.addMovement(ev);
        return true;
    }
    float x = ev.getX();
    float y = ev.getY();
    switch(action) {
        case MotionEvent.ACTION_DOWN:
            startX = (int) x;
            dragOffsetX = (int) (ev.getRawX() - x);
            dragOffsetY = (int) (ev.getRawY() - y);
            mLastMotionX = x;
            mLastMotionY = y;
            initOrResetVelocityTracker();
            mVelocityTracker.addMovement(ev);
            stopScroll();
            if (mAdapter != null) {
                mAdapter.setIsTouching(true);
            }
            break;
        case MotionEvent.ACTION_MOVE:
            initVelocityTrackerIfNotExists();
            mVelocityTracker.addMovement(ev);
            int deltaX = (int) (mLastMotionX - x);
            if (ifCanScroll(deltaX)) {
                mode = MODE.SCROLL;
                getParent().requestDisallowInterceptTouchEvent(true);
                recycleVelocityTracker();
                return true;
            }
            break;
        case MotionEvent.ACTION_CANCEL:
            getAdapter().setEditing(false);
        case MotionEvent.ACTION_UP:
            if (mAdapter != null) {
                mAdapter.setIsTouching(false);
            }
            if (mode == MODE.DRAGGING) {
                dragPosition = pointToPosition((int) x, (int) y);
                onDragFinished(ev);
                endDrag((int) x, (int) y);
            } else if (mode == MODE.SCROLL) {
                float distance = ev.getRawX() - startX;
                endScroll(distance);
            }
            if (mode != MODE.FREE) {
                getParent().requestDisallowInterceptTouchEvent(false);
            }
            startX = 0;
            mode = MODE.FREE;
            recycleVelocityTracker();
            break;
    }
    return false;
}

[Buggy Hunk]
endDrag((int) x, (int) y);

[Patch]
endDrag();

[Demonstration 2]

[Buggy Method]
private void setUpButtonListener(final GameHolder gameHolder) {
    quickStartButton.addListener(new InputListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            Options options = new Options();
            options.setupQuick();
            gameHolder.startNewGame(options.newGame());
            return true;
        }
    });
    worldButton.addListener(new InputListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            System.out.println("World Button pressed");
            return true;
        }
    });
    customStartButton.addListener(new InputListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            gameHolder.setCustomGameMode();
            return true;
        }
    });
    highScoreButton.addListener(new InputListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            System.out.println("High Score Button pressed");
            return true;
        }
    });
    settingsButton.addListener(new InputListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            System.out.println("Settings Button pressed");
            return true;
        }
    });
}

[Buggy Hunk]
gameHolder.startNewGame(options.newGame());

[Patch]
gameHolder.startNewGame(options.newGame(), "Burning Desert Wolf");

[Demonstration 3]

[Buggy Method]
public static float computeFinalSum(float[] summands) {
    float tmp = summands[0] + summands[1];
    float simpleSum = summands[summands.length - 1];
    if (Double.isNaN(tmp) && Double.isInfinite(simpleSum)) {
        return simpleSum;
    } else {
        return tmp;
    }
}

[Buggy Hunk]
if (Double.isNaN(tmp) && Double.isInfinite(simpleSum)) {

[Patch]
if (Float.isNaN(tmp) && Float.isInfinite(simpleSum)) {