code: @Deprecated
    public static Builder builder(FileSystem originFs, FileStatus origin, Path datasetRoot,
        CopyConfiguration copyConfiguration) {
  
      Path relativePath = PathUtils.relativizePath(origin.getPath(), datasetRoot);
  
      Path targetRoot = new Path(copyConfiguration.getPublishDir(), datasetRoot.getName());
      Path targetPath = new Path(targetRoot, relativePath);
  
      return _hiddenBuilder().originFS(originFs).origin(origin).destination(targetPath)
          .preserve(copyConfiguration.getPreserve()).configuration(copyConfiguration);
    }
docs: Get a {@link CopyableFile.Builder}.
  
  @param originFs {@link FileSystem} where original file exists.
  @param origin {@link FileStatus} of the original file.
  @param datasetRoot Value of {@link CopyableDataset#datasetRoot} of the dataset creating this {@link CopyableFile}.
  @param copyConfiguration {@link CopyConfiguration} for the copy job.
  @return a {@link CopyableFile.Builder}.
  @deprecated use {@link #fromOriginAndDestination}. This method was changed to remove reliance on dataset root
  which is not standard of all datasets. The old functionality on inferring destinations cannot be
  achieved without dataset root and common dataset root, so this is an approximation. Copyable datasets
  should compute file destinations themselves.