@RequiresEdt
  private @Nullable ShelvedChangeList saveRemainingAndRecycleOthers(final @NotNull ShelvedChangeList changeList,
                                                                    final List<? extends FilePatch> remainingPatches,
                                                                    final List<ShelvedBinaryFile> remainingBinaries,
                                                                    CommitContext commitContext,
                                                                    boolean delete) {

    try {
      ShelvedChangeList listCopy = createChangelistCopyWithChanges(changeList, generateUniqueSchemePatchDir(changeList.getDescription(), true));
      listCopy.updateDate();
      //changes should be loaded
      saveRemainingChangesInList(changeList, remainingPatches, remainingBinaries, commitContext);

      removeFromListWithChanges(listCopy, Objects.requireNonNull(changeList.getChanges()), changeList.getBinaryFiles(), commitContext);
      if (delete) {
        markChangeListAsDeleted(listCopy);
      }
      else {
        recycleChangeList(listCopy);
      }
      saveListAsScheme(listCopy);
      return listCopy;
    }
    catch (IOException e) {
      // do not delete if cannot recycle
      return null;
    }
  }
@RequiresEdt
  private @Nullable ShelvedChangeList saveRemainingAndRecycleOthers(final @NotNull ShelvedChangeList changeList,
                                                                    final List<? extends FilePatch> remainingPatches,
                                                                    final List<ShelvedBinaryFile> remainingBinaries,
                                                                    CommitContext commitContext,
                                                                    boolean delete)