docs: private void copyFileWithPIReplaced(final URI src, final URI target, final URI copytoTargetFilename, final URI inputMapInTemp) {
          assert src.isAbsolute();
          assert target.isAbsolute();
          assert !copytoTargetFilename.isAbsolute();
          assert inputMapInTemp.isAbsolute();
          final File workdir = new File(target).getParentFile();
          if (!workdir.exists() && !workdir.mkdirs()) {
              logger.error("Failed to create copy-to target directory " + workdir.toURI());
              return;
          }
          final File path2project = getPathtoProject(copytoTargetFilename, target, inputMapInTemp, job);
          final File path2rootmap = getPathtoRootmap(target, inputMapInTemp);
          XMLFilter filter = new CopyToFilter(workdir, path2project, path2rootmap, src, target);
  
          logger.info("Processing " + src + " to " + target);
          try {
              xmlUtils.transform(src, target, Collections.singletonList(filter));
          } catch (final DITAOTException e) {
              logger.error("Failed to write copy-to file: " + e.getMessage(), e);
          }
      }