The latter two names will be normalized into "/a" and "/a/b".) This abstracts away from the system's notion of what a filename looks like, whether it's "C:\windows\foo.txt" or "/usr/include/linux/stddef.h".
FileRef doesn't have any support for special filenames like "." or "..", but some implementations of {@link FileSystem#parseFilename(String)}will resolve these when parsing.
Note that there is no such thing as a relative {@code FileRef}; {@code FileRef}s are always absolute. The {@link FileRef#join(String)} method maybe used to create {@code FileRef}s relative to existing {@code FileRef}s.
You can convert between the types of filenames the user is used to seeing, "filenames", and {@code FileRef} objects using {@link FileSystem#parseFilename(String)} and {@link FileRef#toFilename()}.