public static Path ShallowCopy(this Path sourcePath, string pattern, Path targetPath)
 {
     sourcePath
     .GetFiles(pattern, false /*recursive*/)
     .ForEach(file => FileCopy(sourcePath, targetPath, file));
     return(sourcePath);
 }
 public static Path ShallowCopy(this Path sourcePath, Predicate <Path> predicatePath, Path targetPath)
 {
     sourcePath
     .GetFiles(predicatePath, false /*recursive*/)
     .ForEach(file => FileCopy(sourcePath, targetPath, file));
     return(sourcePath);
 }
 public static Path DeepCopy(this Path sourcePath, Path targetPath)
 {
     sourcePath
     .GetFiles("*", true /*recursive*/)
     .ForEach(file => FileCopy(sourcePath, targetPath, file));
     return(sourcePath);
 }