/// <summary>
		///   Constructs a new ComponentModel by invoking
		///   the registered contributors.
		/// </summary>
		/// <param name = "name"></param>
		/// <param name = "services"></param>
		/// <param name = "classType"></param>
		/// <param name = "extendedProperties"></param>
		/// <returns></returns>
		public ComponentModel BuildModel(ComponentName name, Type[] services, Type classType, IDictionary extendedProperties)
		{
			var model = new ComponentModel(name, services, classType, extendedProperties);
			contributors.ForEach(c => c.ProcessModel(kernel, model));

			return model;
		}
		/// <summary>
		///   Initializes a new instance of the <see cref = "HandlerException" /> class.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <param name = "name"></param>
		/// <param name = "innerException"></param>
		public GenericHandlerTypeMismatchException(string message, ComponentName name, Exception innerException)
			: base(message, name, innerException)
		{
		}
		/// <summary>
		///   Initializes a new instance of the <see cref = "HandlerException" /> class.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <param name = "name"></param>
		/// <param name = "innerException"></param>
		public HandlerException(string message, ComponentName name, Exception innerException)
			: base(message, innerException)
		{
			ExceptionHelper.SetUp(this);
			Name = name;
		}
		/// <summary>
		///   Initializes a new instance of the <see cref = "HandlerException" /> class.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <param name = "name"></param>
		/// <param name = "innerException"></param>
		public HandlerException(string message, ComponentName name, Exception innerException)
			: base(message, innerException)
		{
			Name = name;
		}
		/// <summary>
		///   Initializes a new instance of the <see cref = "HandlerException" /> class.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <param name = "name"></param>
		public HandlerException(string message, ComponentName name) : base(message)
		{
			Name = name;
		}
		public DefaultsDescriptor(ComponentName name, Type implementation)
		{
			this.name = name;
			this.implementation = implementation;
		}
		/// <summary>
		///   Initializes a new instance of the <see cref = "HandlerException" /> class.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <param name = "name"></param>
		/// <param name = "innerException"></param>
		public HandlerException(string message, ComponentName name, Exception innerException)
			: base(message, innerException)
		{
			HelpLink = Constants.ExceptionHelpLink;
			Name = name;
		}