[Demonstration 1]

[Buggy Method]
private <T> void updateNodeForObjectListAttribute(Class<T> objectClass, String objectAttribute, String nodeAttribute, Event event) {
    if (objectClass.isInstance(event.getObject()) && event.getAttributeChange().checkName(objectAttribute)) {
        T object = objectClass.cast(event.getObject());
        for (Node node : ((TrainDiagram) event.getSource()).getNet().getNodes()) {
            Collection<T> attribute = node.getAttributeAsCollection(nodeAttribute, objectClass);
            if (attribute.contains(object)) {
                updateNode(node);
            }
        }
    }
}

[Buggy Hunk]
if (attribute.contains(object)) {

[Patch]
if (attribute != null && attribute.contains(object)) {

[Demonstration 2]

[Buggy Method]
@Override
public IBlockState getStateFromMeta(int meta) {
    IBlockState state = getDefaultState();
    for (int i = 0; i < 4; ++i) {
        if ((meta & (1 << i)) != 0) {
            state = state.withProperty(PROPS_SIDE_HORIZONTALS[I[i]], true);
        }
    }
    return state;
}

[Buggy Hunk]
if ((meta & (1 << i)) != 0)

[Patch]
if ((meta & (1 << I[i])) != 0)

[Demonstration 3]

[Buggy Method]
public void readFile(String fileName, String cutOff) {
    try {
        System.out.println("Number of students currently in directory: " + numOfStudents);
        reader = new Scanner(new File(fileName));
        int count = 0;
        int numOfStudents = 0;
        while (reader.hasNextLine()) {
            reader.nextLine();
            numOfStudents++;
        }
        numOfStudents = numOfStudents - 1;
        reader.close();
        reader = new Scanner(new File(fileName));
        int studentNum = 0;
        String headerLine = reader.nextLine();
        String[] headerToken = headerLine.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
        String studentLine = reader.nextLine();
        String[] data = studentLine.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
        while (true) {
            if (headerToken[count].contains("Student Name")) {
                fullName = (data[count]);
                //Last minute add
                String[] name = fullName.split(",");
                firstName = name[1];
                lastName = name[0];
            } else if (headerToken[count].contains("FIRST NAME")) {
                firstName = (data[count]);
            } else if (headerToken[count].contains("LAST NAME")) {
                lastName = (data[count]);
            } else if (headerToken[count].contains("Id") || headerToken[count].contains("ID")) {
                id = (data[count]);
            } else if (headerToken[count].contains("Assignment")) {
                Assignment assignment = new Assignment(cutOff + "-" + headerToken[count], data[count], data[count + 1]);
                assignments.add(assignment);
                count++;
            } else if (headerToken[count].contains("project") || headerToken[count].contains("Project") || headerToken[count].contains("ray") || headerToken[count].contains("Sprint") || headerToken[count].contains("Paper")) {
                Project project = new Project(headerToken[count], data[count], data[count + 1]);
                projects.add(project);
                count++;
            } else if (headerToken[count].contains("Exam")) {
                exams.add(data[count]);
            } else if (headerToken[count].contains("Final")) {
                finalExam = (data[count]);
            } else if (headerToken[count].contains("Total")) {
                total = (data[count]);
            }
            if (headerToken[count].contains("grade") || headerToken[count].contains("Grade")) {
                letterGrade = (data[count] + "," + cutOff);
                Student student = new Student(firstName, lastName, id, assignments, projects, exams, total, finalExam, letterGrade);
                students.add(student);
                count = -1;
                studentNum++;
                if (numOfStudents == studentNum) {
                    break;
                }
                studentLine = reader.nextLine();
                data = studentLine.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
            }
            count++;
            //System.out.println(students.size());
        }
        System.out.println("Successfully added file to repository");
        System.out.println("Number of students read: " + numOfStudents);
        reader.close();
    } catch (FileNotFoundException ex) {
        System.out.println("Unable to open file '" + fileName + "'");
    } catch (IOException ex) {
        System.out.println("Error reading file: " + fileName);
        System.exit(1);
    }
}

[Buggy Hunk]
System.out.println("Number of students currently in directory: " +numOfStudents);

[Patch]
System.out.println("Number of students currently in directory: " +students.size());