private void associateWithBuildRun( BuildRun buildRun, Collection<ChangeSet> changeSets, Set<PrimaryWorkitem> workitems) { for (ChangeSet changeSet : changeSets) { buildRun.getChangeSets().add(changeSet); for (PrimaryWorkitem workitem : workitems) { if (workitem.isClosed()) { logger.println(MessagesRes.workitemClosedCannotAttachData(workitem.getDisplayID())); continue; } final Collection<BuildRun> completedIn = workitem.getCompletedIn(); final List<BuildRun> toRemove = new ArrayList<BuildRun>(completedIn.size()); changeSet.getPrimaryWorkitems().add(workitem); for (BuildRun otherRun : completedIn) { if (otherRun.getBuildProject().equals(buildRun.getBuildProject())) { toRemove.add(otherRun); } } for (BuildRun buildRunDel : toRemove) { completedIn.remove(buildRunDel); } completedIn.add(buildRun); } } }