[Demonstration 1]

[Buggy Method]
public static synchronized void signOut() {
    Timber.d(TAG, "current user is signing out");
    OkHttpUtils.getCookieJar().clear();
    Preferences.eraseAll();
    sCurrentUserDigest = null;
    final ArrayList<Activity> activities = ActivityRegister.get();
    if (activities == null || activities.isEmpty()) {
        Timber.e(TAG, "unable to restart the app, no Activity is available");
        return;
    }
    final Activity activity = activities.get(0);
    Timber.d(TAG, "restarting the app using: " + activity.toString());
    activity.startActivity(LoginActivity.getNewTaskLaunchIntent(activity));
    for (final Activity a : activities) {
        a.finish();
    }
    activities.clear();
}

[Buggy Hunk]
OkHttpUtils.getCookieJar().clear();

[Patch]
OkHttpUtils.getPersistentCookieJar().clear();

[Demonstration 2]

[Buggy Method]
@DELETE
public Response delete(@PathParam("deviceIdentifier") String deviceIdentifier) {
    System.err.println("Delete device discovery...");
    // We explicitly forbid access by users with service-admin role (even if user has account-owner role)
    if (security.isUserInRole("service-admin")) {
        return Response.status(Response.Status.FORBIDDEN).build();
    }
    Map<String, DeviceDiscovery> devices = (Map<String, DeviceDiscovery>) webapp.getAttribute("devicesMap");
    if (devices == null) {
        Response.status(Response.Status.NOT_FOUND).build();
    } else {
        if (devices.get(deviceIdentifier) == null) {
            return Response.status(Response.Status.NOT_FOUND).build();
        }
        devices.remove(deviceIdentifier);
    }
    return Response.ok().build();
}

[Buggy Hunk]
Response.status(Response.Status.NOT_FOUND).build();

[Patch]
return Response.status(Response.Status.NOT_FOUND).build();

[Demonstration 3]

[Buggy Method]
@Override
public void onResponse(Call<Patient> call, Response<Patient> response) {
    Log.d(TAG, "patient call response code: " + response.code());
    if (response.code() < 500 && response.code() >= 400) {
        try {
            Log.d(TAG, response.errorBody().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Log.d(TAG, response.body().toString());
    if (response.body() == null || response.code() > 299 || response.code() < 200) {
        onFailure(call, new Throwable("No response"));
    } else {
        //POST visit
        Visit visit = generateVisit(response.body(), 2);
        if (visit != null) {
            Call<Visit> visitCall = visitService.addVisit("1", visit);
            visitCall.enqueue(new Callback<Visit>() {

                @Override
                public void onResponse(Call<Visit> call, Response<Visit> response) {
                    Log.d(TAG, "visit call response code: " + response.code());
                    if (response.code() < 500 && response.code() >= 400) {
                        try {
                            Log.d(TAG, response.errorBody().string());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    Log.d(TAG, response.body().toString());
                    if (response.body() == null || response.code() > 299 || response.code() < 200) {
                        onFailure(call, new Throwable("No response"));
                    } else {
                        Triage triage = generateTriage(response.body(), vs, cc, tr);
                        if (triage != null) {
                            //POST triage
                            Call<Triage> triageCall = triageService.addTriage("1", triage);
                            triageCall.enqueue(new Callback<Triage>() {

                                @Override
                                public void onResponse(Call<Triage> call, Response<Triage> response) {
                                    Log.d(TAG, "triage call response code: " + response.code());
                                    if (response.code() < 500 && response.code() >= 400) {
                                        try {
                                            Log.d(TAG, response.errorBody().string());
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                    Log.d(TAG, response.body().toString());
                                    progressDialog.dismiss();
                                    finish();
                                }

                                @Override
                                public void onFailure(Call<Triage> call, Throwable t) {
                                }
                            });
                        }
                    }
                }

                @Override
                public void onFailure(Call<Visit> call, Throwable t) {
                }
            });
        }
    }
}

[Buggy Hunk]
Visit visit = generateVisit(response.body(), 2);

[Patch]
Visit visit = generateVisit(response.body(), pd, 2);