/// <summary>
        /// Parse the DateTimeArray_r payload of session.
        /// </summary>
        /// <param name="s">The stream to parse</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.cValues = ReadUint();
            List <PtypTime> temBytes = new List <PtypTime>();

            for (ulong i = 0; i < this.cValues; i++)
            {
                PtypTime pt = new PtypTime();
                pt.Parse(s);
                temBytes.Add(pt);
            }
            this.lpft = temBytes.ToArray();
        }
        /// <summary>
        /// Parse the PROP_VAL_UNION payload of session.
        /// </summary>
        /// <param name="s">The stream to parse</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            switch (this.tag)
            {
            case 0x00000002:
                this.i = ReadINT16();
                break;

            case 0x00000003:
                this.l = ReadINT32();
                break;

            case 0x0000000B:
                this.b = ReadUshort();
                break;

            case 0x0000001E:
                this.lpszA = new String_r();
                this.lpszA.Parse(s);
                break;

            case 0x00000102:
                this.bin = new Binary_r();
                this.bin.Parse(s);
                break;

            case 0x0000001F:
                this.lpszW = new WString_r();
                this.lpszW.Parse(s);
                break;

            case 0x00000048:
                this.lpguid = new FlatUID_r();
                this.lpguid.Parse(s);
                break;

            case 0x00000040:
                this.ft = new PtypTime();
                this.ft.Parse(s);
                break;

            case 0x0000000A:
                this.err = ReadINT32();
                break;

            case 0x00001002:
                this.MVi = new ShortArray_r();
                this.MVi.Parse(s);
                break;

            case 0x00001003:
                this.MVl = new LongArray_r();
                this.MVl.Parse(s);
                break;

            case 0x0000101E:
                this.MVszA = new StringArray_r();
                this.MVszA.Parse(s);
                break;

            case 0x00001102:
                this.MVbin = new BinaryArray_r();
                this.MVbin.Parse(s);
                break;

            case 0x00001048:
                this.MVguid = new FlatUIDArray_r();
                this.MVguid.Parse(s);
                break;

            case 0x0000101F:
                this.MVszW = new WStringArray_r();
                this.MVszW.Parse(s);
                break;

            case 0x00001040:
                this.MVft = new DateTimeArray_r();
                this.MVft.Parse(s);
                break;

            case 0x00000001:
            case 0x0000000D:
                this.lReserved = ReadINT32();
                break;

            default:
                break;
            }
        }