/// <summary>
        /// Writes a header line for each header flag that is specified in Headers
        /// </summary>
        protected virtual void WriteHeaders(bool flagEntry)
        {
            StackFrame frame = new StackFrame(_stackFramesToSkip, true);

            if (!_hasWrittenDescriptor)
            {
                _hasWrittenDescriptor = true;
                base.WriteLine("#===============================================================================");
                base.WriteLine("# Log file starting...");
                base.WriteLine("# This file contains diagnostic information.");
                base.WriteLine("# Please do not edit this file.");
                base.WriteLine(string.Format("# {0} at {1}", DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString()));
                base.WriteLine("#===============================================================================");
            }

            base.WriteLine(string.Empty);
            foreach (object header in _headerValues)
            {
                if (FlagsHelper.IsFlagSet((int)_headers, (int)header))
                {
                    string headerName  = this.GetHeaderDescription((InstanceTraceListenerHeaders)header);
                    string headerValue = this.GetHeaderValue((InstanceTraceListenerHeaders)header, frame);
                    string line        = this.FormatHeaderLine(flagEntry, headerName, headerValue);
                    base.WriteLine(line);
                }
            }
            base.Write(this.GetFlag(flagEntry) /* + ">" */);
        }