I'm not crazy about `NormalizePath` returning a ToUpper string. The standard pattern is to do a case insensitive compare instead. I would just kill `NormalizePath` altogether and just do the compare here (with the GetFullPath).