/// <summary>
        /// Loads all <see cref="HomeEditorRegistration"/>s and gets a collection of supported skins.
        /// </summary>
        /// <returns>A collection of supported skin names.</returns>
        protected HashSet <string> GetSupportedSkins()
        {
            HashSet <string> registrations = new HashSet <string>();
            IPluginManager   pluginManager = ServiceRegistration.Get <IPluginManager>();

            foreach (PluginItemMetadata itemMetadata in pluginManager.GetAllPluginItemMetadata(HomeEditorRegistrationBuilder.HOME_EDITOR_PROVIDER_PATH))
            {
                HomeEditorRegistration registration = GetSkinRegistration(itemMetadata, pluginManager);
                if (registration != null)
                {
                    registrations.Add(registration.SkinName);
                }
            }
            return(registrations);
        }
        /// <summary>
        /// Loads a <see cref="HomeEditorRegistration"/> for the specified <paramref name="itemMetadata"/>.
        /// </summary>
        /// <param name="itemMetadata"></param>
        /// <param name="pluginManager"></param>
        /// <returns></returns>
        protected HomeEditorRegistration GetSkinRegistration(PluginItemMetadata itemMetadata, IPluginManager pluginManager)
        {
            try
            {
                HomeEditorRegistration providerRegistration = pluginManager.RequestPluginItem <HomeEditorRegistration>(
                    HomeEditorRegistrationBuilder.HOME_EDITOR_PROVIDER_PATH, itemMetadata.Id, _pluginItemStateTracker);

                if (providerRegistration != null)
                {
                    ServiceRegistration.Get <ILogger>().Info("Successfully added Home Editor skin registration for skin '{0}' (Id '{1}')",
                                                             itemMetadata.Attributes["SkinName"], itemMetadata.Id);
                    return(providerRegistration);
                }

                ServiceRegistration.Get <ILogger>().Warn("Could not instantiate Home Editor skin registration with id '{0}'", itemMetadata.Id);
            }
            catch (PluginInvalidStateException e)
            {
                ServiceRegistration.Get <ILogger>().Warn("Cannot add Home Editor skin registration with id '{0}'", e, itemMetadata.Id);
            }
            return(null);
        }