/// <summary>
        /// Store MIME enity to the specified stream.
        /// </summary>
        /// <param name="stream">Stream where to store MIME entity. Storing starts form stream current position.</param>
        /// <param name="headerWordEncoder">Header 8-bit words ecnoder. Value null means that words are not encoded.</param>
        /// <param name="headerParmetersCharset">Charset to use to encode 8-bit header parameters. Value null means parameters not encoded.</param>
        /// <param name="headerReencode">If true always specified encoding is used for header. If false and header field value not modified,
        /// original encoding is kept.</param>
        /// <exception cref="ArgumentNullException">Is raised when <b>stream</b> is null.</exception>
        public void ToStream(Stream stream, MIME_Encoding_EncodedWord headerWordEncoder, Encoding headerParmetersCharset, bool headerReencode)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            m_pHeader.ToStream(stream, headerWordEncoder, headerParmetersCharset, headerReencode);
            stream.Write(new byte[] { (int)'\r', (int)'\n' }, 0, 2);
            m_pBody.ToStream(stream, headerWordEncoder, headerParmetersCharset, headerReencode);
        }
        /// <summary>
        /// Stores MIME entity body to the specified stream.
        /// </summary>
        /// <param name="stream">Stream where to store body data.</param>
        /// <param name="headerWordEncoder">Header 8-bit words ecnoder. Value null means that words are not encoded.</param>
        /// <param name="headerParmetersCharset">Charset to use to encode 8-bit header parameters. Value null means parameters not encoded.</param>
        /// <param name="headerReencode">If true always specified encoding is used for header. If false and header field value not modified,
        /// original encoding is kept.</param>
        /// <exception cref="ArgumentNullException">Is raised when <b>stream</b> is null reference.</exception>
        internal protected override void ToStream(Stream stream, MIME_Encoding_EncodedWord headerWordEncoder, Encoding headerParmetersCharset, bool headerReencode)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            m_pMessageFields.ToStream(stream, headerWordEncoder, headerParmetersCharset, headerReencode);
            stream.Write(new byte[] { (byte)'\r', (byte)'\n' }, 0, 2);
            foreach (MIME_h_Collection recipientBlock in m_pRecipientBlocks)
            {
                recipientBlock.ToStream(stream, headerWordEncoder, headerParmetersCharset, headerReencode);
                stream.Write(new byte[] { (byte)'\r', (byte)'\n' }, 0, 2);
            }
        }