private Runnable createAdditionRunnable(final Map<VirtualFile, File> copyFromMap,
                                          final Collection<? extends VirtualFile> filesToProcess,
                                          final List<? super VcsException> exceptions) {
    return () -> {
      for (VirtualFile file : filesToProcess) {
        final File ioFile = virtualToIoFile(file);
        try {
          final File copyFrom = copyFromMap.get(file);
          if (copyFrom != null) {
            try {
              new ActionWithTempFile(ioFile) {
                @Override
                protected void executeInternal() throws VcsException {
                  // not recursive
                  new RepeatSvnActionThroughBusy() {
                    @Override
                    protected void executeImpl() throws VcsException {
                      myVcs.getFactory(copyFrom).createCopyMoveClient().copy(copyFrom, ioFile, true, false);
                    }
                  }.execute();
                }
              }.execute();
            }
            catch (VcsException e) {
              exceptions.add(e);
            }
          }
          else {
            new RepeatSvnActionThroughBusy() {
              @Override
              protected void executeImpl() throws VcsException {
                myVcs.getFactory(ioFile).createAddClient().add(ioFile, null, false, false, true, null);
              }
            }.execute();
          }
          VcsDirtyScopeManager.getInstance(myVcs.getProject()).fileDirty(file);
        }
        catch (VcsException e) {
          exceptions.add(e);
        }
      }
    };
  }
private Runnable createAdditionRunnable(final Map<VirtualFile, File> copyFromMap,
                                          final Collection<? extends VirtualFile> filesToProcess,
                                          final List<? super VcsException> exceptions)