Program: 96848
Project: 96848
Buggy source:
@Override public void copyDispoSet(DispoProgram program,DispoSet destination,DispoProgram sourceProgram,DispoSet sourceSet,CopySetParams params){
  List<DispoItem> sourceItems=getDispoItems(sourceProgram,sourceSet.getGuid());
  Map<String,Set<DispoItemData>> namesToDestItems=new HashMap<>();
  for (  DispoItem itemArt : getDispoItems(program,destination.getGuid())) {
    DispoItemData itemData=DispoUtil.itemArtToItemData(itemArt,true,true);
    String name=itemData.getName();
    Set<DispoItemData> itemsWithSameName=namesToDestItems.get(name);
    if (itemsWithSameName == null) {
      Set<DispoItemData> set=new HashSet<>();
      set.add(itemData);
      namesToDestItems.put(name,set);
    }
 else {
      itemsWithSameName.add(itemData);
      namesToDestItems.put(name,itemsWithSameName);
    }
  }
  Map<String,DispoItem> namesToToEditItems=new HashMap<>();
  OperationReport report=new OperationReport();
  DispoSetCopier copier=new DispoSetCopier(dispoConnector);
  if (!params.getAnnotationParam().isNone()) {
    List<DispoItem> copyResults=copier.copyAllDispositions(namesToDestItems,sourceItems,true,report);
    for (    DispoItem item : copyResults) {
      namesToToEditItems.put(item.getName(),item);
    }
  }
  copier.copyCategories(namesToDestItems,sourceItems,namesToToEditItems,params.getCategoryParam());
  copier.copyAssignee(namesToDestItems,sourceItems,namesToToEditItems,params.getAssigneeParam());
  copier.copyNotes(namesToDestItems,sourceItems,namesToToEditItems,params.getNoteParam());
  String operation=String.format("String_Node_Str",sourceProgram.getUuid(),sourceSet.getGuid());
  if (!namesToToEditItems.isEmpty() && !report.getStatus().isFailed()) {
    editDispoItems(program,namesToToEditItems.values(),false,operation);
  }
  storageProvider.get().updateOperationSummary(getQuery().findUser(),program,destination,report);
}

Fixed version (ground truth):
@Override public void copyDispoSet(DispoProgram program,DispoSet destination,DispoProgram sourceProgram,DispoSet sourceSet,CopySetParams params){
  List<DispoItem> sourceItems=getDispoItems(sourceProgram,sourceSet.getGuid());
  Map<String,Set<DispoItemData>> namesToDestItems=new HashMap<>();
  for (  DispoItem itemArt : getDispoItems(program,destination.getGuid())) {
    DispoItemData itemData=DispoUtil.itemArtToItemData(itemArt,true,true);
    String name=itemData.getName();
    Set<DispoItemData> itemsWithSameName=namesToDestItems.get(name);
    if (itemsWithSameName == null) {
      Set<DispoItemData> set=new HashSet<>();
      set.add(itemData);
      namesToDestItems.put(name,set);
    }
 else {
      itemsWithSameName.add(itemData);
      namesToDestItems.put(name,itemsWithSameName);
    }
  }
  Map<String,DispoItem> namesToToEditItems=new HashMap<>();
  OperationReport report=new OperationReport();
  DispoSetCopier copier=new DispoSetCopier(dispoConnector);
  if (!params.getAnnotationParam().isNone()) {
    List<DispoItem> copyResults=copier.copyAllDispositions(namesToDestItems,sourceItems,true,report);
    for (    DispoItem item : copyResults) {
      namesToToEditItems.put(item.getName(),item);
    }
  }
  copier.copyCategories(namesToDestItems,sourceItems,namesToToEditItems,params.getCategoryParam());
  copier.copyAssignee(namesToDestItems,sourceItems,namesToToEditItems,params.getAssigneeParam());
  copier.copyNotes(namesToDestItems,sourceItems,namesToToEditItems,params.getNoteParam());
  String operation=String.format("String_Node_Str",sourceProgram.getUuid(),sourceSet.getGuid());
  if (!namesToToEditItems.isEmpty() && !report.getStatus().isFailed()) {
    editDispoItems(program,namesToToEditItems.values(),false,operation);
    storageProvider.get().updateOperationSummary(getQuery().findUser(),program,destination,report);
  }
}