internal ReadOnlyLocalNamespaceList(LocalNamespaceListBase list) : base(Tag.Default)
			{
				m_collection = list;
			}
		/// <summary>
		///		Creates a read-only wrapper for a 
		///     <c>LocalNamespaceListBase</c> instance.
		/// </summary>
		/// <returns>
		///     An <c>LocalNamespaceListBase</c> wrapper that is read-only.
		/// </returns>
		public static LocalNamespaceListBase ReadOnly(LocalNamespaceListBase list)
		{
			if(list==null)
				throw new ArgumentNullException("list");
			return new ReadOnlyLocalNamespaceList(list);
		}
			public override int AddRange(LocalNamespaceListBase x)
			{
				int result = 0;
				rwLock.AcquireWriterLock(timeout);

				try
				{
					result = collection.AddRange(x);
				}
				finally
				{
					rwLock.ReleaseWriterLock();
				}

				return result;
			}
			internal SyncLocalNamespaceList(LocalNamespaceListBase list) : base(Tag.Default)
			{
				rwLock = new System.Threading.ReaderWriterLock();
				collection = list;
			}
		/// <summary>
		///		Creates a synchronized (thread-safe) wrapper for a 
		///     <c>LocalNamespaceListBase</c> instance.
		/// </summary>
		/// <returns>
		///     An <c>LocalNamespaceListBase</c> wrapper that is synchronized (thread-safe).
		/// </returns>
		public static LocalNamespaceListBase Synchronized(LocalNamespaceListBase list)
		{
			if(list==null)
				throw new ArgumentNullException("list");
			return new SyncLocalNamespaceList(list);
		}
			/// <summary>
			///		Initializes a new instance of the <c>Enumerator</c> class.
			/// </summary>
			/// <param name="tc"></param>
			internal Enumerator(LocalNamespaceListBase tc)
			{
				m_collection = tc;
				m_index = -1;
				m_version = tc.m_version;
			}
		/// <summary>
		///		Adds the elements of another <c>LocalNamespaceListBase</c> to the current <c>LocalNamespaceListBase</c>.
		/// </summary>
		/// <param name="x">The <c>LocalNamespaceListBase</c> whose elements should be added to the end of the current <c>LocalNamespaceListBase</c>.</param>
		/// <returns>The new <see cref="LocalNamespaceListBase.Count"/> of the <c>LocalNamespaceListBase</c>.</returns>
		public virtual int AddRange(LocalNamespaceListBase x)
		{
			if (m_count + x.Count >= m_array.Length)
				EnsureCapacity(m_count + x.Count);
			
			Array.Copy(x.m_array, 0, m_array, m_count, x.Count);
			m_count += x.Count;
			m_version++;

			return m_count;
		}
		/// <summary>
		///		Creates a shallow copy of the <see cref="LocalNamespaceListBase"/>.
		/// </summary>
		public virtual object Clone()
		{
			LocalNamespaceListBase newColl = new LocalNamespaceListBase(m_count);
			Array.Copy(m_array, 0, newColl.m_array, 0, m_count);
			newColl.m_count = m_count;
			newColl.m_version = m_version;

			return newColl;
		}
		/// <summary>
		///		Initializes a new instance of the <c>LocalNamespaceListBase</c> class
		///		that contains elements copied from the specified <c>LocalNamespaceListBase</c>.
		/// </summary>
		/// <param name="c">The <c>LocalNamespaceListBase</c> whose elements are copied to the new collection.</param>
		public LocalNamespaceListBase(LocalNamespaceListBase c)
		{
			m_array = new LocalNamespace[c.Count];
			AddRange(c);
		}
			public override int AddRange(LocalNamespaceListBase x)
			{
				throw new NotSupportedException("This is a Read Only Collection and can not be modified");
			}