[Demonstration 1]

[Buggy Method]
private static ArrayList<Vocabulary> select(String whereClause, String[] selectionArgs, String limitClause) {
    ArrayList<Vocabulary> vocabularies = new ArrayList<>();
    DataAccess da = new DataAccess();
    SQLiteDatabase db = da.getReadableDB();
    Cursor cursor = null;
    try {
        String query = "Select * From " + TableName + " " + whereClause + " " + limitClause;
        cursor = db.rawQuery(query, selectionArgs);
        if (cursor != null && cursor.moveToFirst()) {
            do {
                Vocabulary vocabulary = new Vocabulary(cursor.getInt(cursor.getColumnIndex(Id)), cursor.getInt(cursor.getColumnIndex(ThemeId)), cursor.getInt(cursor.getColumnIndex(Day)), cursor.getString(cursor.getColumnIndex(Vocabulary)), cursor.getString(cursor.getColumnIndex(EnglishDef)), cursor.getString(cursor.getColumnIndex(PersianDef)), cursor.getInt(cursor.getColumnIndex(Learned)) == 1, cursor.getInt(cursor.getColumnIndex(Bookmarked)) == 1, cursor.getString(cursor.getColumnIndex(EncVocab)), cursor.getString(cursor.getColumnIndex(EncEngDef)), cursor.getString(cursor.getColumnIndex(EncPersianDef)));
                vocabularies.add(vocabulary);
            } while (cursor.moveToNext());
        }
    } catch (MyRuntimeException e) {
        e.printStackTrace();
    } finally {
        if (cursor != null && !cursor.isClosed())
            cursor.close();
        if (db != null && db.isOpen())
            db.close();
    }
    return vocabularies;
}

[Buggy Hunk]
cursor.getString(cursor.getColumnIndex(PersianDef)),

[Patch]
cursor.getString(cursor.getColumnIndex(PersianDef)).replace('|','\n'),

[Demonstration 2]

[Buggy Method]
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, GeneralSecurityException {
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    try (PrintWriter out = response.getWriter()) {
        String action = request.getParameter("action");
        if (action.equals("loginGoogle")) {
            //HttpTransport transport = new HttpTransport();
            JsonFactory jsonFactory = new JacksonFactory();
            NetHttpTransport transport = new NetHttpTransport();
            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory).setAudience(Arrays.asList("914513079502-evc4u51vs3mijtfebssfqr0mjpk7cs2l.apps.googleusercontent.com")).build();
            // (Receive idTokenString by HTTPS POST)
            String idTokenString = request.getParameter("token");
            System.out.println("idTokenString:" + idTokenString);
            //  System.out.println("verifier is:" + verifier.toString());
            GoogleIdToken idToken = verifier.verify(idTokenString);
            if (idToken != null) {
                Payload payload = idToken.getPayload();
                String id = request.getParameter("id");
                if (id.equals(payload.getUserId())) {
                    System.out.println("id utente e id del token uguali");
                    String email = request.getParameter("email");
                    String idgoogle = request.getParameter("idgoogle");
                    UtenteGoogle u = gestoreUtenti.loginGoogle(email, idgoogle);
                    //Profilo p = profiloFacade.getProfilo(email);
                    if (u != null) {
                        System.out.println("son loggato!");
                        HttpSession s = request.getSession();
                        s.setAttribute("id", u.getProfilo().getId());
                        s.setAttribute("idgoogle", u.getIdGoogle());
                        s.setAttribute("nome", "" + u.getProfilo().getNome());
                        s.setAttribute("cognome", "" + u.getProfilo().getCognome());
                        s.setAttribute("email", "" + u.getProfilo().getEmail());
                        s.setAttribute("data", "" + u.getProfilo().getData_nascita());
                        s.setAttribute("sesso", "" + u.getProfilo().getSesso());
                        //s.setAttribute("location", "" + p.getLocation());
                        s.setAttribute("foto", "" + u.getProfilo().getFoto_profilo());
                        //session.setAttribute("location",""+p.get);
                        out.println("1");
                    } else {
                        System.out.println("non sono loggato!");
                        out.println("0");
                    }
                } else {
                    System.out.println("id utente e id del token non uguali");
                    out.println("-1");
                }
            } else {
                System.out.println("Invalid ID token.");
                out.println("-1");
            }
        } else {
            System.out.println("Action OTHER");
        }
    }
}

[Buggy Hunk]
.setAudience(Arrays.asList("914513079502-evc4u51vs3mijtfebssfqr0mjpk7cs2l.apps.googleusercontent.com"))

[Patch]
.setAudience(Arrays.asList(Constants.ID_GOOGLE))

[Demonstration 3]

[Buggy Method]
@Override
protected String doInBackground(Void... params) {
    return this.download();
}

[Buggy Hunk]
protected String doInBackground(Void... params) {

[Patch]
protected String doInBackground(Void... voids) {