# Functions
CopyDir recursively copies a directory tree, attempting to preserve permissions.
EnsureDir tries to ensure that a directory is present at the given path.
EquivalentPaths compares the paths passed to check if they are equivalent.
HasFilepathPrefix will determine if "path" starts with "prefix" from the point of view of a filesystem.
IsCaseSensitiveFilesystem determines if the filesystem where dir exists is case sensitive or not.
IsDir determines is the path given is a directory or not.
IsNonEmptyDir determines if the path given is a non-empty directory or not.
IsRegular determines if the path given is a regular file or not.
IsSymlink determines if the given path is a symbolic link.
ReadActualFilenames is used to determine the actual file names in given directory.
RenameWithFallback attempts to rename a file or directory, but falls back to copying in the event of a cross-device link error.