private Collection<IssueDto> doSave(DbSession dbSession, Iterable<DefaultIssue> issues) {
long now = system2.now();
Map<Boolean, List<DefaultIssue>> issuesNewOrUpdated = StreamSupport.stream(issues.spliterator(), true).collect(Collectors.groupingBy(DefaultIssue::isNew));
List<DefaultIssue> issuesToInsert = firstNonNull(issuesNewOrUpdated.get(true), emptyList());
List<DefaultIssue> issuesToUpdate = firstNonNull(issuesNewOrUpdated.get(false), emptyList());
Collection<IssueDto> inserted = insert(dbSession, issuesToInsert, now);
Collection<IssueDto> updated = update(issuesToUpdate, now);
doAfterSave(dbSession, Stream.concat(inserted.stream(), updated.stream())
.collect(toSet(issuesToInsert.size() + issuesToUpdate.size())));
return Stream.concat(inserted.stream(), updated.stream())
.collect(toSet(issuesToInsert.size() + issuesToUpdate.size()));
}