@RequiresEdt
  private @Nullable ShelvedChangeList removeChangesFromChangeList(@NotNull ShelvedChangeList list,
                                                                  @NotNull List<ShelvedChange> changes,
                                                                  @NotNull List<ShelvedBinaryFile> binaryFiles) {
    List<ShelvedBinaryFile> remainingBinaries = new ArrayList<>(list.getBinaryFiles());
    remainingBinaries.removeAll(binaryFiles);

    final CommitContext commitContext = new CommitContext();
    commitContext.putUserData(BaseRevisionTextPatchEP.ourProvideStoredBaseRevisionTextKey, true);

    final List<FilePatch> remainingPatches = new ArrayList<>();
    try {
      loadTextPatches(myProject, list, changes, remainingPatches, commitContext);
    }
    catch (IOException | PatchSyntaxException e) {
      LOG.info(e);
      VcsImplUtil.showErrorMessage(myProject, e.getMessage(),
                                   VcsBundle.message("shelve.delete.files.from.changelist.error", list.getDescription()));
      return null;
    }
    return saveRemainingPatchesIfNeeded(list, remainingPatches, remainingBinaries, commitContext, true);
  }
@RequiresEdt
  private @Nullable ShelvedChangeList removeChangesFromChangeList(@NotNull ShelvedChangeList list,
                                                                  @NotNull List<ShelvedChange> changes,
                                                                  @NotNull List<ShelvedBinaryFile> binaryFiles)