public static IRelativePath Combine(this RelativeDirectoryPath basePath, IRelativePath path)
 {
     return(path == null
                         ? basePath
                         : path.MatchWith(
                (RelativeFilePath file) => (IRelativePath)basePath.Combine(file),
                (RelativeDirectoryPath dir) => (IRelativePath)basePath.Combine(dir)));
 }
 public static RelativeDirectoryPath Combine(this RelativeDirectoryPath basePath, RelativeDirectoryPath relativePath)
 {
     return(relativePath == null ? basePath : basePath.Combine(relativePath.BasePath).Combine(relativePath.Name));
 }
 public static RelativeFilePath Combine(this RelativeDirectoryPath basePath, RelativeFilePath path)
 {
     return(basePath.Combine(path.BasePath).Combine(path.Name));
 }