[Demonstration 1]

[Buggy Method]
private void addUser(Utilisateur utilisateur) {
    utilisateurs.add(utilisateur);
}

[Buggy Hunk]
private void addUser(Utilisateur utilisateur) {

[Patch]
protected void addUser(Utilisateur utilisateur) {

[Demonstration 2]

[Buggy Method]
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // récupération du paramètre
    String action = request.getParameter("action");
    // enregistrement
    if (action.equals("enregistrement")) {
        String data = request.getParameter("data");
        if (data.equals("false")) {
            // affichage du formulaire
            RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_membre.jsp");
            dispatch.forward(request, response);
        } else {
            // gestion des données du formulaire
            InscriptionForm gestionFormulaire = new InscriptionForm(utilisateurDao);
            // vérification des données de la requête / nouvel utilisateur
            Utilisateur utilisateur = gestionFormulaire.inscrireUtilisateur(request);
            utilisateur.setValide(0);
            // résultat du traitement et bean dans la requête
            request.setAttribute(ATT_FORM, gestionFormulaire);
            request.setAttribute(ATT_USER, utilisateur);
            // affichage du formulaire avec résultat de la soumission
            RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_membre.jsp");
            dispatch.forward(request, response);
        }
    } else if (action.equals("connexion")) {
        // connexion
        String data = request.getParameter("data");
        if (data.equals("false")) {
            // affichage du formulaire
            RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_connexion.jsp");
            dispatch.forward(request, response);
        } else {
            // gestion des données du formulaire
            ConnexionForm gestionFormulaire = new ConnexionForm(utilisateurDao);
            // vérification des données de la requête / nouvel utilisateur
            Utilisateur utilisateur = gestionFormulaire.connecterUtilisateur(request);
            // Récupération de la session depuis la requête
            HttpSession session = request.getSession();
            // si aucune erreur de validation n'a eu lieu, alors ajout du bean à la session :
            // la session peut être détruite dans plusieurs circonstances :
            //      l'utilisateur ferme son navigateur
            //      la session expire après une période d'inactivité de l'utilisateur
            // l'utilisateur se déconnecte.
            String page = "";
            if (utilisateur != null && utilisateur.getValide() == 1) {
                session.setAttribute(ATT_SESSION_USER, utilisateur);
                page = "index.jsp";
            } else {
                session.setAttribute(ATT_SESSION_USER, null);
                page = "formulaire_connexion.jsp";
            }
            // résultat du traitement et bean dans la requête
            if (utilisateur.getGestionnaire() == 1) {
                deleteLateUsers();
            }
            request.setAttribute(ATT_FORM, gestionFormulaire);
            request.setAttribute(ATT_USER, utilisateur);
            // affichage
            RequestDispatcher dispatch = request.getRequestDispatcher(page);
            dispatch.forward(request, response);
        }
    } else if (action.equals("deconnexion")) {
        // connexion
        // Récupération et destruction de la session en cours
        HttpSession session = request.getSession();
        session.invalidate();
        // Redirection
        //response.sendRedirect( URL_REDIRECTION );
        RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_connexion.jsp");
        dispatch.forward(request, response);
    } else if (action.equals("recuperer")) {
        // récupération
        String data = request.getParameter("data");
        if (data.equals("false")) {
            // affichage du formulaire
            RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_recuperation.jsp");
            dispatch.forward(request, response);
        } else {
            // gestion des données du formulaire
            ConnexionForm gestionFormulaire = new ConnexionForm(utilisateurDao);
            // vérification des données de la requête / nouvel utilisateur
            Utilisateur utilisateur = gestionFormulaire.recupererUtilisateur(request);
            request.setAttribute(ATT_FORM, gestionFormulaire);
            request.setAttribute(ATT_USER, utilisateur);
            RequestDispatcher dispatch = request.getRequestDispatcher("formulaire_recuperation.jsp");
            dispatch.forward(request, response);
        }
    }
}

[Buggy Hunk]
if (utilisateur.getGestionnaire()==1) {

[Patch]
if (utilisateur != null && utilisateur.getGestionnaire()==1) {

[Demonstration 3]

[Buggy Method]
private boolean normalize(double[] vector) {
    double norm = 0;
    for (int i = 0; i < 6; i++) {
        norm += vector[i] * vector[i];
    }
    norm = Math.sqrt(norm);
    if (Math.abs(norm) < zeroAccuracy) {
        return false;
    } else {
        for (int i = 0; i < 6; i++) {
            vector[i] /= norm;
        }
        return true;
    }
}

[Buggy Hunk]
if (Math.abs(norm) < zeroAccuracy) {

[Patch]
if (Math.abs(norm) < normalizationAccuracy) {