[Demonstration 1]

[Buggy Method]
static int getInt(Map<String, Object> jndiVariables, String name, int defaultValue) {
    Object value = jndiVariables.get(name);
    return value instanceof String ? (Integer) value : defaultValue;
}

[Buggy Hunk]
return value instanceof String ? (Integer)value : defaultValue;

[Patch]
return value instanceof Integer ? (Integer)value : defaultValue;

[Demonstration 2]

[Buggy Method]
public Meeting processJSON(String inputJSON) {
    LOGGER.setLevel(Level.INFO);
    try {
        fileTxt = new FileHandler("Logs.txt");
    } catch (IOException e) {
        System.out.println("Error logging not possible!");
    }
    String keyName;
    String firstName = null;
    String lastName = null;
    String email = null;
    Integer eventID = null;
    JsonParser.Event event;
    Owner owner = new Owner();
    Location location = new Location();
    ArrayList<Participant> participants = new ArrayList<>();
    InputStream inputStream = new ByteArrayInputStream(inputJSON.getBytes());
    JsonParser jsonParser = Json.createParser(inputStream);
    //firstly Location and Owner objects must be created to be used later in Participants ArrayList
    while (jsonParser.hasNext()) {
        event = jsonParser.next();
        if (event.equals(JsonParser.Event.START_OBJECT)) {
            event = jsonParser.next();
        }
        if (event.equals(JsonParser.Event.KEY_NAME)) {
            keyName = jsonParser.getString();
            switch(keyName) {
                case "name":
                    jsonParser.next();
                    location.setName(jsonParser.getString());
                    break;
                case "eventID":
                    jsonParser.next();
                    eventID = Integer.getInteger(jsonParser.getString());
                    break;
                case "author":
                    event = jsonParser.next();
                    while (event.equals(JsonParser.Event.START_OBJECT)) {
                        event = jsonParser.next();
                        while (!(event.equals(JsonParser.Event.END_OBJECT))) {
                            keyName = jsonParser.getString();
                            switch(keyName) {
                                case "name":
                                    jsonParser.next();
                                    firstName = jsonParser.getString();
                                    break;
                                case "surname":
                                    jsonParser.next();
                                    lastName = jsonParser.getString();
                                    break;
                                case "email":
                                    jsonParser.next();
                                    email = jsonParser.getString();
                                    break;
                            }
                            LOGGER.log(Level.INFO, "Owner: " + firstName + lastName + email);
                            event = jsonParser.next();
                        }
                    }
                    owner = new Owner(firstName, lastName, email);
                    break;
                case "date":
                    jsonParser.next();
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                    try {
                        Date meetingDate = dateFormat.parse(jsonParser.getString());
                        location.setDate(meetingDate);
                    } catch (ParseException e) {
                        LOGGER.log(Level.SEVERE, "Error of parsing date" + jsonParser.getString());
                        LOGGER.log(Level.SEVERE, e.getMessage());
                    }
                    break;
                case "location":
                    jsonParser.next();
                    location.setLocation(jsonParser.getString());
                    break;
            }
        }
    }
    inputStream = new ByteArrayInputStream(inputJSON.getBytes());
    jsonParser = Json.createParser(inputStream);
    while (jsonParser.hasNext()) {
        event = jsonParser.next();
        if (event.equals(JsonParser.Event.START_OBJECT)) {
            event = jsonParser.next();
        }
        if (event.equals(JsonParser.Event.KEY_NAME)) {
            keyName = jsonParser.getString();
            switch(keyName) {
                case "participants":
                    event = jsonParser.next();
                    if (event.equals(JsonParser.Event.START_ARRAY)) {
                        event = jsonParser.next();
                    }
                    while (event.equals(JsonParser.Event.START_OBJECT)) {
                        event = jsonParser.next();
                        while (!(event.equals(JsonParser.Event.END_OBJECT))) {
                            keyName = jsonParser.getString();
                            switch(keyName) {
                                case "name":
                                    jsonParser.next();
                                    firstName = jsonParser.getString();
                                    break;
                                case "surname":
                                    jsonParser.next();
                                    lastName = jsonParser.getString();
                                    break;
                                case "email":
                                    jsonParser.next();
                                    email = jsonParser.getString();
                                    break;
                            }
                            event = jsonParser.next();
                        }
                        event = jsonParser.next();
                        participants.add(new Participant(owner, firstName, lastName, email));
                    }
                    break;
            }
        }
    }
    try {
        inputStream.close();
    } catch (IOException e) {
        LOGGER.log(Level.SEVERE, "Error of closing JSON input");
        LOGGER.log(Level.SEVERE, e.getMessage());
    }
    return new Meeting(owner, location, eventID, participants);
}

[Buggy Hunk]
eventID = Integer.getInteger(jsonParser.getString());

[Patch]
eventID = Integer.parseInt(jsonParser.getString());

[Demonstration 3]

[Buggy Method]
@SuppressWarnings("unchecked")
public List<Attachment> getFileTree() {
    List<Object[]> rows = getEntityManager().createNamedQuery("Attachment.GetDirectoryTree").getResultList();
    List<Attachment> directories = new ArrayList<Attachment>();
    Attachment parent = null;
    for (Object[] row : rows) {
        int i = 0;
        Attachment attachment = new Attachment();
        Object value = null;
        String id = (value = row[i++]) == null ? null : value.toString();
        String refId = (value = row[i++]) == null ? null : value.toString();
        String name = (value = row[i++]) == null ? null : value.toString();
        String parentid = (value = row[i++]) == null ? null : value.toString();
        Integer ct = (value = row[i++]) == null ? null : (Integer) value;
        String parentRefId = (value = row[i++]) == null ? null : value.toString();
        attachment.setName(name);
        attachment.setRefId(refId);
        attachment.setParentRefId(parentRefId);
        attachment.setDirectory(true);
        attachment.setChildCount(ct);
        parent = addToParent(parent, attachment, directories);
    }
    return directories;
}

[Buggy Hunk]
Integer ct = (value = row[i++]) == null ? null : (Integer) value;

[Patch]
Integer ct = (value = row[i++]) == null ? 0 : (Integer) value;