[Demonstration 1]

[Buggy Method]
public static String addNewUser(ChatUser user, Session session) throws NoSuchAlgorithmException, IOException {
    ChatUserDAO dao = new ChatUserDAO();
    if (user.getId() == null) {
        ChatDBUsers loginDetails = dao.getLoginDetails(user.getEmail(), session);
        if (loginDetails == null) {
            loginDetails = dao.getLoginDetailsByUid(user.getUid(), session);
            if (loginDetails == null) {
                ChatDBUsers chatDBUsers = ChatBusinessConverters.getChatDBUser(user, session);
                setImage(user, chatDBUsers);
                session.persist(chatDBUsers);
                setDepartment(user, session, chatDBUsers);
            } else {
                return ERROR_USER_ID_EXISTS;
            }
        } else {
            return ERROR_EMAIL_EXISTS;
        }
    } else {
        ChatDBUsers registeredUser = new ChatUserDAO().getLoginDetails(user.getId(), session);
        if (StringUtils.isBlank(user.getPassword()) || ChatEncryptionUtil.validatePassword(user, registeredUser)) {
            ChatBusinessConverters.setUser(user, registeredUser);
            setImage(user, registeredUser);
            // setDepartment(user, session, registeredUser);
        } else {
            return ERROR_INCORRECT_OLD_PASSWORD;
        }
    }
    return RESPONSE_OK;
}

[Buggy Hunk]
if (StringUtils.isBlank(user.getPassword()) || ChatEncryptionUtil.validatePassword(user, registeredUser)) {

[Patch]
if (StringUtils.isBlank(user.getPassword()) || ChatEncryptionUtil.validatePassword(user.getOldPassword(), registeredUser)) {

[Demonstration 2]

[Buggy Method]
public void loadFromReadableMap(ReadableMap readableMap) {
    if (readableMap.hasKey("id"))
        id = readableMap.getInt("id");
    if (readableMap.hasKey("subject"))
        subject = readableMap.getString("subject");
    if (readableMap.hasKey("message"))
        message = readableMap.getString("message");
    if (readableMap.hasKey("action"))
        action = readableMap.getString("action");
    if (readableMap.hasKey("payload"))
        payload = readableMap.getString("payload");
    if (readableMap.hasKey("delayed"))
        delayed = readableMap.getBoolean("delayed");
    if (readableMap.hasKey("delay"))
        delay = readableMap.getInt("delay");
    if (readableMap.hasKey("scheduled"))
        scheduled = readableMap.getBoolean("scheduled");
    if (readableMap.hasKey("sendAt"))
        sendAt = Long.parseLong(readableMap.getString("sendAt"));
    if (readableMap.hasKey("sendAtYear"))
        sendAtYear = readableMap.getInt("sendAtYear");
    if (readableMap.hasKey("sendAtMonth"))
        sendAtMonth = readableMap.getInt("sendAtMonth");
    if (readableMap.hasKey("sendAtDay"))
        sendAtDay = readableMap.getInt("sendAtDay");
    if (readableMap.hasKey("sendAtWeekDay"))
        sendAtWeekDay = readableMap.getInt("sendAtWeekDay");
    if (readableMap.hasKey("sendAtHour"))
        sendAtHour = readableMap.getInt("sendAtHour");
    if (readableMap.hasKey("sendAtMinute"))
        sendAtMinute = readableMap.getInt("sendAtMinute");
    if (readableMap.hasKey("repeatEvery"))
        repeatEvery = readableMap.getString("repeatEvery");
    if (readableMap.hasKey("repeatType"))
        repeatType = readableMap.getString("repeatType");
    if (readableMap.hasKey("repeatTime"))
        repeatTime = readableMap.getInt("repeatTime");
    if (readableMap.hasKey("repeatCount"))
        repeatCount = readableMap.getInt("repeatCount");
    if (readableMap.hasKey("endAt"))
        endAt = Long.parseLong(readableMap.getString("endAt"));
    if (readableMap.hasKey("priority"))
        priority = readableMap.getInt("priority");
    if (readableMap.hasKey("smallIcon"))
        smallIcon = readableMap.getString("smallIcon");
    if (readableMap.hasKey("largeIcon"))
        largeIcon = readableMap.getString("largeIcon");
    if (readableMap.hasKey("sound"))
        sound = readableMap.getString("sound");
    if (readableMap.hasKey("vibrate"))
        vibrate = readableMap.getString("vibrate");
    if (readableMap.hasKey("lights"))
        lights = readableMap.getString("lights");
    if (readableMap.hasKey("autoClear"))
        autoClear = readableMap.getBoolean("autoClear");
    else
        autoClear = true;
    if (readableMap.hasKey("onlyAlertOnce"))
        onlyAlertOnce = readableMap.getBoolean("onlyAlertOnce");
    if (readableMap.hasKey("tickerText"))
        tickerText = readableMap.getString("tickerText");
    if (readableMap.hasKey("when"))
        when = Long.parseLong(readableMap.getString("when"));
    if (readableMap.hasKey("bigText"))
        bigText = readableMap.getString("bigText");
    if (readableMap.hasKey("bigStyleImageBase64"))
        bigStyleImageBase64 = readableMap.getString("bigStyleImageBase64");
    if (readableMap.hasKey("subText"))
        subText = readableMap.getString("subText");
    if (readableMap.hasKey("progress"))
        progress = readableMap.getInt("progress");
    if (readableMap.hasKey("color"))
        color = readableMap.getString("color");
    if (readableMap.hasKey("number"))
        number = readableMap.getInt("number");
    if (readableMap.hasKey("category"))
        category = readableMap.getString("category");
    if (readableMap.hasKey("localOnly"))
        localOnly = readableMap.getBoolean("localOnly");
    if (readableMap.hasKey("inboxStyle")) {
        inboxStyle = true;
        ReadableMap inboxStyle = readableMap.getMap("inboxStyle");
        inboxStyleBigContentTitle = inboxStyle.getString("bigContentTitle");
        inboxStyleSummaryText = inboxStyle.getString("summaryText");
        ReadableArray inboxLines = inboxStyle.getArray("lines");
        inboxStyleLines = new ArrayList<>();
        for (int i = 0; i < inboxLines.size(); i++) {
            inboxStyleLines.add(inboxLines.getString(i));
        }
    } else {
        inboxStyle = false;
    }
}

[Buggy Hunk]
if (readableMap.hasKey("priority")) priority = readableMap.getInt("priority");

[Patch]
if (readableMap.hasKey("priority")) priority = readableMap.getDouble("priority");

[Demonstration 3]

[Buggy Method]
public static Result service(String ownerName, String projectName, String service, boolean isAdvertise) throws IOException, UnsupportedOperationException, ServletException {
    if (!isSupportedService(service)) {
        return forbidden(String.format("Unsupported service: '%s'", service));
    }
    Project project = Project.findByOwnerAndProjectName(ownerName, projectName);
    if (project == null) {
        return notFound();
    }
    models.User user = UserApp.currentUser();
    if (!isAllowed(project, service)) {
        if (user.isAnonymous()) {
            return BasicAuthAction.unauthorized(response());
        } else {
            // If you want the Git client showing your custom message to
            // the user, the Content-Type should be exact "text/plain"
            // without any parameter. For more details, see the code at
            // https://github.com/git/git/commit/426e70d4a11ce3b4f70636d57c6a0ab16ae08a00#diff-eea0ad565ec5903a11b6023755d491cfR154
            response().setHeader("Content-Type", "text/plain");
            return forbidden(String.format("'%s' has no permission to '%s/%s'.", user.name, ownerName, projectName));
        }
    }
    if (isAdvertise) {
        return ok(RepositoryService.gitAdvertise(project, service, response()));
    } else {
        if (request().body().isMaxSizeExceeded()) {
            return status(REQUEST_ENTITY_TOO_LARGE);
        } else {
            user.visits(project);
            return ok(RepositoryService.gitRpc(project, service, request(), response()));
        }
    }
}

[Buggy Hunk]
user.name, ownerName, projectName));

[Patch]
user.loginId, ownerName, projectName));