CustomConfigurations.Config.DetermineConfigurationPath C# (CSharp) Method

DetermineConfigurationPath() private method

Tries to find all valid configuration section / group paths that are valid for this loader.
private DetermineConfigurationPath ( string pathToConfigFile ) : IEnumerable
pathToConfigFile string
return IEnumerable
        private IEnumerable<string> DetermineConfigurationPath(string pathToConfigFile)
        {
            var configFileLocation = FindConfigFileLocation(pathToConfigFile);

            var fullApplicationName = typeof (ConfigurationSectionLoader).FullName;
            var fullApplicationAssembly = typeof(ConfigurationSectionLoader).Assembly.ToString().Substring(0, typeof(ConfigurationSectionLoader).Assembly.ToString().IndexOf(",", StringComparison.InvariantCultureIgnoreCase));
            var configLoaderRegexString = fullApplicationName + @",[\s]{0,1}" + fullApplicationAssembly;
            var configRegex = new Regex(configLoaderRegexString);

            var doc = new XPathDocument(configFileLocation);
            var nav = doc.CreateNavigator();

            var sectionIterator = nav.Select(@"configuration/configSections");
            if(sectionIterator.Count > 0)
            {
                foreach (var p in DetermineValidSectionElements(configRegex,String.Empty, sectionIterator)) yield return p;
            }

            var sectionGroupIterator = nav.Select(@"configuration/configSections/sectionGroup");
            if(sectionGroupIterator.Count > 0)
            {
                foreach (var p in DetermineValidSectionGroups(configRegex, sectionGroupIterator)) yield return p;
            }
        }