You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2005/04/05 22:24:08 UTC

svn commit: r160216 [2/2] - incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/LineItemCollection.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/LineItemCollection.cs?view=diff&r1=160215&r2=160216
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/LineItemCollection.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/LineItemCollection.cs Tue Apr  5 13:24:06 2005
@@ -4,2168 +4,60 @@
 
 namespace IBatisNet.DataMapper.Test.Domain 
 {
-	#region Interface ILineItemCollection
-
-	/// <summary>
-	/// Defines size, enumerators, and synchronization methods for strongly
-	/// typed collections of <see cref="LineItem"/> elements.
-	/// </summary>
-	/// <remarks>
-	/// <b>ILineItemCollection</b> provides an <see cref="ICollection"/>
-	/// that is strongly typed for <see cref="LineItem"/> elements.
-	/// </remarks>
-
-	public interface ILineItemCollection 
-	{
-		#region Properties
-		#region Count
-
-		/// <summary>
-		/// Gets the number of elements contained in the
-		/// <see cref="ILineItemCollection"/>.
-		/// </summary>
-		/// <value>The number of elements contained in the
-		/// <see cref="ILineItemCollection"/>.</value>
-		/// <remarks>Please refer to <see cref="ICollection.Count"/> for details.</remarks>
-
-		int Count { get; }
-
-		#endregion
-		#region IsSynchronized
-
-		/// <summary>
-		/// Gets a value indicating whether access to the
-		/// <see cref="ILineItemCollection"/> is synchronized (thread-safe).
-		/// </summary>
-		/// <value><c>true</c> if access to the <see cref="ILineItemCollection"/> is
-		/// synchronized (thread-safe); otherwise, <c>false</c>. The default is <c>false</c>.</value>
-		/// <remarks>Please refer to <see cref="ICollection.IsSynchronized"/> for details.</remarks>
-
-		bool IsSynchronized { get; }
-
-		#endregion
-		#region SyncRoot
-
-		/// <summary>
-		/// Gets an object that can be used to synchronize access
-		/// to the <see cref="ILineItemCollection"/>.
-		/// </summary>
-		/// <value>An object that can be used to synchronize access
-		/// to the <see cref="ILineItemCollection"/>.</value>
-		/// <remarks>Please refer to <see cref="ICollection.SyncRoot"/> for details.</remarks>
-
-		object SyncRoot { get; }
-
-		#endregion
-		#endregion
-		#region Methods
-		#region CopyTo
-
-		/// <summary>
-		/// Copies the entire <see cref="ILineItemCollection"/> to a one-dimensional <see cref="Array"/>
-		/// of <see cref="LineItem"/> elements, starting at the specified index of the target array.
-		/// </summary>
-		/// <param name="array">The one-dimensional <see cref="Array"/> that is the destination of the
-		/// <see cref="LineItem"/> elements copied from the <see cref="ILineItemCollection"/>.
-		/// The <b>Array</b> must have zero-based indexing.</param>
-		/// <param name="arrayIndex">The zero-based index in <paramref name="array"/>
-		/// at which copying begins.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <paramref name="arrayIndex"/> is less than zero.</exception>
-		/// <exception cref="ArgumentException"><para>
-		/// <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
-		/// </para><para>-or-</para><para>
-		/// The number of elements in the source <see cref="ILineItemCollection"/> is greater
-		/// than the available space from <paramref name="arrayIndex"/> to the end of the destination
-		/// <paramref name="array"/>.</para></exception>
-		/// <remarks>Please refer to <see cref="ICollection.CopyTo"/> for details.</remarks>
-
-		void CopyTo(LineItem[] array, int arrayIndex);
-
-		#endregion
-		#region GetEnumerator
-
-		/// <summary>
-		/// Returns an <see cref="ILineItemEnumerator"/> that can
-		/// iterate through the <see cref="ILineItemCollection"/>.
-		/// </summary>
-		/// <returns>An <see cref="ILineItemEnumerator"/>
-		/// for the entire <see cref="ILineItemCollection"/>.</returns>
-		/// <remarks>Please refer to <see cref="IEnumerable.GetEnumerator"/> for details.</remarks>
-
-		ILineItemEnumerator GetEnumerator();
-
-		#endregion
-		#endregion
-	}
-
-	#endregion
-	#region Interface ILineItemList
-
-	/// <summary>
-	/// Represents a strongly typed collection of <see cref="LineItem"/>
-	/// objects that can be individually accessed by index.
-	/// </summary>
-	/// <remarks>
-	/// <b>ILineItemList</b> provides an <see cref="IList"/>
-	/// that is strongly typed for <see cref="LineItem"/> elements.
-	/// </remarks>
-
-	public interface
-		ILineItemList: ILineItemCollection,IList 
-	{
-
-	}
-
-	#endregion
-	#region Interface ILineItemEnumerator
-
-	/// <summary>
-	/// Supports type-safe iteration over a collection that
-	/// contains <see cref="LineItem"/> elements.
-	/// </summary>
-	/// <remarks>
-	/// <b>ILineItemEnumerator</b> provides an <see cref="IEnumerator"/>
-	/// that is strongly typed for <see cref="LineItem"/> elements.
-	/// </remarks>
-
-	public interface ILineItemEnumerator 
-	{
-		#region Properties
-		#region Current
-
-		/// <summary>
-		/// Gets the current <see cref="LineItem"/> element in the collection.
-		/// </summary>
-		/// <value>The current <see cref="LineItem"/> element in the collection.</value>
-		/// <exception cref="InvalidOperationException"><para>The enumerator is positioned
-		/// before the first element of the collection or after the last element.</para>
-		/// <para>-or-</para>
-		/// <para>The collection was modified after the enumerator was created.</para></exception>
-		/// <remarks>Please refer to <see cref="IEnumerator.Current"/> for details, but note
-		/// that <b>Current</b> fails if the collection was modified since the last successful
-		/// call to <see cref="MoveNext"/> or <see cref="Reset"/>.</remarks>
-
-		LineItem Current { get; }
-
-		#endregion
-		#endregion
-		#region Methods
-		#region MoveNext
-
-		/// <summary>
-		/// Advances the enumerator to the next element of the collection.
-		/// </summary>
-		/// <returns><c>true</c> if the enumerator was successfully advanced to the next element;
-		/// <c>false</c> if the enumerator has passed the end of the collection.</returns>
-		/// <exception cref="InvalidOperationException">
-		/// The collection was modified after the enumerator was created.</exception>
-		/// <remarks>Please refer to <see cref="IEnumerator.MoveNext"/> for details.</remarks>
-
-		bool MoveNext();
-
-		#endregion
-		#region Reset
-
-		/// <summary>
-		/// Sets the enumerator to its initial position,
-		/// which is before the first element in the collection.
-		/// </summary>
-		/// <exception cref="InvalidOperationException">
-		/// The collection was modified after the enumerator was created.</exception>
-		/// <remarks>Please refer to <see cref="IEnumerator.Reset"/> for details.</remarks>
-
-		void Reset();
-
-		#endregion
-		#endregion
-	}
-
-	#endregion
-	#region Class LineItemCollection
-
-	/// <summary>
-	/// Implements a strongly typed collection of <see cref="LineItem"/> elements.
-	/// </summary>
-	/// <remarks>
-	/// <b>LineItemCollection</b> provides an <see cref="ArrayList"/>
-	/// that is strongly typed for <see cref="LineItem"/> elements.
-	/// </remarks>
-
-	[Serializable]
-	public class LineItemCollection:
-		ILineItemList, IList, ICloneable 
+	public class LineItemCollection : CollectionBase 
 	{
-		#region Private Fields
-
-		private const int _defaultCapacity = 16;
-
-		private LineItem[] _array = null;
-		private int _count = 0;
-
-		[NonSerialized]
-		private int _version = 0;
-
-		#endregion
-		#region Private Constructors
-
-		// helper type to identify private ctor
-		private enum Tag { Default }
-
-		private LineItemCollection(Tag tag) { }
-
-		#endregion
-		#region Public Constructors
-		#region LineItemCollection()
-
-		/// <overloads>
-		/// Initializes a new instance of the <see cref="LineItemCollection"/> class.
-		/// </overloads>
-		/// <summary>
-		/// Initializes a new instance of the <see cref="LineItemCollection"/> class
-		/// that is empty and has the default initial capacity.
-		/// </summary>
-		/// <remarks>Please refer to <see cref="ArrayList()"/> for details.</remarks>
-
-		public LineItemCollection() 
-		{
-			this._array = new LineItem[_defaultCapacity];
-		}
-
-		#endregion
-		#region LineItemCollection(Int32)
-
-		/// <summary>
-		/// Initializes a new instance of the <see cref="LineItemCollection"/> class
-		/// that is empty and has the specified initial capacity.
-		/// </summary>
-		/// <param name="capacity">The number of elements that the new
-		/// <see cref="LineItemCollection"/> is initially capable of storing.</param>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <paramref name="capacity"/> is less than zero.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList(Int32)"/> for details.</remarks>
-
-		public LineItemCollection(int capacity) 
-		{
-			if (capacity < 0)
-				throw new ArgumentOutOfRangeException("capacity",
-					capacity, "Argument cannot be negative.");
-
-			this._array = new LineItem[capacity];
-		}
-
-		#endregion
-		#region LineItemCollection(LineItemCollection)
-
-		/// <summary>
-		/// Initializes a new instance of the <see cref="LineItemCollection"/> class
-		/// that contains elements copied from the specified collection and
-		/// that has the same initial capacity as the number of elements copied.
-		/// </summary>
-		/// <param name="collection">The <see cref="LineItemCollection"/>
-		/// whose elements are copied to the new collection.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="collection"/> is a null reference.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList(ICollection)"/> for details.</remarks>
-
-		public LineItemCollection(LineItemCollection collection) 
-		{
-			if (collection == null)
-				throw new ArgumentNullException("collection");
-
-			this._array = new LineItem[collection.Count];
-			AddRange(collection);
-		}
-
-		#endregion
-		#region LineItemCollection(LineItem[])
+		public LineItemCollection() {}
 
-		/// <summary>
-		/// Initializes a new instance of the <see cref="LineItemCollection"/> class
-		/// that contains elements copied from the specified <see cref="LineItem"/>
-		/// array and that has the same initial capacity as the number of elements copied.
-		/// </summary>
-		/// <param name="array">An <see cref="Array"/> of <see cref="LineItem"/>
-		/// elements that are copied to the new collection.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList(ICollection)"/> for details.</remarks>
-
-		public LineItemCollection(LineItem[] array) 
+		public LineItem this[int index] 
 		{
-			if (array == null)
-				throw new ArgumentNullException("array");
-
-			this._array = new LineItem[array.Length];
-			AddRange(array);
+			get	{ return (LineItem)List[index]; }
+			set { List[index] = value; }
 		}
 
-		#endregion
-		#endregion
-		#region Protected Properties
-		#region InnerArray
-        
-		/// <summary>
-		/// Gets the list of elements contained in the <see cref="LineItemCollection"/> instance.
-		/// </summary>
-		/// <value>
-		/// A one-dimensional <see cref="Array"/> with zero-based indexing that contains all 
-		/// <see cref="LineItem"/> elements in the <see cref="LineItemCollection"/>.
-		/// </value>
-		/// <remarks>
-		/// Use <b>InnerArray</b> to access the element array of a <see cref="LineItemCollection"/>
-		/// instance that might be a read-only or synchronized wrapper. This is necessary because
-		/// the element array field of wrapper classes is always a null reference.
-		/// </remarks>
-
-		protected virtual LineItem[] InnerArray 
+		public int Add(LineItem value) 
 		{
-			get { return this._array; }
+			return List.Add(value);
 		}
 
-		#endregion
-		#endregion
-		#region Public Properties
-		#region Capacity
-
-		/// <summary>
-		/// Gets or sets the capacity of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <value>The number of elements that the
-		/// <see cref="LineItemCollection"/> can contain.</value>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <b>Capacity</b> is set to a value that is less than <see cref="Count"/>.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Capacity"/> for details.</remarks>
-
-		public virtual int Capacity 
+		public void AddRange(LineItem[] value) 
 		{
-			get { return this._array.Length; }
-			set 
+			for (int i = 0;	i < value.Length; i++) 
 			{
-				if (value == this._array.Length) return;
-
-				if (value < this._count)
-					throw new ArgumentOutOfRangeException("Capacity",
-						value, "Value cannot be less than Count.");
-
-				if (value == 0) 
-				{
-					this._array = new LineItem[_defaultCapacity];
-					return;
-				}
-
-				LineItem[] newArray = new LineItem[value];
-				Array.Copy(this._array, newArray, this._count);
-				this._array = newArray;
+				Add(value[i]);
 			}
 		}
 
-		#endregion
-		#region Count
-
-		/// <summary>
-		/// Gets the number of elements contained in the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <value>
-		/// The number of elements contained in the <see cref="LineItemCollection"/>.
-		/// </value>
-		/// <remarks>Please refer to <see cref="ArrayList.Count"/> for details.</remarks>
-
-		public virtual int Count 
-		{
-			get { return this._count; }
-		}
-
-		#endregion
-		#region IsFixedSize
-
-		/// <summary>
-		/// Gets a value indicating whether the <see cref="LineItemCollection"/> has a fixed size.
-		/// </summary>
-		/// <value><c>true</c> if the <see cref="LineItemCollection"/> has a fixed size;
-		/// otherwise, <c>false</c>. The default is <c>false</c>.</value>
-		/// <remarks>Please refer to <see cref="ArrayList.IsFixedSize"/> for details.</remarks>
-
-		public virtual bool IsFixedSize 
-		{
-			get { return false; }
-		}
-
-		#endregion
-		#region IsReadOnly
-
-		/// <summary>
-		/// Gets a value indicating whether the <see cref="LineItemCollection"/> is read-only.
-		/// </summary>
-		/// <value><c>true</c> if the <see cref="LineItemCollection"/> is read-only;
-		/// otherwise, <c>false</c>. The default is <c>false</c>.</value>
-		/// <remarks>Please refer to <see cref="ArrayList.IsReadOnly"/> for details.</remarks>
-
-		public virtual bool IsReadOnly 
-		{
-			get { return false; }
-		}
-
-		#endregion
-		#region IsSynchronized
-
-		/// <summary>
-		/// Gets a value indicating whether access to the <see cref="LineItemCollection"/>
-		/// is synchronized (thread-safe).
-		/// </summary>
-		/// <value><c>true</c> if access to the <see cref="LineItemCollection"/> is
-		/// synchronized (thread-safe); otherwise, <c>false</c>. The default is <c>false</c>.</value>
-		/// <remarks>Please refer to <see cref="ArrayList.IsSynchronized"/> for details.</remarks>
-
-		public virtual bool IsSynchronized 
-		{
-			get { return false; }
-		}
-
-		#endregion
-		#region IsUnique
-
-		/// <summary>
-		/// Gets a value indicating whether the <see cref="LineItemCollection"/> 
-		/// ensures that all elements are unique.
-		/// </summary>
-		/// <value>
-		/// <c>true</c> if the <see cref="LineItemCollection"/> ensures that all 
-		/// elements are unique; otherwise, <c>false</c>. The default is <c>false</c>.
-		/// </value>
-		/// <remarks>
-		/// <b>IsUnique</b> returns <c>true</c> exactly if the <see cref="LineItemCollection"/>
-		/// is exposed through a <see cref="Unique"/> wrapper. 
-		/// Please refer to <see cref="Unique"/> for details.
-		/// </remarks>
-
-		public virtual bool IsUnique 
-		{
-			get { return false; }
-		}
-
-		#endregion
-		#region Item: LineItem
-
-		/// <summary>
-		/// Gets or sets the <see cref="LineItem"/> element at the specified index.
-		/// </summary>
-		/// <param name="index">The zero-based index of the
-		/// <see cref="LineItem"/> element to get or set.</param>
-		/// <value>
-		/// The <see cref="LineItem"/> element at the specified <paramref name="index"/>.
-		/// </value>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="index"/> is equal to or greater than <see cref="Count"/>.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException"><para>
-		/// The property is set and the <see cref="LineItemCollection"/> is read-only.
-		/// </para><para>-or-</para><para>
-		/// The property is set, the <b>LineItemCollection</b> already contains the
-		/// specified element at a different index, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.this"/> for details.</remarks>
-
-		public virtual LineItem this[int index] 
+		public void AddRange(LineItemCollection value) 
 		{
-			get 
-			{
-				ValidateIndex(index);
-				return this._array[index];
-			}
-			set 
+			for (int i = 0;	i < value.Count; i++) 
 			{
-				ValidateIndex(index);
-				++this._version;
-				this._array[index] = value;
+				Add(value[i]);
 			}
 		}
 
-		#endregion
-		#region IList.Item: Object
-
-		/// <summary>
-		/// Gets or sets the element at the specified index.
-		/// </summary>
-		/// <param name="index">The zero-based index of the element to get or set.</param>
-		/// <value>
-		/// The element at the specified <paramref name="index"/>. When the property
-		/// is set, this value must be compatible with <see cref="LineItem"/>.
-		/// </value>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="index"/> is equal to or greater than <see cref="Count"/>.</para>
-		/// </exception>
-		/// <exception cref="InvalidCastException">The property is set to a value
-		/// that is not compatible with <see cref="LineItem"/>.</exception>
-		/// <exception cref="NotSupportedException"><para>
-		/// The property is set and the <see cref="LineItemCollection"/> is read-only.
-		/// </para><para>-or-</para><para>
-		/// The property is set, the <b>LineItemCollection</b> already contains the
-		/// specified element at a different index, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.this"/> for details.</remarks>
-
-		object IList.this[int index] 
-		{
-			get { return this[index]; }
-			set { this[index] = (LineItem) value; }
-		}
-
-		#endregion
-		#region SyncRoot
-
-		/// <summary>
-		/// Gets an object that can be used to synchronize
-		/// access to the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <value>An object that can be used to synchronize
-		/// access to the <see cref="LineItemCollection"/>.
-		/// </value>
-		/// <remarks>Please refer to <see cref="ArrayList.SyncRoot"/> for details.</remarks>
-
-		public virtual object SyncRoot 
-		{
-			get { return this; }
-		}
-
-		#endregion
-		#endregion
-		#region Public Methods
-		#region Add(LineItem)
-
-		/// <summary>
-		/// Adds a <see cref="LineItem"/> to the end of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to be added to the end of the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns>The <see cref="LineItemCollection"/> index at which the
-		/// <paramref name="value"/> has been added.</returns>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains the specified
-		/// <paramref name="value"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Add"/> for details.</remarks>
-
-		public virtual int Add(LineItem value) 
-		{
-			if (this._count == this._array.Length)
-				EnsureCapacity(this._count + 1);
-
-			++this._version;
-			this._array[this._count] = value;
-			return this._count++;
-		}
-
-		#endregion
-		#region IList.Add(Object)
-
-		/// <summary>
-		/// Adds an <see cref="Object"/> to the end of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">
-		/// The object to be added to the end of the <see cref="LineItemCollection"/>.
-		/// This argument must be compatible with <see cref="LineItem"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns>The <see cref="LineItemCollection"/> index at which the
-		/// <paramref name="value"/> has been added.</returns>
-		/// <exception cref="InvalidCastException"><paramref name="value"/>
-		/// is not compatible with <see cref="LineItem"/>.</exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains the specified
-		/// <paramref name="value"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Add"/> for details.</remarks>
-
-		int IList.Add(object value) 
-		{
-			return Add((LineItem) value);
-		}
-
-		#endregion
-		#region AddRange(LineItemCollection)
-
-		/// <overloads>
-		/// Adds a range of elements to the end of the <see cref="LineItemCollection"/>.
-		/// </overloads>
-		/// <summary>
-		/// Adds the elements of another collection to the end of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="collection">The <see cref="LineItemCollection"/> whose elements
-		/// should be added to the end of the current collection.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="collection"/> is a null reference.</exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains one or more elements
-		/// in the specified <paramref name="collection"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.AddRange"/> for details.</remarks>
-
-		public virtual void AddRange(LineItemCollection collection) 
-		{
-			if (collection == null)
-				throw new ArgumentNullException("collection");
-
-			if (collection.Count == 0) return;
-			if (this._count + collection.Count > this._array.Length)
-				EnsureCapacity(this._count + collection.Count);
-
-			++this._version;
-			Array.Copy(collection.InnerArray, 0,
-				this._array, this._count, collection.Count);
-			this._count += collection.Count;
-		}
-
-		#endregion
-		#region AddRange(LineItem[])
-
-		/// <summary>
-		/// Adds the elements of a <see cref="LineItem"/> array
-		/// to the end of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="array">An <see cref="Array"/> of <see cref="LineItem"/> elements
-		/// that should be added to the end of the <see cref="LineItemCollection"/>.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains one or more elements
-		/// in the specified <paramref name="array"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.AddRange"/> for details.</remarks>
-
-		public virtual void AddRange(LineItem[] array) 
-		{
-			if (array == null)
-				throw new ArgumentNullException("array");
-
-			if (array.Length == 0) return;
-			if (this._count + array.Length > this._array.Length)
-				EnsureCapacity(this._count + array.Length);
-
-			++this._version;
-			Array.Copy(array, 0, this._array, this._count, array.Length);
-			this._count += array.Length;
-		}
-
-		#endregion
-		#region BinarySearch
-
-		/// <summary>
-		/// Searches the entire sorted <see cref="LineItemCollection"/> for an
-		/// <see cref="LineItem"/> element using the default comparer
-		/// and returns the zero-based index of the element.
-		/// </summary>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to locate in the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns>The zero-based index of <paramref name="value"/> in the sorted
-		/// <see cref="LineItemCollection"/>, if <paramref name="value"/> is found;
-		/// otherwise, a negative number, which is the bitwise complement of the index
-		/// of the next element that is larger than <paramref name="value"/> or, if there
-		/// is no larger element, the bitwise complement of <see cref="Count"/>.</returns>
-		/// <exception cref="InvalidOperationException">
-		/// Neither <paramref name="value"/> nor the elements of the <see cref="LineItemCollection"/>
-		/// implement the <see cref="IComparable"/> interface.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.BinarySearch"/> for details.</remarks>
-
-		public virtual int BinarySearch(LineItem value) 
-		{
-			return Array.BinarySearch(this._array, 0, this._count, value);
-		}
-
-		#endregion
-		#region Clear
-
-		/// <summary>
-		/// Removes all elements from the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Clear"/> for details.</remarks>
-
-		public virtual void Clear() 
-		{
-			if (this._count == 0) return;
-
-			++this._version;
-			Array.Clear(this._array, 0, this._count);
-			this._count = 0;
-		}
-
-		#endregion
-		#region Clone
-
-		/// <summary>
-		/// Creates a shallow copy of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <returns>A shallow copy of the <see cref="LineItemCollection"/>.</returns>
-		/// <remarks>Please refer to <see cref="ArrayList.Clone"/> for details.</remarks>
-
-		public virtual object Clone() 
-		{
-			LineItemCollection collection = new LineItemCollection(this._count);
-
-			Array.Copy(this._array, 0, collection._array, 0, this._count);
-			collection._count = this._count;
-			collection._version = this._version;
-
-			return collection;
-		}
-
-		#endregion
-		#region Contains(LineItem)
-
-		/// <summary>
-		/// Determines whether the <see cref="LineItemCollection"/>
-		/// contains the specified <see cref="LineItem"/> element.
-		/// </summary>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to locate in the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns><c>true</c> if <paramref name="value"/> is found in the
-		/// <see cref="LineItemCollection"/>; otherwise, <c>false</c>.</returns>
-		/// <remarks>Please refer to <see cref="ArrayList.Contains"/> for details.</remarks>
-
 		public bool Contains(LineItem value) 
 		{
-			return (IndexOf(value) >= 0);
-		}
-
-		#endregion
-		#region IList.Contains(Object)
-
-		/// <summary>
-		/// Determines whether the <see cref="LineItemCollection"/> contains the specified element.
-		/// </summary>
-		/// <param name="value">The object to locate in the <see cref="LineItemCollection"/>.
-		/// This argument must be compatible with <see cref="LineItem"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns><c>true</c> if <paramref name="value"/> is found in the
-		/// <see cref="LineItemCollection"/>; otherwise, <c>false</c>.</returns>
-		/// <exception cref="InvalidCastException"><paramref name="value"/>
-		/// is not compatible with <see cref="LineItem"/>.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Contains"/> for details.</remarks>
-
-		bool IList.Contains(object value) 
-		{
-			return Contains((LineItem) value);
-		}
-
-		#endregion
-		#region CopyTo(LineItem[])
-
-		/// <overloads>
-		/// Copies the <see cref="LineItemCollection"/> or a portion of it to a one-dimensional array.
-		/// </overloads>
-		/// <summary>
-		/// Copies the entire <see cref="LineItemCollection"/> to a one-dimensional <see cref="Array"/>
-		/// of <see cref="LineItem"/> elements, starting at the beginning of the target array.
-		/// </summary>
-		/// <param name="array">The one-dimensional <see cref="Array"/> that is the destination of the
-		/// <see cref="LineItem"/> elements copied from the <see cref="LineItemCollection"/>.
-		/// The <b>Array</b> must have zero-based indexing.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <exception cref="ArgumentException">
-		/// The number of elements in the source <see cref="LineItemCollection"/> is greater
-		/// than the available space in the destination <paramref name="array"/>.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.CopyTo"/> for details.</remarks>
-
-		public virtual void CopyTo(LineItem[] array) 
-		{
-			CheckTargetArray(array, 0);
-			Array.Copy(this._array, array, this._count);
-		}
-
-		#endregion
-		#region CopyTo(LineItem[], Int32)
-
-		/// <summary>
-		/// Copies the entire <see cref="LineItemCollection"/> to a one-dimensional <see cref="Array"/>
-		/// of <see cref="LineItem"/> elements, starting at the specified index of the target array.
-		/// </summary>
-		/// <param name="array">The one-dimensional <see cref="Array"/> that is the destination of the
-		/// <see cref="LineItem"/> elements copied from the <see cref="LineItemCollection"/>.
-		/// The <b>Array</b> must have zero-based indexing.</param>
-		/// <param name="arrayIndex">The zero-based index in <paramref name="array"/>
-		/// at which copying begins.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <paramref name="arrayIndex"/> is less than zero.</exception>
-		/// <exception cref="ArgumentException"><para>
-		/// <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
-		/// </para><para>-or-</para><para>
-		/// The number of elements in the source <see cref="LineItemCollection"/> is greater than the
-		/// available space from <paramref name="arrayIndex"/> to the end of the destination
-		/// <paramref name="array"/>.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.CopyTo"/> for details.</remarks>
-
-		public virtual void CopyTo(LineItem[] array, int arrayIndex) 
-		{
-			CheckTargetArray(array, arrayIndex);
-			Array.Copy(this._array, 0, array, arrayIndex, this._count);
-		}
-
-		#endregion
-		#region ICollection.CopyTo(Array, Int32)
-
-		/// <summary>
-		/// Copies the entire <see cref="LineItemCollection"/> to a one-dimensional <see cref="Array"/>,
-		/// starting at the specified index of the target array.
-		/// </summary>
-		/// <param name="array">The one-dimensional <see cref="Array"/> that is the destination of the
-		/// <see cref="LineItem"/> elements copied from the <see cref="LineItemCollection"/>.
-		/// The <b>Array</b> must have zero-based indexing.</param>
-		/// <param name="arrayIndex">The zero-based index in <paramref name="array"/>
-		/// at which copying begins.</param>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="array"/> is a null reference.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <paramref name="arrayIndex"/> is less than zero.</exception>
-		/// <exception cref="ArgumentException"><para>
-		/// <paramref name="array"/> is multidimensional.
-		/// </para><para>-or-</para><para>
-		/// <paramref name="arrayIndex"/> is equal to or greater than the length of <paramref name="array"/>.
-		/// </para><para>-or-</para><para>
-		/// The number of elements in the source <see cref="LineItemCollection"/> is greater than the
-		/// available space from <paramref name="arrayIndex"/> to the end of the destination
-		/// <paramref name="array"/>.</para></exception>
-		/// <exception cref="InvalidCastException">
-		/// The <see cref="LineItem"/> type cannot be cast automatically
-		/// to the type of the destination <paramref name="array"/>.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.CopyTo"/> for details.</remarks>
-
-		void ICollection.CopyTo(Array array, int arrayIndex) 
-		{
-			CopyTo((LineItem[]) array, arrayIndex);
-		}
-
-		#endregion
-		#region GetEnumerator: ILineItemEnumerator
-
-		/// <summary>
-		/// Returns an <see cref="ILineItemEnumerator"/> that can
-		/// iterate through the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <returns>An <see cref="ILineItemEnumerator"/>
-		/// for the entire <see cref="LineItemCollection"/>.</returns>
-		/// <remarks>Please refer to <see cref="ArrayList.GetEnumerator"/> for details.</remarks>
-
-		public virtual ILineItemEnumerator GetEnumerator() 
-		{
-			return new Enumerator(this);
-		}
-
-		#endregion
-		#region IEnumerable.GetEnumerator: IEnumerator
-
-		/// <summary>
-		/// Returns an <see cref="IEnumerator"/> that can
-		/// iterate through the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <returns>An <see cref="IEnumerator"/>
-		/// for the entire <see cref="LineItemCollection"/>.</returns>
-		/// <remarks>Please refer to <see cref="ArrayList.GetEnumerator"/> for details.</remarks>
-
-		IEnumerator IEnumerable.GetEnumerator() 
-		{
-			return (IEnumerator) GetEnumerator();
-		}
-
-		#endregion
-		#region IndexOf(LineItem)
-
-		/// <summary>
-		/// Returns the zero-based index of the first occurrence of the specified
-		/// <see cref="LineItem"/> in the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to locate in the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns>
-		/// The zero-based index of the first occurrence of <paramref name="value"/>
-		/// in the <see cref="LineItemCollection"/>, if found; otherwise, -1.
-		/// </returns>
-		/// <remarks>Please refer to <see cref="ArrayList.IndexOf"/> for details.</remarks>
-
-		public virtual int IndexOf(LineItem value) 
-		{
-			return Array.IndexOf(this._array, value, 0, this._count);
-		}
-
-		#endregion
-		#region IList.IndexOf(Object)
-
-		/// <summary>
-		/// Returns the zero-based index of the first occurrence of the specified
-		/// <see cref="Object"/> in the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">The object to locate in the <see cref="LineItemCollection"/>.
-		/// This argument must be compatible with <see cref="LineItem"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <returns>
-		/// The zero-based index of the first occurrence of <paramref name="value"/>
-		/// in the <see cref="LineItemCollection"/>, if found; otherwise, -1.
-		/// </returns>
-		/// <exception cref="InvalidCastException"><paramref name="value"/>
-		/// is not compatible with <see cref="LineItem"/>.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.IndexOf"/> for details.</remarks>
-
-		int IList.IndexOf(object value) 
-		{
-			return IndexOf((LineItem) value);
-		}
-
-		#endregion
-		#region Insert(Int32, LineItem)
-
-		/// <summary>
-		/// Inserts a <see cref="LineItem"/> element into the
-		/// <see cref="LineItemCollection"/> at the specified index.
-		/// </summary>
-		/// <param name="index">The zero-based index at which <paramref name="value"/>
-		/// should be inserted.</param>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to insert into the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="index"/> is greater than <see cref="Count"/>.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains the specified
-		/// <paramref name="value"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Insert"/> for details.</remarks>
-
-		public virtual void Insert(int index, LineItem value) 
-		{
-			if (index < 0)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot be negative.");
-
-			if (index > this._count)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot exceed Count.");
-
-			if (this._count == this._array.Length)
-				EnsureCapacity(this._count + 1);
-
-			++this._version;
-			if (index < this._count)
-				Array.Copy(this._array, index,
-					this._array, index + 1, this._count - index);
-
-			this._array[index] = value;
-			++this._count;
-		}
-
-		#endregion
-		#region IList.Insert(Int32, Object)
-
-		/// <summary>
-		/// Inserts an element into the <see cref="LineItemCollection"/> at the specified index.
-		/// </summary>
-		/// <param name="index">The zero-based index at which <paramref name="value"/>
-		/// should be inserted.</param>
-		/// <param name="value">The object to insert into the <see cref="LineItemCollection"/>.
-		/// This argument must be compatible with <see cref="LineItem"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="index"/> is greater than <see cref="Count"/>.</para>
-		/// </exception>
-		/// <exception cref="InvalidCastException"><paramref name="value"/>
-		/// is not compatible with <see cref="LineItem"/>.</exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> already contains the specified
-		/// <paramref name="value"/>, and the <b>LineItemCollection</b>
-		/// ensures that all elements are unique.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Insert"/> for details.</remarks>
-
-		void IList.Insert(int index, object value) 
-		{
-			Insert(index, (LineItem) value);
-		}
-
-		#endregion
-		#region ReadOnly
-
-		/// <summary>
-		/// Returns a read-only wrapper for the specified <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="collection">The <see cref="LineItemCollection"/> to wrap.</param>
-		/// <returns>A read-only wrapper around <paramref name="collection"/>.</returns>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="collection"/> is a null reference.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.ReadOnly"/> for details.</remarks>
-
-		public static LineItemCollection ReadOnly(LineItemCollection collection) 
-		{
-			if (collection == null)
-				throw new ArgumentNullException("collection");
-
-			return new ReadOnlyList(collection);
-		}
-
-		#endregion
-		#region Remove(LineItem)
-
-		/// <summary>
-		/// Removes the first occurrence of the specified <see cref="LineItem"/>
-		/// from the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">The <see cref="LineItem"/> object
-		/// to remove from the <see cref="LineItemCollection"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Remove"/> for details.</remarks>
-
-		public virtual void Remove(LineItem value) 
-		{
-			int index = IndexOf(value);
-			if (index >= 0) RemoveAt(index);
-		}
-
-		#endregion
-		#region IList.Remove(Object)
-
-		/// <summary>
-		/// Removes the first occurrence of the specified <see cref="Object"/>
-		/// from the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="value">The object to remove from the <see cref="LineItemCollection"/>.
-		/// This argument must be compatible with <see cref="LineItem"/>.
-		/// This argument can be a null reference.
-		/// </param>
-		/// <exception cref="InvalidCastException"><paramref name="value"/>
-		/// is not compatible with <see cref="LineItem"/>.</exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Remove"/> for details.</remarks>
-
-		void IList.Remove(object value) 
-		{
-			Remove((LineItem) value);
-		}
-
-		#endregion
-		#region RemoveAt
-
-		/// <summary>
-		/// Removes the element at the specified index of the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="index">The zero-based index of the element to remove.</param>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="index"/> is equal to or greater than <see cref="Count"/>.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.RemoveAt"/> for details.</remarks>
-
-		public virtual void RemoveAt(int index) 
-		{
-			ValidateIndex(index);
-
-			++this._version;
-			if (index < --this._count)
-				Array.Copy(this._array, index + 1,
-					this._array, index, this._count - index);
-
-			this._array[this._count] = null;
+			return List.Contains(value);
 		}
 
-		#endregion
-		#region RemoveRange
-
-		/// <summary>
-		/// Removes the specified range of elements from the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="index">The zero-based starting index of the range
-		/// of elements to remove.</param>
-		/// <param name="count">The number of elements to remove.</param>
-		/// <exception cref="ArgumentException">
-		/// <paramref name="index"/> and <paramref name="count"/> do not denote a
-		/// valid range of elements in the <see cref="LineItemCollection"/>.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="count"/> is less than zero.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.RemoveRange"/> for details.</remarks>
-
-		public virtual void RemoveRange(int index, int count) 
+		public void CopyTo(LineItem[] array, int index) 
 		{
-			if (index < 0)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot be negative.");
-
-			if (count < 0)
-				throw new ArgumentOutOfRangeException("count",
-					count, "Argument cannot be negative.");
-
-			if (index + count > this._count)
-				throw new ArgumentException(
-					"Arguments denote invalid range of elements.");
-
-			if (count == 0) return;
-
-			++this._version;
-			this._count -= count;
-
-			if (index < this._count)
-				Array.Copy(this._array, index + count,
-					this._array, index, this._count - index);
-
-			Array.Clear(this._array, this._count, count);
+			List.CopyTo(array, index);
 		}
 
-		#endregion
-		#region Reverse()
-
-		/// <overloads>
-		/// Reverses the order of the elements in the 
-		/// <see cref="LineItemCollection"/> or a portion of it.
-		/// </overloads>
-		/// <summary>
-		/// Reverses the order of the elements in the entire <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <exception cref="NotSupportedException">
-		/// The <see cref="LineItemCollection"/> is read-only.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Reverse"/> for details.</remarks>
-
-		public virtual void Reverse() 
+		public int IndexOf(LineItem value) 
 		{
-			if (this._count <= 1) return;
-			++this._version;
-			Array.Reverse(this._array, 0, this._count);
+			return List.IndexOf(value);
 		}
-
-		#endregion
-		#region Reverse(Int32, Int32)
-
-		/// <summary>
-		/// Reverses the order of the elements in the specified range.
-		/// </summary>
-		/// <param name="index">The zero-based starting index of the range
-		/// of elements to reverse.</param>
-		/// <param name="count">The number of elements to reverse.</param>
-		/// <exception cref="ArgumentException">
-		/// <paramref name="index"/> and <paramref name="count"/> do not denote a
-		/// valid range of elements in the <see cref="LineItemCollection"/>.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="count"/> is less than zero.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException">
-		/// The <see cref="LineItemCollection"/> is read-only.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Reverse"/> for details.</remarks>
-
-		public virtual void Reverse(int index, int count) 
+		
+		public void Insert(int index, LineItem value) 
 		{
-			if (index < 0)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot be negative.");
-
-			if (count < 0)
-				throw new ArgumentOutOfRangeException("count",
-					count, "Argument cannot be negative.");
-
-			if (index + count > this._count)
-				throw new ArgumentException(
-					"Arguments denote invalid range of elements.");
-
-			if (count <= 1 || this._count <= 1) return;
-			++this._version;
-			Array.Reverse(this._array, index, count);
+			List.Insert(index, value);
 		}
-
-		#endregion
-		#region Sort()
-
-		/// <overloads>
-		/// Sorts the elements in the <see cref="LineItemCollection"/> or a portion of it.
-		/// </overloads>
-		/// <summary>
-		/// Sorts the elements in the entire <see cref="LineItemCollection"/>
-		/// using the <see cref="IComparable"/> implementation of each element.
-		/// </summary>
-		/// <exception cref="NotSupportedException">
-		/// The <see cref="LineItemCollection"/> is read-only.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Sort"/> for details.</remarks>
-
-		public virtual void Sort() 
+		
+		public void Remove(LineItem value) 
 		{
-			if (this._count <= 1) return;
-			++this._version;
-			Array.Sort(this._array, 0, this._count);
+			List.Remove(value);
 		}
-
-		#endregion
-		#region Sort(IComparer)
-
-		/// <summary>
-		/// Sorts the elements in the entire <see cref="LineItemCollection"/>
-		/// using the specified <see cref="IComparer"/> interface.
-		/// </summary>
-		/// <param name="comparer">
-		/// <para>The <see cref="IComparer"/> implementation to use when comparing elements.</para>
-		/// <para>-or-</para>
-		/// <para>A null reference to use the <see cref="IComparable"/> implementation 
-		/// of each element.</para></param>
-		/// <exception cref="NotSupportedException">
-		/// The <see cref="LineItemCollection"/> is read-only.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Sort"/> for details.</remarks>
-
-		public virtual void Sort(IComparer comparer) 
-		{
-			if (this._count <= 1) return;
-			++this._version;
-			Array.Sort(this._array, 0, this._count, comparer);
-		}
-
-		#endregion
-		#region Sort(Int32, Int32, IComparer)
-
-		/// <summary>
-		/// Sorts the elements in the specified range 
-		/// using the specified <see cref="IComparer"/> interface.
-		/// </summary>
-		/// <param name="index">The zero-based starting index of the range
-		/// of elements to sort.</param>
-		/// <param name="count">The number of elements to sort.</param>
-		/// <param name="comparer">
-		/// <para>The <see cref="IComparer"/> implementation to use when comparing elements.</para>
-		/// <para>-or-</para>
-		/// <para>A null reference to use the <see cref="IComparable"/> implementation 
-		/// of each element.</para></param>
-		/// <exception cref="ArgumentException">
-		/// <paramref name="index"/> and <paramref name="count"/> do not denote a
-		/// valid range of elements in the <see cref="LineItemCollection"/>.</exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// <para><paramref name="index"/> is less than zero.</para>
-		/// <para>-or-</para>
-		/// <para><paramref name="count"/> is less than zero.</para>
-		/// </exception>
-		/// <exception cref="NotSupportedException">
-		/// The <see cref="LineItemCollection"/> is read-only.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Sort"/> for details.</remarks>
-
-		public virtual void Sort(int index, int count, IComparer comparer) 
-		{
-			if (index < 0)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot be negative.");
-
-			if (count < 0)
-				throw new ArgumentOutOfRangeException("count",
-					count, "Argument cannot be negative.");
-
-			if (index + count > this._count)
-				throw new ArgumentException(
-					"Arguments denote invalid range of elements.");
-
-			if (count <= 1 || this._count <= 1) return;
-			++this._version;
-			Array.Sort(this._array, index, count, comparer);
-		}
-
-		#endregion
-		#region Synchronized
-
-		/// <summary>
-		/// Returns a synchronized (thread-safe) wrapper
-		/// for the specified <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <param name="collection">The <see cref="LineItemCollection"/> to synchronize.</param>
-		/// <returns>
-		/// A synchronized (thread-safe) wrapper around <paramref name="collection"/>.
-		/// </returns>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="collection"/> is a null reference.</exception>
-		/// <remarks>Please refer to <see cref="ArrayList.Synchronized"/> for details.</remarks>
-
-		public static LineItemCollection Synchronized(LineItemCollection collection) 
-		{
-			if (collection == null)
-				throw new ArgumentNullException("collection");
-
-			return new SyncList(collection);
-		}
-
-		#endregion
-		#region ToArray
-
-		/// <summary>
-		/// Copies the elements of the <see cref="LineItemCollection"/> to a new
-		/// <see cref="Array"/> of <see cref="LineItem"/> elements.
-		/// </summary>
-		/// <returns>A one-dimensional <see cref="Array"/> of <see cref="LineItem"/>
-		/// elements containing copies of the elements of the <see cref="LineItemCollection"/>.</returns>
-		/// <remarks>Please refer to <see cref="ArrayList.ToArray"/> for details.</remarks>
-
-		public virtual LineItem[] ToArray() 
-		{
-			LineItem[] array = new LineItem[this._count];
-			Array.Copy(this._array, array, this._count);
-			return array;
-		}
-
-		#endregion
-		#region TrimToSize
-
-		/// <summary>
-		/// Sets the capacity to the actual number of elements in the <see cref="LineItemCollection"/>.
-		/// </summary>
-		/// <exception cref="NotSupportedException">
-		/// <para>The <see cref="LineItemCollection"/> is read-only.</para>
-		/// <para>-or-</para>
-		/// <para>The <b>LineItemCollection</b> has a fixed size.</para></exception>
-		/// <remarks>Please refer to <see cref="ArrayList.TrimToSize"/> for details.</remarks>
-
-		public virtual void TrimToSize() 
-		{
-			Capacity = this._count;
-		}
-
-		#endregion
-		#region Unique
-
-		/// <summary>
-		/// Returns a wrapper for the specified <see cref="LineItemCollection"/>
-		/// ensuring that all elements are unique.
-		/// </summary>
-		/// <param name="collection">The <see cref="LineItemCollection"/> to wrap.</param>    
-		/// <returns>
-		/// A wrapper around <paramref name="collection"/> ensuring that all elements are unique.
-		/// </returns>
-		/// <exception cref="ArgumentException">
-		/// <paramref name="collection"/> contains duplicate elements.</exception>
-		/// <exception cref="ArgumentNullException">
-		/// <paramref name="collection"/> is a null reference.</exception>
-		/// <remarks><para>
-		/// The <b>Unique</b> wrapper provides a set-like collection by ensuring
-		/// that all elements in the <see cref="LineItemCollection"/> are unique.
-		/// </para><para>
-		/// <b>Unique</b> raises an <see cref="ArgumentException"/> if the specified 
-		/// <paramref name="collection"/> contains any duplicate elements. The returned
-		/// wrapper raises a <see cref="NotSupportedException"/> whenever the user attempts 
-		/// to add an element that is already contained in the <b>LineItemCollection</b>.
-		/// </para><para>
-		/// <strong>Note:</strong> The <b>Unique</b> wrapper reflects any changes made
-		/// to the underlying <paramref name="collection"/>, including the possible
-		/// creation of duplicate elements. The uniqueness of all elements is therefore
-		/// no longer assured if the underlying collection is manipulated directly.
-		/// </para></remarks>
-
-		public static LineItemCollection Unique(LineItemCollection collection) 
-		{
-			if (collection == null)
-				throw new ArgumentNullException("collection");
-
-			for (int i = collection.Count - 1; i > 0; i--)
-				if (collection.IndexOf(collection[i]) < i)
-					throw new ArgumentException("collection",
-						"Argument cannot contain duplicate elements.");
-
-			return new UniqueList(collection);
-		}
-
-		#endregion
-		#endregion
-		#region Private Methods
-		#region CheckEnumIndex
-
-		private void CheckEnumIndex(int index) 
-		{
-			if (index < 0 || index >= this._count)
-				throw new InvalidOperationException(
-					"Enumerator is not on a collection element.");
-		}
-
-		#endregion
-		#region CheckEnumVersion
-
-		private void CheckEnumVersion(int version) 
-		{
-			if (version != this._version)
-				throw new InvalidOperationException(
-					"Enumerator invalidated by modification to collection.");
-		}
-
-		#endregion
-		#region CheckTargetArray
-
-		private void CheckTargetArray(Array array, int arrayIndex) 
-		{
-			if (array == null)
-				throw new ArgumentNullException("array");
-			if (array.Rank > 1)
-				throw new ArgumentException(
-					"Argument cannot be multidimensional.", "array");
-
-			if (arrayIndex < 0)
-				throw new ArgumentOutOfRangeException("arrayIndex",
-					arrayIndex, "Argument cannot be negative.");
-			if (arrayIndex >= array.Length)
-				throw new ArgumentException(
-					"Argument must be less than array length.", "arrayIndex");
-
-			if (this._count > array.Length - arrayIndex)
-				throw new ArgumentException(
-					"Argument section must be large enough for collection.", "array");
-		}
-
-		#endregion
-		#region EnsureCapacity
-
-		private void EnsureCapacity(int minimum) 
-		{
-			int newCapacity = (this._array.Length == 0 ?
-			_defaultCapacity : this._array.Length * 2);
-
-			if (newCapacity < minimum) newCapacity = minimum;
-			Capacity = newCapacity;
-		}
-
-		#endregion
-		#region ValidateIndex
-
-		private void ValidateIndex(int index) 
-		{
-			if (index < 0)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument cannot be negative.");
-
-			if (index >= this._count)
-				throw new ArgumentOutOfRangeException("index",
-					index, "Argument must be less than Count.");
-		}
-
-		#endregion
-		#endregion
-		#region Class Enumerator
-
-		[Serializable]
-			private sealed class Enumerator:
-			ILineItemEnumerator, IEnumerator 
-		{
-			#region Private Fields
-
-			private readonly LineItemCollection _collection;
-			private readonly int _version;
-			private int _index;
-
-			#endregion
-			#region Internal Constructors
-
-			internal Enumerator(LineItemCollection collection) 
-			{
-				this._collection = collection;
-				this._version = collection._version;
-				this._index = -1;
-			}
-
-			#endregion
-			#region Public Properties
-
-			public LineItem Current 
-			{
-				get 
-				{
-					this._collection.CheckEnumIndex(this._index);
-					this._collection.CheckEnumVersion(this._version);
-					return this._collection[this._index];
-				}
-			}
-
-			object IEnumerator.Current 
-			{
-				get { return Current; }
-			}
-
-			#endregion
-			#region Public Methods
-
-			public bool MoveNext() 
-			{
-				this._collection.CheckEnumVersion(this._version);
-				return (++this._index < this._collection.Count);
-			}
-
-			public void Reset() 
-			{
-				this._collection.CheckEnumVersion(this._version);
-				this._index = -1;
-			}
-
-			#endregion
-		}
-
-		#endregion
-		#region Class ReadOnlyList
-
-		[Serializable]
-			private sealed class ReadOnlyList: LineItemCollection 
-		{
-			#region Private Fields
-
-			private LineItemCollection _collection;
-
-			#endregion
-			#region Internal Constructors
-
-			internal ReadOnlyList(LineItemCollection collection):
-				base(Tag.Default) 
-			{
-				this._collection = collection;
-			}
-
-			#endregion
-			#region Protected Properties
-
-			protected override LineItem[] InnerArray 
-			{
-				get { return this._collection.InnerArray; }
-			}
-
-			#endregion
-			#region Public Properties
-
-			public override int Capacity 
-			{
-				get { return this._collection.Capacity; }
-				set 
-				{
-					throw new NotSupportedException(
-						  "Read-only collections cannot be modified."); }
-			}
-
-			public override int Count 
-			{
-				get { return this._collection.Count; }
-			}
-
-			public override bool IsFixedSize 
-			{
-				get { return true; }
-			}
-
-			public override bool IsReadOnly 
-			{
-				get { return true; }
-			}
-
-			public override bool IsSynchronized 
-			{
-				get { return this._collection.IsSynchronized; }
-			}
-
-			public override bool IsUnique 
-			{
-				get { return this._collection.IsUnique; }
-			}
-
-			public override LineItem this[int index] 
-			{
-				get { return this._collection[index]; }
-				set 
-				{
-					throw new NotSupportedException(
-						  "Read-only collections cannot be modified."); }
-			}
-
-			public override object SyncRoot 
-			{
-				get { return this._collection.SyncRoot; }
-			}
-
-			#endregion
-			#region Public Methods
-
-			public override int Add(LineItem value) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void AddRange(LineItemCollection collection) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void AddRange(LineItem[] array) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override int BinarySearch(LineItem value) 
-			{
-				return this._collection.BinarySearch(value);
-			}
-
-			public override void Clear() 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override object Clone() 
-			{
-				return new ReadOnlyList((LineItemCollection) this._collection.Clone());
-			}
-
-			public override void CopyTo(LineItem[] array) 
-			{
-				this._collection.CopyTo(array);
-			}
-
-			public override void CopyTo(LineItem[] array, int arrayIndex) 
-			{
-				this._collection.CopyTo(array, arrayIndex);
-			}
-
-			public override ILineItemEnumerator GetEnumerator() 
-			{
-				return this._collection.GetEnumerator();
-			}
-
-			public override int IndexOf(LineItem value) 
-			{
-				return this._collection.IndexOf(value);
-			}
-
-			public override void Insert(int index, LineItem value) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Remove(LineItem value) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void RemoveAt(int index) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void RemoveRange(int index, int count) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Reverse() 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Reverse(int index, int count) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Sort() 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Sort(IComparer comparer) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override void Sort(int index, int count, IComparer comparer) 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			public override LineItem[] ToArray() 
-			{
-				return this._collection.ToArray();
-			}
-
-			public override void TrimToSize() 
-			{
-				throw new NotSupportedException(
-					"Read-only collections cannot be modified.");
-			}
-
-			#endregion
-		}
-
-		#endregion
-		#region Class SyncList
-
-		[Serializable]
-			private sealed class SyncList: LineItemCollection 
-		{
-			#region Private Fields
-
-			private LineItemCollection _collection;
-			private object _root;
-
-			#endregion
-			#region Internal Constructors
-
-			internal SyncList(LineItemCollection collection):
-				base(Tag.Default) 
-			{
-
-				this._root = collection.SyncRoot;
-				this._collection = collection;
-			}
-
-			#endregion
-			#region Protected Properties
-
-			protected override LineItem[] InnerArray 
-			{
-				get { lock (this._root) return this._collection.InnerArray; }
-			}
-
-			#endregion
-			#region Public Properties
-
-			public override int Capacity 
-			{
-				get { lock (this._root) return this._collection.Capacity; }
-				set { lock (this._root) this._collection.Capacity = value; }
-			}
-
-			public override int Count 
-			{
-				get { lock (this._root) return this._collection.Count; }
-			}
-
-			public override bool IsFixedSize 
-			{
-				get { return this._collection.IsFixedSize; }
-			}
-
-			public override bool IsReadOnly 
-			{
-				get { return this._collection.IsReadOnly; }
-			}
-
-			public override bool IsSynchronized 
-			{
-				get { return true; }
-			}
-
-			public override bool IsUnique 
-			{
-				get { return this._collection.IsUnique; }
-			}
-
-			public override LineItem this[int index] 
-			{
-				get { lock (this._root) return this._collection[index]; }
-				set { lock (this._root) this._collection[index] = value;  }
-			}
-
-			public override object SyncRoot 
-			{
-				get { return this._root; }
-			}
-
-			#endregion
-			#region Public Methods
-
-			public override int Add(LineItem value) 
-			{
-				lock (this._root) return this._collection.Add(value);
-			}
-
-			public override void AddRange(LineItemCollection collection) 
-			{
-				lock (this._root) this._collection.AddRange(collection);
-			}
-
-			public override void AddRange(LineItem[] array) 
-			{
-				lock (this._root) this._collection.AddRange(array);
-			}
-
-			public override int BinarySearch(LineItem value) 
-			{
-				lock (this._root) return this._collection.BinarySearch(value);
-			}
-
-			public override void Clear() 
-			{
-				lock (this._root) this._collection.Clear();
-			}
-
-			public override object Clone() 
-			{
-				lock (this._root)
-					return new SyncList((LineItemCollection) this._collection.Clone());
-			}
-
-			public override void CopyTo(LineItem[] array) 
-			{
-				lock (this._root) this._collection.CopyTo(array);
-			}
-
-			public override void CopyTo(LineItem[] array, int arrayIndex) 
-			{
-				lock (this._root) this._collection.CopyTo(array, arrayIndex);
-			}
-
-			public override ILineItemEnumerator GetEnumerator() 
-			{
-				lock (this._root) return this._collection.GetEnumerator();
-			}
-
-			public override int IndexOf(LineItem value) 
-			{
-				lock (this._root) return this._collection.IndexOf(value);
-			}
-
-			public override void Insert(int index, LineItem value) 
-			{
-				lock (this._root) this._collection.Insert(index, value);
-			}
-
-			public override void Remove(LineItem value) 
-			{
-				lock (this._root) this._collection.Remove(value);
-			}
-
-			public override void RemoveAt(int index) 
-			{
-				lock (this._root) this._collection.RemoveAt(index);
-			}
-
-			public override void RemoveRange(int index, int count) 
-			{
-				lock (this._root) this._collection.RemoveRange(index, count);
-			}
-
-			public override void Reverse() 
-			{
-				lock (this._root) this._collection.Reverse();
-			}
-
-			public override void Reverse(int index, int count) 
-			{
-				lock (this._root) this._collection.Reverse(index, count);
-			}
-
-			public override void Sort() 
-			{
-				lock (this._root) this._collection.Sort();
-			}
-
-			public override void Sort(IComparer comparer) 
-			{
-				lock (this._root) this._collection.Sort(comparer);
-			}
-
-			public override void Sort(int index, int count, IComparer comparer) 
-			{
-				lock (this._root) this._collection.Sort(index, count, comparer);
-			}
-
-			public override LineItem[] ToArray() 
-			{
-				lock (this._root) return this._collection.ToArray();
-			}
-
-			public override void TrimToSize() 
-			{
-				lock (this._root) this._collection.TrimToSize();
-			}
-
-			#endregion
-		}
-
-		#endregion
-		#region Class UniqueList
-
-		[Serializable]
-			private sealed class UniqueList: LineItemCollection 
-		{
-			#region Private Fields
-
-			private LineItemCollection _collection;
-
-			#endregion
-			#region Internal Constructors
-
-			internal UniqueList(LineItemCollection collection):
-				base(Tag.Default) 
-			{
-				this._collection = collection;
-			}
-
-			#endregion
-			#region Protected Properties
-
-			protected override LineItem[] InnerArray 
-			{
-				get { return this._collection.InnerArray; }
-			}
-
-			#endregion
-			#region Public Properties
-
-			public override int Capacity 
-			{
-				get { return this._collection.Capacity; }
-				set { this._collection.Capacity = value; }
-			}
-
-			public override int Count 
-			{
-				get { return this._collection.Count; }
-			}
-
-			public override bool IsFixedSize 
-			{
-				get { return this._collection.IsFixedSize; }
-			}
-
-			public override bool IsReadOnly 
-			{
-				get { return this._collection.IsReadOnly; }
-			}
-
-			public override bool IsSynchronized 
-			{
-				get { return this._collection.IsSynchronized; }
-			}
-
-			public override bool IsUnique 
-			{
-				get { return true; }
-			}
-
-			public override LineItem this[int index] 
-			{
-				get { return this._collection[index]; }
-				set 
-				{
-					CheckUnique(index, value);
-					this._collection[index] = value;
-				}
-			}
-
-			public override object SyncRoot 
-			{
-				get { return this._collection.SyncRoot; }
-			}
-
-			#endregion
-			#region Public Methods
-
-			public override int Add(LineItem value) 
-			{
-				CheckUnique(value);
-				return this._collection.Add(value);
-			}
-
-			public override void AddRange(LineItemCollection collection) 
-			{
-				foreach (LineItem value in collection)
-					CheckUnique(value);
-            
-				this._collection.AddRange(collection);
-			}
-
-			public override void AddRange(LineItem[] array) 
-			{
-				foreach (LineItem value in array)
-					CheckUnique(value);
-            
-				this._collection.AddRange(array);
-			}
-
-			public override int BinarySearch(LineItem value) 
-			{
-				return this._collection.BinarySearch(value);
-			}
-
-			public override void Clear() 
-			{
-				this._collection.Clear();
-			}
-
-			public override object Clone() 
-			{
-				return new UniqueList((LineItemCollection) this._collection.Clone());
-			}
-
-			public override void CopyTo(LineItem[] array) 
-			{
-				this._collection.CopyTo(array);
-			}
-
-			public override void CopyTo(LineItem[] array, int arrayIndex) 
-			{
-				this._collection.CopyTo(array, arrayIndex);
-			}
-
-			public override ILineItemEnumerator GetEnumerator() 
-			{
-				return this._collection.GetEnumerator();
-			}
-
-			public override int IndexOf(LineItem value) 
-			{
-				return this._collection.IndexOf(value);
-			}
-
-			public override void Insert(int index, LineItem value) 
-			{
-				CheckUnique(value);
-				this._collection.Insert(index, value);
-			}
-
-			public override void Remove(LineItem value) 
-			{
-				this._collection.Remove(value);
-			}
-
-			public override void RemoveAt(int index) 
-			{
-				this._collection.RemoveAt(index);
-			}
-
-			public override void RemoveRange(int index, int count) 
-			{
-				this._collection.RemoveRange(index, count);
-			}
-
-			public override void Reverse() 
-			{
-				this._collection.Reverse();
-			}
-
-			public override void Reverse(int index, int count) 
-			{
-				this._collection.Reverse(index, count);
-			}
-
-			public override void Sort() 
-			{
-				this._collection.Sort();
-			}
-
-			public override void Sort(IComparer comparer) 
-			{
-				this._collection.Sort(comparer);
-			}
-
-			public override void Sort(int index, int count, IComparer comparer) 
-			{
-				this._collection.Sort(index, count, comparer);
-			}
-
-			public override LineItem[] ToArray() 
-			{
-				return this._collection.ToArray();
-			}
-
-			public override void TrimToSize() 
-			{
-				this._collection.TrimToSize();
-			}
-
-			#endregion
-			#region Private Methods
-
-			private void CheckUnique(LineItem value) 
-			{
-				if (IndexOf(value) >= 0)
-					throw new NotSupportedException(
-						"Unique collections cannot contain duplicate elements.");
-			}
-
-			private void CheckUnique(int index, LineItem value) 
-			{
-				int existing = IndexOf(value);
-				if (existing >= 0 && existing != index)
-					throw new NotSupportedException(
-						"Unique collections cannot contain duplicate elements.");
-			}
-
-			#endregion
-		}
-
-		#endregion
 	}
-
-	#endregion
 }

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?view=diff&r1=160215&r2=160216
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml Tue Apr  5 13:24:06 2005
@@ -295,6 +295,23 @@
 			select * from Orders where Order_ID = #value#
 		</select>			
 		
