public virtual void Deserialize(IntermediateFormatReader reader)
        {
            reader.RegisterDeclaration(OnDemandMetadata.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.CommonSubReportInfos:
                    this.m_commonSubReportInfoMap = reader.ReadStringRIFObjectDictionary <CommonSubReportInfo>();
                    break;

                case MemberName.SubReportInfos:
                    this.m_subReportInfoMap = reader.ReadStringRIFObjectDictionary <SubReportInfo>();
                    break;

                case MemberName.ReportSnapshot:
                    this.m_reportSnapshot = (AspNetCore.ReportingServices.ReportIntermediateFormat.ReportSnapshot)reader.ReadRIFObject();
                    break;

                case MemberName.GroupTreePartitionOffsets:
                {
                    List <long> list = reader.ReadListOfPrimitives <long>();
                    if (list != null)
                    {
                        this.m_groupTreePartitions = new TreePartitionManager(list);
                    }
                    break;
                }

                case MemberName.DataChunkMap:
                    this.m_dataChunkMap = reader.ReadStringRIFObjectDictionary <DataSetInstance>();
                    break;

                case MemberName.CachedExternalImages:
                    this.m_cachedExternalImages = reader.ReadStringRIFObjectDictionary <AspNetCore.ReportingServices.ReportIntermediateFormat.ImageInfo>();
                    break;

                case MemberName.CachedShapefiles:
                    this.m_cachedShapefiles = reader.ReadStringRIFObjectDictionary <ShapefileInfo>();
                    break;

                case MemberName.TransparentImageChunkName:
                    this.m_transparentImageChunkName = reader.ReadString();
                    break;

                case MemberName.GroupTreeRootOffset:
                    this.m_groupTreeRootOffset = reader.ReadInt64();
                    break;

                case MemberName.TablixProcessingComplete:
                    this.m_tablixProcessingComplete = reader.ReadStringBoolArrayDictionary();
                    break;

                case MemberName.GroupTreePartitions:
                    this.m_groupTreePartitions = (TreePartitionManager)reader.ReadRIFObject();
                    break;

                case MemberName.LookupPartitions:
                    this.m_lookupPartitions = (TreePartitionManager)reader.ReadRIFObject();
                    break;

                case MemberName.LastAssignedGlobalID:
                    this.m_lastAssignedGlobalID = reader.ReadInt32();
                    break;

                case MemberName.UpdatedVariableValues:
                    this.m_updatedVariableValues = reader.ReadStringRIFObjectDictionary <UpdatedVariableValues>();
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }