FindFile returns $Failed if it cannot find a file with the specified name.
In FindFile[name], the name can be specified with / path separators (or \\ on Windows). It can also be specified with ` context separators.
For names of the form "name`", FindFile searches for files "name.mx" and "name.m".
If FindFile resolves to a directory, it will search for a file named Kernel/init.m or init.m in that directory.
If FindFile resolves to an object of the form "name.mx" which corresponds to a directory, it will search for a file with a name like name.mx/$SystemID/name.mx.