[Demonstration 1]

[Buggy Method]
public List<TaskDto> collapseDuplicatesByNameAndAggregateMemoryUsed(List<TaskDto> taskDtoList) {
    Assert.notEmpty(taskDtoList, "taskDtoList is empty");
    List<TaskDto> duplicates = newArrayList();
    taskDtoList.sort(new NameAscendingComparator());
    TaskDto prev = taskDtoList.get(0);
    int duplicatesIndex = 0;
    duplicates.add(duplicatesIndex, prev);
    long totalMemory = prev.getMemory();
    for (int i = 1; i < taskDtoList.size(); i++) {
        TaskDto current = taskDtoList.get(i);
        if (prev.getName().equalsIgnoreCase(current.getName())) {
            totalMemory += current.getMemory();
            duplicates.get(duplicatesIndex).setMemory(totalMemory);
        } else {
            prev = current;
            totalMemory = current.getMemory();
            duplicates.add(++duplicatesIndex, current);
        }
    }
    return duplicates;
}

[Buggy Hunk]
TaskDto current = taskDtoList.get(i);

[Patch]
TaskDto current =  new TaskDto(taskDtoList.get(i));

[Demonstration 2]

[Buggy Method]
@Override
public void addAll(Collection<MetadataLogEntry> logEntries) throws StorageException {
    HopsSession session = connector.obtainSession();
    ArrayList<MetadataLogEntryDto> added = new ArrayList<MetadataLogEntryDto>(logEntries.size());
    for (MetadataLogEntry logEntry : logEntries) {
        added.add(createPersistable(logEntry));
    }
    session.makePersistentAll(added);
    session.release(added);
}

[Buggy Hunk]
session.makePersistentAll(added);

[Patch]
session.savePersistentAll(added);