@RequiresEdt
  private void runExecutor(ApplyPatchExecutor<AbstractFilePatchInProgress<?>> executor) {
    Collection<AbstractFilePatchInProgress<?>> included = getIncluded();
    if (included.isEmpty()) {
      return;
    }
    MultiMap<VirtualFile, AbstractFilePatchInProgress<?>> patchGroups = new MultiMap<>();
    for (AbstractFilePatchInProgress<?> patchInProgress : included) {
      patchGroups.putValue(patchInProgress.getBase(), patchInProgress);
    }
    LocalChangeList targetChangelist = getSelectedChangeList();
    FilePresentationModel presentation = myRecentPathFileChange.get();
    VirtualFile vf = presentation != null ? presentation.getVf() : null;
    executor.apply(getOriginalRemaining(), patchGroups, targetChangelist, vf == null ? null : vf.getName(),
                   myReader == null ? null : myReader.getAdditionalInfo(ApplyPatchDefaultExecutor.pathsFromGroups(patchGroups)));
  }
@RequiresEdt
  private void runExecutor(ApplyPatchExecutor<AbstractFilePatchInProgress<?>> executor)