/// <summary>
        /// Removes the component associated with the specified <paramref name="selector"/> from the collection
        /// specified by <paramref name="components" /> .
        /// </summary>
        /// <param name="components">The collection from which the component associated with the selector should be removed.</param>
        /// <param name="selector">The selector associated with the component to be removed.</param>
        public static void Remove(this RootComponentsCollection components, string selector)
        {
            for (var i = 0; i < components.Count; i++)
            {
                if (components[i].Selector.Equals(selector, StringComparison.Ordinal))
                {
                    components.RemoveAt(i);
                    return;
                }
            }

            throw new ArgumentException($"There is no root component with selector '{selector}'.", nameof(selector));
        }
 /// <summary>
 /// Adds the component specified by <typeparamref name="TComponent"/> to the collection specified by
 /// <paramref name="components" /> to be associated with the selector specified by <paramref name="selector"/>
 /// and to be instantiated with the parameters specified by <paramref name="parameters"/>.
 /// </summary>
 /// <typeparam name="TComponent">The <see cref="IComponent"/> to add to the collection.</typeparam>
 /// <param name="components">The collection to which the component should be added.</param>
 /// <param name="selector">The selector to which the component will be associated.</param>
 /// <param name="parameters">The optional creation parameters for the component.</param>
 public static void Add <TComponent>(this RootComponentsCollection components, string selector, IDictionary <string, object> parameters = null)
     where TComponent : IComponent
 {
     components.Add(new RootComponent(selector, typeof(TComponent), parameters));
 }