/// <summary>
        /// Writes an Xml element containing the AutoUpdateChangeSummaryList specified
        /// </summary>
        /// <param name="changeSummaries"></param>
        protected virtual void WriteChangeSummaries(AutoUpdateChangeSummaryList changeSummaries)
        {
            Debug.Assert(changeSummaries != null);

            // start the element
            _writer.WriteStartElement(changeSummaries.GetType().Name);

            foreach (AutoUpdateChangeSummary changeSummary in changeSummaries)
            {
                this.WriteChangeSummary(changeSummary);
            }

            // end the element
            _writer.WriteEndElement();
        }
        /// <summary>
        /// Writes an Xml element containing the AutoUpdateChangeSummaryList specified
        /// </summary>
        /// <param name="changeSummaries"></param>
        private void WriteChangeSummaries(AutoUpdateChangeSummaryList changeSummaries)
        {
            if (changeSummaries == null)
            {
                throw new ArgumentNullException("changeSummaries");
            }

            // start the element
            _writer.WriteStartElement(changeSummaries.GetType().Name);

            foreach (AutoUpdateChangeSummary changeSummary in changeSummaries)
            {
                this.WriteChangeSummary(changeSummary);
            }

            // end the element
            _writer.WriteEndElement();
        }
        protected virtual void ReadChangeSummaries(XPathNavigator navigator, out AutoUpdateChangeSummaryList changeSummaryList)
        {
            changeSummaryList = new AutoUpdateChangeSummaryList();

            // move inward to the first child
            if (navigator.MoveToFirstChild())
            {
                do
                {
                    switch (navigator.Name)
                    {
                    case @"AutoUpdateChangeSummary":
                    {
                        AutoUpdateChangeSummary changeSummary;
                        this.ReadChangeSummary(navigator, out changeSummary);
                        changeSummaryList.Add(changeSummary);
                        navigator.MoveToParent();
                        break;
                    }
                    }
                    ;
                }while(navigator.MoveToNext());
            }
        }
		/// <summary>
		/// Writes an Xml element containing the AutoUpdateChangeSummaryList specified
		/// </summary>
		/// <param name="changeSummaries"></param>
		private void WriteChangeSummaries(AutoUpdateChangeSummaryList changeSummaries)
		{
			if (changeSummaries == null)
				throw new ArgumentNullException("changeSummaries");
	
			// start the element
			_writer.WriteStartElement(changeSummaries.GetType().Name);

			foreach(AutoUpdateChangeSummary changeSummary in changeSummaries)
				this.WriteChangeSummary(changeSummary);

			// end the element
			_writer.WriteEndElement();
		}
		protected virtual void ReadChangeSummaries(XPathNavigator navigator, out AutoUpdateChangeSummaryList changeSummaryList)		
		{
			changeSummaryList = new AutoUpdateChangeSummaryList();

			// move inward to the first child
			if (navigator.MoveToFirstChild())
			{
				do
				{
					switch(navigator.Name)
					{
						case @"AutoUpdateChangeSummary":	
						{							
							AutoUpdateChangeSummary changeSummary;
							this.ReadChangeSummary(navigator, out changeSummary);
							changeSummaryList.Add(changeSummary);
							navigator.MoveToParent();
							break;
						}
					};

				}
				while(navigator.MoveToNext());
			}	
		}