[Demonstration 1]

[Buggy Method]
void setListeners() {
    super.setListeners();
    ((Button) findViewById(R.id.buttonBot)).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            moveDown();
        }
    });
    ((Button) findViewById(R.id.buttonTop)).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            moveUp();
        }
    });
    ((Button) findViewById(R.id.buttonLeft)).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            edit();
        }
    });
    ((Button) findViewById(R.id.buttonRight)).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            complete();
        }
    });
    View filler = findViewById(R.id.filler);
    final RelativeLayout relLay = (RelativeLayout) findViewById(R.id.relLay2);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (focused == -1) {
                focused = position;
                setFocus(position, true);
            } else if (focused == position) {
                setFocus(focused, false);
                focused = -1;
            } else {
                setFocus(position, true);
                setFocus(focused, false);
                focused = position;
            }
        }
    });
    lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            focused = position;
            setFocus(position, true);
            edit();
            return true;
        }
    });
    lv.setOnTouchListener(new View.OnTouchListener() {

        private final GestureDetector gestureDetector = new GestureDetector(relLay.getContext(), new GestureDetector.SimpleOnGestureListener() {

            @Override
            public boolean onDoubleTap(MotionEvent e) {
                back();
                return super.onDoubleTap(e);
            }
        });

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            gestureDetector.onTouchEvent(event);
            return event.getAction() != MotionEvent.ACTION_UP && focused != -1;
        }
    });
    lv.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            color();
        }
    });
    filler.setOnTouchListener(new View.OnTouchListener() {

        private final GestureDetector gestureDetector = new GestureDetector(relLay.getContext(), new GestureDetector.SimpleOnGestureListener() {

            @Override
            public boolean onDoubleTap(MotionEvent e) {
                back();
                return super.onDoubleTap(e);
            }
        });

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            gestureDetector.onTouchEvent(event);
            if (event.getAction() == MotionEvent.ACTION_UP && focused != -1) {
                setFocus(focused, false);
                focused = -1;
            }
            return true;
        }
    });
}

[Buggy Hunk]
return event.getAction() != MotionEvent.ACTION_UP && focused != -1;

[Patch]
return false;

[Demonstration 2]

[Buggy Method]
@Override
public boolean onRecyclerItemLongClicked(View v, int position) {
    DeleteDialog.newInstance(getActivity(), R.string.delete_speedDial, R.string.confirm_delete_speedDial, position).show(getChildFragmentManager(), "delete");
    return true;
}

[Buggy Hunk]
DeleteDialog.newInstance(getActivity(), R.string.delete_speedDial, R.string.confirm_delete_speedDial, position)

[Patch]
DeleteDialog.newInstance(getActivity(), R.string.delete_mf_gesture, R.string.confirm_delete_mf_gesture, position)

[Demonstration 3]

[Buggy Method]
@Override
public boolean onTouchEvent(MotionEvent event) {
    PointF curr = new PointF(event.getX(), event.getY());
    Log.i(TAG, "Received event at x=" + curr.x + ", y=" + curr.y + ":");
    final int action = event.getAction();
    switch(action) {
        case MotionEvent.ACTION_DOWN:
            Log.i(TAG, "  ACTION_DOWN");
            mCurrentBox = new Box(curr);
            mBoxes.add(mCurrentBox);
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            final int count = event.getPointerCount();
            Log.w(TAG, "count : " + count);
            final int index = event.getActionIndex();
            final int mask = event.getActionMasked();
            final int id = event.getPointerId(index);
            Log.w(TAG, "index : " + index + "\nid : " + id + "\n mask : " + mask);
            break;
        case MotionEvent.ACTION_MOVE:
            Log.i(TAG, "  ACTION_MOVE");
            if (mCurrentBox != null) {
                mCurrentBox.setCurrent(curr);
                invalidate();
            }
            break;
        case MotionEvent.ACTION_UP:
            Log.i(TAG, "  ACTION_UP");
            mCurrentBox = null;
            break;
        case MotionEvent.ACTION_CANCEL:
            Log.i(TAG, "  ACTION_CANCEL");
            mCurrentBox = null;
            break;
    }
    return true;
}

[Buggy Hunk]
public boolean onTouchEvent(MotionEvent event) {

[Patch]
public boolean onTouchEvent(@NonNull MotionEvent event) {