Description
A FileStatus may represent a file, directory or symlink. This is indicated using the isdir and symlink members, let's add an assert that validates the contstraints on these members (eg a directory may not have the symlink member set). We could also verify this by having more than one constructor but we don't statically know the type of the file status when we create it.