private static @NotNull List<ShelvedBinaryFile> copyBinaryFiles(@NotNull ShelvedChangeList list, @NotNull Path targetDirectory)
    throws IOException {
    Files.createDirectories(targetDirectory);
    List<ShelvedBinaryFile> copied = new ArrayList<>();
    for (ShelvedBinaryFile file : list.getBinaryFiles()) {
      if (file.SHELVED_PATH != null) {
        Path shelvedFile = Paths.get(file.SHELVED_PATH);
        if (!StringUtil.isEmptyOrSpaces(file.AFTER_PATH) && Files.exists(shelvedFile)) {
          Path newShelvedFile = targetDirectory.resolve(PathUtil.getFileName(file.AFTER_PATH));
          try {
            Files.copy(shelvedFile, newShelvedFile);
            copied.add(new ShelvedBinaryFile(file.BEFORE_PATH, file.AFTER_PATH,
                                             FileUtil.toSystemIndependentName(newShelvedFile.toString())));
          }
          catch (IOException e) {
            LOG.warn("Can't copy binary file: " + list.getPath(), e);
          }
        }
      }
    }
    return copied;
  }
private static @NotNull List<ShelvedBinaryFile> copyBinaryFiles(@NotNull ShelvedChangeList list, @NotNull Path targetDirectory)