+		<select id="SelectOrderByDate"
+				parameterClass="Hashtable"
+				resultMap="lite-order-result-by-name">
+			select * from Orders where Order_Date = #Foo#
+		</select>	
+		
+		<select id="SelectOrderByDateDynamic"
+				parameterClass="Hashtable"
+				resultMap="lite-order-result-by-name">
+			select * from Orders
+			where 1=1
+			<isNotEmpty prepend="AND" property="Foo"> 
+				(Order_Date = '$Foo$') 
+			</isNotEmpty> 
+
+		</select>	
+		
 	</statements>
 
 	<parameterMaps>   

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/DynamicPrependTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/DynamicPrependTest.cs?view=diff&r1=160215&r2=160216
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/DynamicPrependTest.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/DynamicPrependTest.cs Tue Apr  5 13:24:06 2005
@@ -298,6 +298,7 @@
 		/// To test only for MSSQL with .NET SqlClient provider
 		/// </remarks>
 		[Test] 
+		[Category("MSSQL")]
 		public void TestJIRA11() 
 		{
 			Search search = new Search();
@@ -342,6 +343,29 @@
 			Assert.AreEqual(8888888, anOther.Long);
 			Assert.AreEqual(false, anOther.Bool);
 
+		}
+
+		/// <summary>
+		/// Test JIRA 29
+		/// </summary>
+		[Test] 
+		[Category("MSSQL")]
+		public void TestJIRA29() 
+		{
+			Hashtable param = new Hashtable();
+			param["Foo"] = new DateTime(2003, 2, 15, 8, 15, 0); 
+
+			Order order = sqlMap.QueryForObject("SelectOrderByDate", param) as Order;
+
+			Assert.IsNotNull(order);
+
+			Assert.AreEqual(1, order.Id);
+
+			order = sqlMap.QueryForObject("SelectOrderByDateDynamic", param) as Order;
+
+			Assert.IsNotNull(order);
+
+			Assert.AreEqual(1, order.Id);
 		}
 		#endregion
 

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs?view=diff&r1=160215&r2=160216
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs Tue Apr  5 13:24:06 2005
@@ -160,18 +160,89 @@
 		
 		#endregion
 		
