[Demonstration 1]

[Buggy Method]
private void editExistingNote() throws FileNotFoundException, IOException {
    File f = new File(txtFileName);
    if (f.exists()) {
        //Creates a string of the json file (jsonFile)
        Scanner jsonScanner = new Scanner(new FileReader(txtFileName));
        String jsonFile = "";
        jsonFile += jsonScanner.nextLine();
        jsonScanner.close();
        //Creates a JsonObject (o) based on json string input
        JsonParser parser = new JsonParser();
        JsonElement element = parser.parse(jsonFile.toString());
        JsonObject o = parser.parse(jsonFile.toString()).getAsJsonObject();
        //Creates a Set of a map (entries) of json key value pairs for each user and their json-coded notes
        JsonObject albums = element.getAsJsonObject();
        Set<Map.Entry<String, JsonElement>> entries = o.entrySet();
        //Returns an updated Json object (jsonO)
        for (Note note1 : noteList) {
            if (note1.getTitle().equals(titleNote.getText())) {
                note1.setTitle(titleNote.getText());
                note1.setBody(noteBody.getText());
            }
        }
        JsonObject jsonO = createJson(entries, albums);
        clearDownFile();
        FileWriter fw = new FileWriter(txtFileName, true);
        writeToFile(jsonO, fw);
        // These lines below redraw the screen, so the edited note is displayed
        titleNote.clear();
        noteBody.clear();
        yourNotesArea.getChildren().clear();
        try {
            prepareNotesScreen();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        System.out.println("Note text file does not exist so note cannot be edited");
    }
}

[Buggy Hunk]
if(note1.getTitle().equals(titleNote.getText())){

[Patch]
if(note1.getTitle().equals(currentNoteSelected.getText())){

[Demonstration 2]

[Buggy Method]
private void handleEvents(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
    if (req.getParameter("viewEmpBtn") != null) {
        redirect(res, "employeeProfile?empId=" + req.getParameter("viewEmpBtn"));
    }
    if (req.getParameter("delEmpBtn") != null) {
        processDeleteEmployee(Integer.parseInt(req.getParameter("delEmpBtn")));
    }
    if (req.getParameter("sortBtn") != null) {
        order = req.getParameter("sort");
        logMsgs.add(new LogMsg("Sorted By " + order, "green"));
    }
    if (req.getParameter("addEmpBtn") != null) {
        redirect(res, "employeeForm");
    }
    if (req.getParameter("roleBtn") != null) {
        logMsgs.clear();
        redirect(res, "roles");
    }
}

[Buggy Hunk]
processDeleteEmployee(Integer.parseInt(req.getParameter("delEmpBtn")));

[Patch]
logMsgs.add(EmployeeManager.deleteEmployee(Integer.parseInt(req.getParameter("delEmpBtn"))));

[Demonstration 3]

[Buggy Method]
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
    try {
        String uri = req.getRequestURI();
        StringTokenizer st = new StringTokenizer(uri, "/");
        st.nextToken();
        String buffertxt = st.nextToken().trim();
        List<Form> forms = (List<Form>) ofy().load().type(Form.class).list();
        Form form = new Form();
        Map<String, Reponse> userReponse = new HashMap<String, Reponse>();
        for (Form buffer : forms) {
            if (buffer.getId().toString().equals(buffertxt)) {
                form = buffer;
                break;
            }
        }
        for (int i = 0; i < form.getNbquestions(); i++) {
            List<Question> listeQs = form.getListe();
            for (int l = 0; l < listeQs.size(); l++) {
                Question qs = listeQs.get(l);
                StringBuffer sb = new StringBuffer();
                if (qs.getQuestion().equals("checkbox")) {
                    String[] checked;
                    checked = new String[qs.getNbreponses()];
                    for (int z = 0; z < qs.getNbreponses(); z++) {
                        checked[z] = "";
                    }
                    if (req.getParameterValues("checkboxes" + l) != null)
                        checked = req.getParameterValues("checkboxes" + l);
                    for (int j = 0; j < checked.length; j++) {
                        sb.append(checked[j]);
                        sb.append("|");
                    }
                } else if (qs.getQuestion().equals("text")) {
                    sb.append(req.getParameter("textreponse"));
                } else {
                    sb.append(req.getParameter("radios" + l));
                    sb.append("|");
                }
                Reponse rep = new Reponse(sb.toString());
                userReponse.put(qs.getEnonce(), rep);
            }
        }
        User user = new User();
        // Stocker l'ID du formulaire
        user.setIdForm(form.getId());
        user.setReponses(userReponse);
        ofy().save().entity(user).now();
        resp.sendRedirect("/results/" + form.getId());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

[Buggy Hunk]
sb.append(req.getParameter("textreponse"));

[Patch]
sb.append(req.getParameter("textreponse" + l));