void (@NotNull Project project, @NotNull ThrowableComputable<? extends Map<String, Map<String, CharSequence>>, PatchSyntaxException> additionalInfo, @Nullable CommitContext commitContext) { List<PatchEP> extensions = PatchEP.EP_NAME.getExtensionList(); if (extensions.isEmpty()) { return; } try { Map<String, Map<String, CharSequence>> additionalInfoMap = additionalInfo.compute(); for (Map.Entry<String, Map<String, CharSequence>> entry : additionalInfoMap.entrySet()) { for (PatchEP extension : extensions) { CharSequence charSequence = entry.getValue().get(extension.getName()); if (charSequence != null) { extension.consumeContentBeforePatchApplied(project, entry.getKey(), charSequence, commitContext); } } } } catch (PatchSyntaxException e) { VcsBalloonProblemNotifier .showOverChangesView(project, VcsBundle.message("patch.apply.can.not.apply.additional.info.error", e.getMessage()), MessageType.ERROR); } }