/// <summary>
        /// Parse the ResolveNamesResponse structure.
        /// </summary>
        /// <param name="s">An stream containing ResolveNamesResponse 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.HasMinimalIds = ReadBoolean();
                if (this.HasMinimalIds)
                {
                    this.MinimalIdCount = ReadUint();
                    List<MinimalEntryID> miniEIDList = new List<MinimalEntryID>();
                    for (int i = 0; i < this.MinimalIdCount; i++)
                    {
                        MinimalEntryID miniEID = new MinimalEntryID();
                        miniEID.Parse(s);
                        miniEIDList.Add(miniEID);
                    }
                    this.MinimalIds = miniEIDList.ToArray();
                }
                this.HasRowsAndCols = ReadBoolean();
                if (this.HasRowsAndCols)
                {
                    this.PropertyTags = new LargePropertyTagArray();
                    this.PropertyTags.Parse(s);
                    this.RowCount = ReadUint();
                    List<AddressBookPropertyRow> addressPRList = new List<AddressBookPropertyRow>();
                    for (int i = 0; i < this.RowCount; i++)
                    {
                        AddressBookPropertyRow addressPR = new AddressBookPropertyRow(this.PropertyTags);
                        addressPR.Parse(s);
                        addressPRList.Add(addressPR);
                    }
                    this.RowData = addressPRList.ToArray();
                }
            }

            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }
 /// <summary>
 /// Parse the ModLinkAttRequest structure.
 /// </summary>
 /// <param name="s">An stream containing ModLinkAttRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.PropertyTag = new PropertyTag();
     this.PropertyTag.Parse(s);
     this.MinimalId = new MinimalEntryID();
     this.MinimalId.Parse(s);
     this.HasEntryIds = ReadBoolean();
     if (this.HasEntryIds)
     {
         this.EntryIdCount = ReadUint();
         List<object> tempObj = new List<object>();
         for (int i = 0; i < this.EntryIdCount; i++)
         {
             byte currentByte = ReadByte();
             s.Position -= 1;
             if (currentByte == 0x87)
             {
                 EphemeralEntryID ephemeralEntryID = new EphemeralEntryID();
                 ephemeralEntryID.Parse(s);
                 tempObj.Add(ephemeralEntryID);
             }
             else if (currentByte == 0x00)
             {
                 PermanentEntryID permanentEntryID = new PermanentEntryID();
                 permanentEntryID.Parse(s);
                 tempObj.Add(permanentEntryID);
             }
         }
         this.EntryIds = tempObj.ToArray();
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <summary>
        /// Parse the ResolveNamesRequest structure.
        /// </summary>
        /// <param name="s">An stream containing ResolveNamesRequest 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.PropertyTags = new LargePropertyTagArray();
                this.PropertyTags.Parse(s);
            }
            this.HasNames = ReadBoolean();
            if (this.HasNames)
            {
                this.Names = new WStringArray_r();
                this.Names.Parse(s);
            }

            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }
 /// <summary>
 /// Parse the UpdateStatResponse structure.
 /// </summary>
 /// <param name="s">An stream containing UpdateStatResponse 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.HasState = ReadBoolean();
         if (this.HasState)
         {
             this.State = new STAT();
             this.State.Parse(s);
             this.HasDelta = ReadBoolean();
             if (this.HasDelta)
             {
                 this.Delta = ReadINT32();
             }
         }
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <summary>
        /// Parse the HTTP payload of session.
        /// </summary>
        /// <param name="s">An stream of HTTP payload of session</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.Reserved = ReadUint();
            this.HasState = ReadByte();
            if (this.HasState != 0)
            {
                this.State = new STAT();
                this.State.Parse(s);
            }
            else
            {
                this.State = null;
            }

            this.MinimalId1 = new MinimalEntryID();
            this.MinimalId1.Parse(s);
            this.MinimalId2 = new MinimalEntryID();
            this.MinimalId2.Parse(s);

            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
            else
            {
                this.AuxiliaryBuffer = null;
            }
        }
 /// <summary>
 /// Parse the SeekEntriesRequest structure.
 /// </summary>
 /// <param name="s">An stream containing SeekEntriesRequest 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.HasTarget = ReadBoolean();
     if (this.HasTarget)
     {
         this.Target = new AddressBookTaggedPropertyValue();
         this.Target.Parse(s);
     }
     this.HasExplicitTable = ReadBoolean();
     if (this.HasExplicitTable)
     {
         this.ExplicitTableCount = ReadUint();
         List<MinimalEntryID> miniEIDList = new List<MinimalEntryID>();
         for (int i = 0; i < this.ExplicitTableCount; i++)
         {
             MinimalEntryID miniEID = new MinimalEntryID();
             miniEID.Parse(s);
             miniEIDList.Add(miniEID);
         }
         this.ExplicitTable = miniEIDList.ToArray();
     }
     this.HasColumns = ReadBoolean();
     if (this.HasColumns)
     {
         this.Columns = new LargePropertyTagArray();
         this.Columns.Parse(s);
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the HTTP payload of session.
 /// </summary>
 /// <param name="s">An stream of HTTP payload of session</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Reserved = ReadUint();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
     else
     {
         this.AuxiliaryBuffer = null;
     }
 }
        /// <summary>
        /// Parse the GetMatchesRequest structure.
        /// </summary>
        /// <param name="s">An stream containing GetMatchesRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.Reserved = ReadUint();
            this.HasState = ReadBoolean();
            if (this.HasState)
            {
                STAT stat = new STAT();
                stat.Parse(s);
                this.State = stat;
            }

            this.HasMinimalIds = ReadBoolean();
            if (this.HasMinimalIds)
            {
                this.MinimalIdCount = ReadUint();
                List<MinimalEntryID> me = new List<MinimalEntryID>();
                for (int i = 0; i < this.MinimalIdCount; i++)
                {
                    MinimalEntryID mEntryId = new MinimalEntryID();
                    mEntryId.Parse(s);
                    me.Add(mEntryId);
                }
                this.MinimalIds = me.ToArray();
            }

            this.InterfaceOptionFlags = ReadUint();

            this.HasFilter = ReadBoolean();
            if (this.HasFilter)
            {
                RestrictionType restriction = new RestrictionType();
                restriction.Parse(s);
                this.Filter = restriction;
            }

            this.HasPropertyName = ReadBoolean();
            if (this.HasPropertyName)
            {
                this.PropertyNameGuid = ReadGuid();
                this.PropertyNameId = ReadUint();
            }

            this.RowCount = ReadUint();
            this.HasColumns = ReadBoolean();
            if (this.HasColumns)
            {
                LargePropertyTagArray largePTA = new LargePropertyTagArray();
                largePTA.Parse(s);
                this.Columns = largePTA;
            }

            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
            else
            {
                this.AuxiliaryBuffer = null;
            }
        }
 /// <summary>
 /// Parse the GetPropListRequest structure.
 /// </summary>
 /// <param name="s">An stream containing GetPropListRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.MinimalId = new MinimalEntryID();
     this.MinimalId.Parse(s);
     this.CodePage = ReadUint();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <summary>
        /// Parse the HTTP payload of session.
        /// </summary>
        /// <param name="s">An stream of HTTP payload of session</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.Flags = ReadUint();
            this.RopBufferSize = ReadUint();
            this.RopBuffer = new rgbInputBuffer();
            this.RopBuffer.Parse(s);
            this.MaxRopOut = ReadUint();
            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
            else
            {
                this.AuxiliaryBuffer = null;
            }
        }
        /// <summary>
        /// Parse the GetMailboxUrlRequest structure.
        /// </summary>
        /// <param name="s">An stream containing GetMailboxUrlRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.Flags = ReadUint();
            this.ServerDn = new MAPIString(Encoding.Unicode);
            this.ServerDn.Parse(s);
            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }
 /// <summary>
 /// Parse the DnToMinIdRequest structure.
 /// </summary>
 /// <param name="s">An stream containing DnToMinIdRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Reserved = ReadUint();
     this.HasNames = ReadBoolean();
     this.NameCount = ReadUint();
     List<MAPIString> nameValues = new List<MAPIString>();
     for(int i=0; i< this.NameCount; i++)
     {
         MAPIString mapiString = new MAPIString(Encoding.ASCII);
         mapiString.Parse(s);
         nameValues.Add(mapiString);
     }
     this.NameValues = nameValues.ToArray();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
     else
     {
         this.AuxiliaryBuffer = null;
     }
 }
 /// <summary>
 /// Parse the HTTP payload of session.
 /// </summary>
 /// <param name="s">An stream of HTTP payload of session</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.PollsMax = ReadUint();
         this.RetryCount = ReadUint();
         this.RetryDelay = ReadUint();
         this.DnPrefix = new MAPIString(Encoding.ASCII);
         this.DnPrefix.Parse(s);
         this.DisplayName = new MAPIString(Encoding.Unicode);
         this.DisplayName.Parse(s);
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
     else
     {
         this.AuxiliaryBuffer = null;
     }
 }
        /// <summary>
        /// Parse the HTTP payload of session.
        /// </summary>
        /// <param name="s">An stream of HTTP payload of session</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.UserDn = new MAPIString(Encoding.ASCII);
            this.UserDn.Parse(s);
            this.Flags = ReadUint();
            this.DefaultCodePage = ReadUint();
            this.LcidSort = ReadUint();
            this.LcidString = ReadUint();
            this.AuxiliaryBufferSize = ReadUint();

            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
            else
            {
                this.AuxiliaryBuffer = null;
            }
        }
 /// <summary>
 /// Parse the ResortRestrictionRequest structure.
 /// </summary>
 /// <param name="s">An stream containing ResortRestrictionRequest 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.HasMinimalIds = ReadBoolean();
     if (this.HasMinimalIds)
     {
         this.MinimalIdCount = ReadUint();
         List<MinimalEntryID> miniEIDList = new List<MinimalEntryID>();
         for (int i = 0; i < this.MinimalIdCount; i++)
         {
             MinimalEntryID miniEID = new MinimalEntryID();
             miniEID.Parse(s);
             miniEIDList.Add(miniEID);
         }
         this.MinimalIds = miniEIDList.ToArray();
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the GetSpecialTableRequest structure.
 /// </summary>
 /// <param name="s">An stream containing GetSpecialTableRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.HasState = ReadBoolean();
     if (this.HasState)
     {
         this.State = new STAT();
         this.State.Parse(s);
     }
     this.HasVersion = ReadBoolean();
     if (this.HasVersion)
     {
         this.Version = ReadUint();
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the ResortRestrictionResponse structure.
 /// </summary>
 /// <param name="s">An stream containing ResortRestrictionResponse 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.HasState = ReadBoolean();
         if (this.HasState)
         {
             this.State = new STAT();
             this.State.Parse(s);
         }
         this.HasMinimalIds = ReadBoolean();
         if (this.HasMinimalIds)
         {
             this.MinimalIdCount = ReadUint();
             List<MinimalEntryID> miniEIDList = new List<MinimalEntryID>();
             for (int i = 0; i < this.MinimalIdCount; i++)
             {
                 MinimalEntryID miniEID = new MinimalEntryID();
                 miniEID.Parse(s);
                 miniEIDList.Add(miniEID);
             }
             this.MinimalIds = miniEIDList.ToArray();
         }
         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);
            }
        }
 /// <summary>
 /// Parse the SeekEntriesResponse structure.
 /// </summary>
 /// <param name="s">An stream containing SeekEntriesResponse 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.HasState = ReadBoolean();
         if (this.HasState)
         {
             this.State = new STAT();
             this.State.Parse(s);
             this.HasColsAndRows = ReadBoolean();
             if (this.HasColsAndRows)
             {
                 this.Columns = new LargePropertyTagArray();
                 this.Columns.Parse(s);
                 this.RowCount = ReadUint();
                 List<AddressBookPropertyRow> addressBookPropRow = new List<AddressBookPropertyRow>();
                 for (int i = 0; i < this.RowCount; i++)
                 {
                     AddressBookPropertyRow addressPropRow = new AddressBookPropertyRow(this.Columns);
                     addressPropRow.Parse(s);
                     addressBookPropRow.Add(addressPropRow);
                 }
                 this.RowData = addressBookPropRow.ToArray();
             }
         }
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the GetTemplateInfoRequest structure.
 /// </summary>
 /// <param name="s">An stream containing GetTemplateInfoRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.DisplayType = ReadUint();
     this.HasTemplateDn = ReadBoolean();
     if (this.HasTemplateDn)
     {
         this.TemplateDn = new MAPIString(Encoding.ASCII);
         this.TemplateDn.Parse(s);
     }
     this.CodePage = ReadUint();
     this.LocaleId = ReadUint();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the UpdateStatRequest structure.
 /// </summary>
 /// <param name="s">An stream containing UpdateStatRequest 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.DeltaRequested = ReadBoolean();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <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 HTTP payload of session.
        /// </summary>
        /// <param name="s">An stream of HTTP payload of session</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.ServerGuid = ReadGuid();
            }
            this.AuxiliaryBufferSize = ReadUint();

            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
            else
            {
                this.AuxiliaryBuffer = null;
            }
        }
        /// <summary>
        /// Parse the HTTP payload of session.
        /// </summary>
        /// <param name="s">An stream of HTTP payload of session</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.Flags = ReadUint();
            this.HasState = ReadByte();
            if (HasState != 0)
            {
                this.State = new STAT();
                this.State.Parse(s);
            }
            else
            {
                this.State = null;
            }

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