[Demonstration 1]

[Buggy Method]
Task adam() throws Exception {
    Description description = new Description("Adam Brown");
    Deadline privatePhone = new Deadline("111111");
    Status status = new Status("adam@gmail.com");
    Detail privateAddress = new Detail("111, alpha street");
    Tag tag1 = new Tag("tag1");
    Tag tag2 = new Tag("longertag2");
    UniqueTagList tags = new UniqueTagList(tag1, tag2);
    return new Task(description, privatePhone, status, privateAddress, tags);
}

[Buggy Hunk]
Task adam() throws Exception {

[Patch]
private Task adam() throws Exception {

[Demonstration 2]

[Buggy Method]
public static void loadTaskManagerWithSampleData(TaskManager tm) {
    for (TestTask task : new TypicalTestTasks().getTypicalTasks()) {
        try {
            Task toAdd = new Task(task.getName(), task.getDate(), null);
            tm.addTask(toAdd);
        } catch (UniqueTaskList.DuplicateTaskException e) {
            assert false : "not possible";
        }
    }
}

[Buggy Hunk]
Task toAdd = new Task(task.getName(), task.getDate(), null);

[Patch]
Task toAdd = new Task(task.getName(), task.getDate(), task.getTags());

[Demonstration 3]

[Buggy Method]
public static TreeReader createTreeReader(TypeDescription readerType, SchemaEvolution evolution, boolean[] included, boolean skipCorrupt) throws IOException {
    TypeDescription fileType = evolution.getFileType(readerType);
    if (fileType == null || (included != null && !included[readerType.getId()])) {
        return new NullTreeReader(0);
    }
    TypeDescription.Category readerTypeCategory = readerType.getCategory();
    if (!fileType.equals(readerType) && (readerTypeCategory != TypeDescription.Category.STRUCT && readerTypeCategory != TypeDescription.Category.MAP && readerTypeCategory != TypeDescription.Category.LIST && readerTypeCategory != TypeDescription.Category.UNION)) {
        // We only convert complex children.
        return ConvertTreeReaderFactory.createConvertTreeReader(readerType, evolution, included, skipCorrupt);
    }
    switch(readerTypeCategory) {
        case BOOLEAN:
            return new BooleanTreeReader(fileType.getId());
        case BYTE:
            return new ByteTreeReader(fileType.getId());
        case DOUBLE:
            return new DoubleTreeReader(fileType.getId());
        case FLOAT:
            return new FloatTreeReader(fileType.getId());
        case SHORT:
            return new ShortTreeReader(fileType.getId());
        case INT:
            return new IntTreeReader(fileType.getId());
        case LONG:
            return new LongTreeReader(fileType.getId(), skipCorrupt);
        case STRING:
            return new StringTreeReader(fileType.getId());
        case CHAR:
            return new CharTreeReader(fileType.getId(), readerType.getMaxLength());
        case VARCHAR:
            return new VarcharTreeReader(fileType.getId(), readerType.getMaxLength());
        case BINARY:
            return new BinaryTreeReader(fileType.getId());
        case TIMESTAMP:
            return new TimestampTreeReader(fileType.getId(), skipCorrupt);
        case DATE:
            return new DateTreeReader(fileType.getId());
        case DECIMAL:
            return new DecimalTreeReader(fileType.getId(), readerType.getPrecision(), readerType.getScale());
        case STRUCT:
            return new StructTreeReader(fileType.getId(), readerType, evolution, included, skipCorrupt);
        case LIST:
            return new ListTreeReader(fileType.getId(), readerType, evolution, included, skipCorrupt);
        case MAP:
            return new MapTreeReader(fileType.getId(), readerType, evolution, included, skipCorrupt);
        case UNION:
            return new UnionTreeReader(fileType.getId(), readerType, evolution, included, skipCorrupt);
        default:
            throw new IllegalArgumentException("Unsupported type " + readerTypeCategory);
    }
}

[Buggy Hunk]
if (!fileType.equals(readerType) &&

[Patch]
if (!fileType.getCategory().equals(readerTypeCategory) &&