[Demonstration 1]

[Buggy Method]
private void deviceFound(OcfDevice dev) {
    Log.d(TAG, "deviceFound " + dev);
    mDevices.add(dev);
    for (int i = 0; i < mOcfOnDeviceFoundList.size(); i++) {
        mOcfOnDeviceFoundList.get(i).deviceFound(dev);
    }
}

[Buggy Hunk]
Log.d(TAG, "deviceFound " + dev);

[Patch]
Log.d(TAG, "deviceFound " + dev.getName() + " " + dev.getDi());

[Demonstration 2]

[Buggy Method]
private Result getJobDetail(HttpServletRequest req, VerifiedToken token) {
    JSONObject ret;
    int jobId = (int) Noise64.denoise(getLongParam(req, "jobid", -1));
    if (jobId > 0) {
        ret = DatabaseModel.Instance.getJobDetail(jobId);
        if (ret != null) {
            if (Role.STUDENT.equals(token.getRole())) {
                AppliedJob userApplyJob = DatabaseModel.Instance.getApplyJob(token.getProfileId(), jobId);
                ret.put(RetCode.is_applied, userApplyJob != null);
                if (userApplyJob != null) {
                    ret.put(RetCode.status, userApplyJob.getStatus().toString());
                }
            } else if (Role.AGENCY.equals(token.getRole())) {
                List<AppliedJob> allAppliedJob = DatabaseModel.Instance.getAllAppliedJob(jobId, true);
                if (allAppliedJob == null) {
                    return new Result(ErrorCode.DATABASE_ERROR);
                }
                JSONArray listStudent = new JSONArray();
                for (AppliedJob job : allAppliedJob) {
                    JSONObject student = new JSONObject();
                    student.put(RetCode.id, Noise64.noise(job.getStudentId()));
                    student.put(RetCode.name, job.getStudentName());
                    student.put(RetCode.status, job.getStatus().toString());
                    listStudent.add(student);
                }
                ret.put(RetCode.applied_students, listStudent);
            }
            JSONArray tagsArr = (JSONArray) ret.get(RetCode.tags);
            JSONArray job_similar = DatabaseModel.Instance.searchJob("", "", "", tagsArr, null, -1, -1, 5, Boolean.valueOf(ret.get(RetCode.is_internship).toString()), false);
            if (job_similar != null) {
                ret.put(RetCode.jobs_similar, job_similar);
            } else {
                ret = null;
            }
        }
    } else {
        return new Result(ErrorCode.INVALID_PARAMETER);
    }
    if (ret == null) {
        return new Result(ErrorCode.DATABASE_ERROR);
    }
    return new Result(ErrorCode.SUCCESS, ret);
}

[Buggy Hunk]
} else if (Role.AGENCY.equals(token.getRole())) {

[Patch]
} else {

[Demonstration 3]

[Buggy Method]
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
    switch(selectionType) {
        case SELECTION_TYPE_NONE:
            if (position == adapterView.getCount())
                startItemCreate(getActivity(), view);
            else
                startItemDetails(getActivity(), id, position, adapter, adapter.getCursor(), view);
            break;
        case SELECTION_TYPE_SINGLE:
            // Prepare extras
            final Bundle extras = new Bundle();
            onItemSelected(id, adapter, adapter.getCursor(), extras);
            Intent data = new Intent();
            data.putExtra(RESULT_EXTRA_ITEM_ID, id);
            data.putExtras(extras);
            getActivity().setResult(Activity.RESULT_OK, data);
            getActivity().finish();
            break;
        case SELECTION_TYPE_MULTI:
            adapter.setSelectedIDs(list_V.getCheckedItemIds());
            break;
    }
}

[Buggy Hunk]
if (position == adapterView.getCount())

[Patch]
if (position == adapter.getCount())