public static List<ImplementationConversionCollection> LoadImplementationConversions()
        {
            var implementationConversions = new List<ImplementationConversionCollection>();

            if (File.Exists(implementationsFilePath))
            {
                try
                {
                    XmlDocument implDoc = new XmlDocument();
                    implDoc.Load(implementationsFilePath);

                    XmlNodeList sourceNodes = implDoc.SelectNodes("/implementations/source");
                    foreach (XmlNode sourceNode in sourceNodes)
                    {
                        string collection = sourceNode.Attributes["definitions"].InnerText;

                        ImplementationConversionCollection newCollection = new ImplementationConversionCollection();
                        newCollection.ImplementationSet = collection;

                        foreach (XmlNode childNode in sourceNode.ChildNodes)
                        {
                            if (childNode.Name != "add")
                                continue;

                            string item = childNode.Attributes["item"].InnerText;
                            Guid guid = Guid.Empty;
                            XmlNode guidNode = childNode.SelectSingleNode("guid");
                            if (guidNode != null)
                                guid = new Guid(guidNode.InnerText);
                            string configuration = null;
                            XmlNode configurationNode = childNode.SelectSingleNode("configuration");
                            if (configurationNode != null)
                                configuration = configurationNode.InnerText;

                            ComponentDescription description = ComponentHelper.FindDescription(guid);
                            if (description != null)
                            {
                                ImplementationConversion newConversion = new ImplementationConversion();
                                newConversion.ImplementationName = item;
                                newConversion.ToName = description.ComponentName;
                                newConversion.ToGUID = description.Metadata.GUID;

                                ComponentConfiguration theConfiguration = null;
                                if (configuration != null)
                                {
                                    theConfiguration = description.Metadata.Configurations.FirstOrDefault(check => check.Name == configuration);
                                    if (theConfiguration != null)
                                    {
                                        newConversion.ToConfiguration = theConfiguration.Name;
                                        if (theConfiguration.Icon != null)
                                            newConversion.ToIcon = theConfiguration.Icon;
                                        else
                                            newConversion.ToIcon = description.Metadata.Icon;
                                    }
                                    else if (description.Metadata.Icon != null)
                                        newConversion.ToIcon = description.Metadata.Icon;
                                }
                                else if (description.Metadata.Icon != null)
                                    newConversion.ToIcon = description.Metadata.Icon;

                                newCollection.Items.Add(newConversion);
                                ComponentHelper.SetStandardComponent(newCollection.ImplementationSet, newConversion.ImplementationName, description, theConfiguration);
                            }
                        }

                        implementationConversions.Add(newCollection);
                    }
                }
                catch (Exception)
                {
                    // Invalid XML file
                }
            }

            return implementationConversions;
        }
        public static List <ImplementationConversionCollection> LoadImplementationConversions()
        {
            var implementationConversions = new List <ImplementationConversionCollection>();

            if (File.Exists(implementationsFilePath))
            {
                try
                {
                    XmlDocument implDoc = new XmlDocument();
                    implDoc.Load(implementationsFilePath);

                    XmlNodeList sourceNodes = implDoc.SelectNodes("/implementations/source");
                    foreach (XmlNode sourceNode in sourceNodes)
                    {
                        string collection = sourceNode.Attributes["definitions"].InnerText;

                        ImplementationConversionCollection newCollection = new ImplementationConversionCollection();
                        newCollection.ImplementationSet = collection;

                        foreach (XmlNode childNode in sourceNode.ChildNodes)
                        {
                            if (childNode.Name != "add")
                            {
                                continue;
                            }

                            string  item     = childNode.Attributes["item"].InnerText;
                            Guid    guid     = Guid.Empty;
                            XmlNode guidNode = childNode.SelectSingleNode("guid");
                            if (guidNode != null)
                            {
                                guid = new Guid(guidNode.InnerText);
                            }
                            string  configuration     = null;
                            XmlNode configurationNode = childNode.SelectSingleNode("configuration");
                            if (configurationNode != null)
                            {
                                configuration = configurationNode.InnerText;
                            }

                            ComponentDescription description = ComponentHelper.FindDescription(guid);
                            if (description != null)
                            {
                                ImplementationConversion newConversion = new ImplementationConversion();
                                newConversion.ImplementationName = item;
                                newConversion.ToName             = description.ComponentName;
                                newConversion.ToGUID             = description.Metadata.GUID;

                                ComponentConfiguration theConfiguration = null;
                                if (configuration != null)
                                {
                                    theConfiguration = description.Metadata.Configurations.FirstOrDefault(check => check.Name == configuration);
                                    if (theConfiguration != null)
                                    {
                                        newConversion.ToConfiguration = theConfiguration.Name;
                                        if (theConfiguration.Icon != null)
                                        {
                                            newConversion.ToIcon = theConfiguration.Icon;
                                        }
                                        else
                                        {
                                            newConversion.ToIcon = description.Metadata.Icon;
                                        }
                                    }
                                    else if (description.Metadata.Icon != null)
                                    {
                                        newConversion.ToIcon = description.Metadata.Icon;
                                    }
                                }
                                else if (description.Metadata.Icon != null)
                                {
                                    newConversion.ToIcon = description.Metadata.Icon;
                                }

                                newCollection.Items.Add(newConversion);
                                ComponentHelper.SetStandardComponent(newCollection.ImplementationSet, newConversion.ImplementationName, description, theConfiguration);
                            }
                        }

                        implementationConversions.Add(newCollection);
                    }
                }
                catch (Exception)
                {
                    // Invalid XML file
                }
            }

            return(implementationConversions);
        }