+		[Test] 
 		public void TestAdoPerformanceWithParameter()
 		{
-			IDbConnection connection = new SqlConnection();
-			connection.ConnectionString = sqlMap.DataSource.ConnectionString;
+			string connectionString = sqlMap.DataSource.ConnectionString;
 
-			IDbCommand command = new SqlCommand();
-//			command.CommandType = CommandType.Text;
-//			command.CommandText = "";
-//			command.Parameters.Add ( "@id", id) ;
-//			command.Parameters.Add ( "@desc", desc) ;
-//			command.Prepare() ;  // Calling Prepare after having set the Commandtext and parameters.
-//			command.ExecuteNonQuery();
+			// Embeded Parameters
+			using (SqlConnection connection = new SqlConnection(connectionString))
+			{
+				string commandText = @"SELECT 
+					[Many_FirstID] AS FirstId, 
+					[Many_SecondID] AS SecondId, 
+					[Many_ThirdID] AS ThirdId, 
+					[Many_FourthID] AS FourthId,  
+					[Many_FifthID] AS FifthId,  
+					[Many_SequenceID] AS SequenceId,  
+					[Many_DistributedID] AS DistributedId, 
+					[Many_SampleCharValue] AS SampleChar,  
+					[Many_SampleDecimal] AS SampleDecimal, 
+					[Many_SampleMoney] AS SampleMoney, 
+					[Many_SampleDate] AS SampleDate, 
+					[Many_SequenceDate] AS SequenceDate
+				FROM 
+					[ManyRecordsTest]
+				WHERE 
+					[Many_SampleDate] BETWEEN '1990/01/01' AND '1992/01/01'";
+
+				connection.Open();
+
+				using (SqlCommand command = new SqlCommand(commandText, connection))
+				{
+					command.CommandType = CommandType.Text;
+
+					long startCount = DateTime.Now.Ticks;
+					for(int i= 0; i<50; i++)
+					{
+						command.ExecuteNonQuery();
+					}
+					long endCount = DateTime.Now.Ticks;
+					Console.Write("Embeded Parameters : ");
+					Console.Write(endCount-startCount);
+					Console.WriteLine();
+				}
+			}
+
+			// Using Parameter
+			using (SqlConnection connection = new SqlConnection(connectionString))
+			{
+				string commandText = @"SELECT 
+					[Many_FirstID] AS FirstId, 
+					[Many_SecondID] AS SecondId, 
+					[Many_ThirdID] AS ThirdId, 
+					[Many_FourthID] AS FourthId,  
+					[Many_FifthID] AS FifthId,  
+					[Many_SequenceID] AS SequenceId,  
+					[Many_DistributedID] AS DistributedId, 
+					[Many_SampleCharValue] AS SampleChar,  
+					[Many_SampleDecimal] AS SampleDecimal, 
+					[Many_SampleMoney] AS SampleMoney, 
+					[Many_SampleDate] AS SampleDate, 
+					[Many_SequenceDate] AS SequenceDate
+				FROM 
+					[ManyRecordsTest]
+				WHERE 
+					[Many_SampleDate] BETWEEN @date1 AND @date2";
+
+				connection.Open();
+
+				using (SqlCommand command = new SqlCommand(commandText, connection))
+				{
+					command.CommandType = CommandType.Text;
+					command.Parameters.Add ( "@date1", new DateTime(1990,1,1)) ;
+					command.Parameters.Add ( "@date2", new DateTime(1992,1,1)) ;
+
+					long startCount = DateTime.Now.Ticks;
+					for(int i= 0; i<50; i++)
+					{
+						command.ExecuteNonQuery();
+					}
+					long endCount = DateTime.Now.Ticks;
+					Console.Write("Parameter : ");
+					Console.Write(endCount-startCount);
+				}
+			}
 
 		}