/// <summary>
        /// Converts a filename to a NonLibraryFile object
        /// </summary>
        /// <param name="rootFolder">Root folder the non-library file was found in</param>
        /// <param name="filename">Full filename of the non-library file</param>
        /// <returns>NonLibraryFile object derived from the specified file name</returns>
        public static NonLibraryFile FromFilename(RootFolder rootFolder, IntelligentString filename)
        {
            IntelligentString rootFolderPath = AppendTrailingSlash(rootFolder.Path);

            filename = filename.Substring(rootFolderPath.Length);

            IntelligentString[] subFolders = filename.Split("\\");
            IntelligentString   subFolder  = IntelligentString.Empty;

            for (int i = 0; i < subFolders.Length; i++)
            {
                if (i == (subFolders.Length - 1))
                {
                    filename = subFolders[i];
                }
                else
                {
                    subFolder += subFolders[i] + "\\";
                }
            }

            return(new NonLibraryFile(rootFolder, subFolder, filename));
        }