List<DiffRequest> (@Nullable Project project, @NotNull List<? extends DiffRequestProducer> producers, @NotNull ProgressIndicator indicator) { List<DiffRequest> requests = new ArrayList<>(); UserDataHolderBase context = new UserDataHolderBase(); List<DiffRequestProducer> errorRequests = new ArrayList<>(); for (DiffRequestProducer producer : producers) { try { requests.add(producer.process(context, indicator)); } catch (DiffRequestProducerException e) { LOG.warn(e); errorRequests.add(producer); } } if (!errorRequests.isEmpty()) { HtmlBuilder message = new HtmlBuilder() .appendWithSeparators(HtmlChunk.br(), ContainerUtil.map(errorRequests, producer -> HtmlChunk.text(producer.getName()))); new Notification("Diff Changes Loading Error", DiffBundle.message("can.t.load.some.changes"), message.toString(), NotificationType.ERROR) .setDisplayId(DiffNotificationIdsHolder.EXTERNAL_CANT_LOAD_CHANGES) .notify(project); } return requests; }