/// <summary>
		/// Adds an array of change summaries to the collection.
		/// </summary>
		/// <param name="summaries">The change summaries to add to the collection.</param>
		public void AddRange(AutoUpdateChangeSummary[] summaries)
		{
			if (summaries == null)
				throw new ArgumentNullException("summaries");

			foreach(AutoUpdateChangeSummary summary in summaries)
				this.Add(summary);
		}	
		/// <summary>
		/// Adds a change summary to the collection.
		/// </summary>
		/// <param name="summary">The collection to add.</param>
		public void Add(AutoUpdateChangeSummary summary)
		{
			if (summary == null)
				throw new ArgumentNullException("summary");

			if (this.Contains(summary))
				throw new AutoUpdateChangeSummaryAlreadyExistsException(summary);

			lock (base.SyncRoot)
			{
				base.InnerList.Add(summary);
			}
		}
        /// <summary>
        /// Removes the specified change summary from the collection.
        /// </summary>
        /// <param name="summary">The change summary to remove.</param>
        public void Remove(AutoUpdateChangeSummary summary)
        {
            if (summary == null)
            {
                throw new ArgumentNullException("summary");
            }

            if (this.Contains(summary))
            {
                lock (base.SyncRoot)
                {
                    base.InnerList.Remove(summary);
                }
            }
        }
        /// <summary>
        /// Adds a change summary to the collection.
        /// </summary>
        /// <param name="summary">The collection to add.</param>
        public void Add(AutoUpdateChangeSummary summary)
        {
            if (summary == null)
            {
                throw new ArgumentNullException("summary");
            }

            if (this.Contains(summary))
            {
                throw new AutoUpdateChangeSummaryAlreadyExistsException(summary);
            }

            lock (base.SyncRoot)
            {
                base.InnerList.Add(summary);
            }
        }
        /// <summary>
        /// Determines if the specified change summary exists in the collection.
        /// </summary>
        /// <param name="summary">The change summary to check for.</param>
        /// <returns></returns>
        public bool Contains(AutoUpdateChangeSummary summary)
        {
            if (summary == null)
            {
                throw new ArgumentNullException("summary");
            }

            lock (base.SyncRoot)
            {
                foreach (AutoUpdateChangeSummary existingSummary in base.InnerList)
                {
                    if (string.Compare(existingSummary.Id, summary.Id, true) == 0)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
		/// <summary>
		/// Removes the specified change summary from the collection.
		/// </summary>
		/// <param name="summary">The change summary to remove.</param>
		public void Remove(AutoUpdateChangeSummary summary)
		{
			if (summary == null)
				throw new ArgumentNullException("summary");

			if (this.Contains(summary))
			{
				lock (base.SyncRoot)
				{
					base.InnerList.Remove(summary);
				}
			}
		}
		/// <summary>
		/// Determines if the specified change summary exists in the collection.
		/// </summary>
		/// <param name="summary">The change summary to check for.</param>
		/// <returns></returns>
		public bool Contains(AutoUpdateChangeSummary summary)
		{
			if (summary == null)
				throw new ArgumentNullException("summary");

			lock (base.SyncRoot)
			{
				foreach (AutoUpdateChangeSummary existingSummary in base.InnerList)
					if (string.Compare(existingSummary.Id, summary.Id, true) == 0)
						return true;
			}

			return false;
		}
 /// <summary>
 /// Initializes a new instance of the X class.
 /// </summary>
 /// <param name="summary">The summary that collided.</param>
 public AutoUpdateChangeSummaryAlreadyExistsException(AutoUpdateChangeSummary summary)
     : base("A summary with the same Id already exists.")
 {
     _summary = summary;
 }
		/// <summary>
		/// Initializes a new instance of the X class.
		/// </summary>
		/// <param name="summary">The summary that collided.</param>
		public AutoUpdateChangeSummaryAlreadyExistsException(AutoUpdateChangeSummary summary) 
			: base("A summary with the same Id already exists.")
		{
			_summary = summary;
		}