/// <summary>
		/// Gets the named thread context stack
		/// </summary>
		/// <value>
		/// The named stack
		/// </value>
		/// <remarks>
		/// <para>
		/// Gets the named thread context stack
		/// </para>
		/// </remarks>
		public ThreadContextStack this[string key] {
			get {
				ThreadContextStack stack = null;

				object propertyValue = m_properties[key];
				if (propertyValue == null) {
					// Stack does not exist, create
					stack = new ThreadContextStack();
					m_properties[key] = stack;
				} else {
					// Look for existing stack
					stack = propertyValue as ThreadContextStack;
					if (stack == null) {
						// Property is not set to a stack!
						string propertyValueString = SystemInfo.NullText;

						try {
							propertyValueString = propertyValue.ToString();
						} catch {
						}

						LogLog.Error(declaringType, "ThreadContextStacks: Request for stack named [" + key + "] failed because a property with the same name exists which is a [" + propertyValue.GetType().Name + "] with value [" + propertyValueString + "]");

						stack = new ThreadContextStack();
					}
				}

				return stack;
			}
		}
        /// <summary>
        /// Gets the named thread context stack
        /// </summary>
        /// <value>
        /// The named stack
        /// </value>
        /// <remarks>
        /// <para>
        /// Gets the named thread context stack
        /// </para>
        /// </remarks>
        public ThreadContextStack this[string key] {
            get {
                ThreadContextStack stack = null;

                object propertyValue = m_properties[key];
                if (propertyValue == null)
                {
                    // Stack does not exist, create
                    stack             = new ThreadContextStack();
                    m_properties[key] = stack;
                }
                else
                {
                    // Look for existing stack
                    stack = propertyValue as ThreadContextStack;
                    if (stack == null)
                    {
                        // Property is not set to a stack!
                        string propertyValueString = SystemInfo.NullText;

                        try {
                            propertyValueString = propertyValue.ToString();
                        } catch {
                        }

                        LogLog.Error(declaringType, "ThreadContextStacks: Request for stack named [" + key + "] failed because a property with the same name exists which is a [" + propertyValue.GetType().Name + "] with value [" + propertyValueString + "]");

                        stack = new ThreadContextStack();
                    }
                }

                return(stack);
            }
        }