/// <summary>
        /// Parse the GetTemplateInfoResponse structure.
        /// </summary>
        /// <param name="s">An stream containing GetTemplateInfoResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            List<MAPIString> metaTags = new List<MAPIString>();
            List<MAPIString> additionalHeaders = new List<MAPIString>();
            ParseMAPIMethod parseMAPIMethod = new ParseMAPIMethod();
            parseMAPIMethod.ParseAddtionlHeader(s, out metaTags, out additionalHeaders);
            this.MetaTags = metaTags.ToArray();
            this.AdditionalHeaders = additionalHeaders.ToArray();
            this.StatusCode = ReadUint();

            if (this.StatusCode == 0)
            {
                this.ErrorCode = ReadUint();
                this.CodePage = ReadUint();
                this.HasRow = ReadBoolean();
                if (this.HasRow)
                {
                    this.Row = new AddressBookPropertyValueList();
                    this.Row.Parse(s);
                }
            }
            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }
 /// <summary>
 /// Parse the ModPropsRequest structure.
 /// </summary>
 /// <param name="s">An stream containing ModPropsRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Reserved = ReadUint();
     this.HasState = ReadBoolean();
     if (this.HasState)
     {
         this.State = new STAT();
         this.State.Parse(s);
     }
     this.HasPropertyTags = ReadBoolean();
     if (this.HasPropertyTags)
     {
         this.PropertiesTags = new LargePropertyTagArray();
         this.PropertiesTags.Parse(s);
     }
     this.HasPropertyValues = ReadBoolean();
     if (this.HasPropertyValues)
     {
         this.PropertyValues = new AddressBookPropertyValueList();
         this.PropertyValues.Parse(s);
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <summary>
        /// Parse the GetSpecialTableResponse structure.
        /// </summary>
        /// <param name="s">An stream containing GetSpecialTableResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            List<MAPIString> metaTags = new List<MAPIString>();
            List<MAPIString> additionalHeaders = new List<MAPIString>();
            ParseMAPIMethod parseMAPIMethod = new ParseMAPIMethod();
            parseMAPIMethod.ParseAddtionlHeader(s, out metaTags, out additionalHeaders);
            this.MetaTags = metaTags.ToArray();
            this.AdditionalHeaders = additionalHeaders.ToArray();

            this.StatusCode = ReadUint();
            if (this.StatusCode == 0)
            {
                this.ErrorCode = ReadUint();
                this.CodePage = ReadUint();
                this.HasVersion = ReadBoolean();
                if (this.HasVersion)
                {
                    this.Version = ReadUint();
                }
                this.HasRows = ReadBoolean();
                if (this.HasRows)
                {
                    this.RowsCount = ReadUint();
                    List<AddressBookPropertyValueList> listAddressValue = new List<AddressBookPropertyValueList>();
                    for (int i = 0; i < this.RowsCount; i++)
                    {
                        AddressBookPropertyValueList addressValueList = new AddressBookPropertyValueList();
                        addressValueList.Parse(s);
                        listAddressValue.Add(addressValueList);
                    }
                    this.Rows = listAddressValue.ToArray();
                }
            }

            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }