code: public void setFsDatasets(FileSystem originFs, FileSystem targetFs) {
      /*
       * By default, the raw Gobblin dataset for CopyableFile lineage is its parent folder
       * if itself is not a folder
       */
      boolean isDir = origin.isDirectory();
  
      Path fullSourcePath = Path.getPathWithoutSchemeAndAuthority(origin.getPath());
      String sourceDatasetName = isDir ? fullSourcePath.toString() : fullSourcePath.getParent().toString();
      DatasetDescriptor sourceDataset = new DatasetDescriptor(originFs.getScheme(), sourceDatasetName);
      sourceDataset.addMetadata(DatasetConstants.FS_URI, originFs.getUri().toString());
      sourceData = sourceDataset;
  
      Path fullDestinationPath = Path.getPathWithoutSchemeAndAuthority(destination);
      String destinationDatasetName = isDir ? fullDestinationPath.toString() : fullDestinationPath.getParent().toString();
      DatasetDescriptor destinationDataset = new DatasetDescriptor(targetFs.getScheme(), destinationDatasetName);
      destinationDataset.addMetadata(DatasetConstants.FS_URI, targetFs.getUri().toString());
      destinationData = destinationDataset;
    }
docs: Set file system based source and destination dataset for this {@link CopyableFile}
  
  @param originFs {@link FileSystem} where this {@link CopyableFile} origins
  @param targetFs {@link FileSystem} where this {@link CopyableFile} is copied to