docs: private void performCopytoTask(final Map<FileInfo, FileInfo> copyToMap) {
          for (final Map.Entry<FileInfo, FileInfo> entry : copyToMap.entrySet()) {
              final URI copytoTarget = entry.getKey().uri;
              final URI copytoSource = entry.getValue().uri;
              final URI srcFile = job.tempDirURI.resolve(copytoSource);
              final URI targetFile = job.tempDirURI.resolve(copytoTarget);
  
              if (new File(targetFile).exists()) {
                  logger.warn(MessageUtils.getMessage("DOTX064W", copytoTarget.getPath()).toString());
              } else {
                  final FileInfo input = job.getFileInfo(fi -> fi.isInput).iterator().next();
                  final URI inputMapInTemp = job.tempDirURI.resolve(input.uri);
                  copyFileWithPIReplaced(srcFile, targetFile, copytoTarget, inputMapInTemp);
                  // add new file info into job
                  final FileInfo src = job.getFileInfo(copytoSource);
                  assert src != null;
                  final FileInfo dst = job.getFileInfo(copytoTarget);
                  assert dst != null;
                  final URI dstTemp = tempFileNameScheme.generateTempFileName(dst.result);
                  final FileInfo res = new FileInfo.Builder(src)
                          .result(dst.result)
                          .uri(dstTemp)
                          .build();
                  job.add(res);
              }
          }
      }