private static void ReadPageItemProperties(PageItemHelper item, BinaryReader reader, long offsetEndPage)
        {
            RSTrace.RenderingTracer.Assert(item != null, "The item helper is null.");
            RSTrace.RenderingTracer.Assert(reader != null, "The pagination stream is null.");
            RSTrace.RenderingTracer.Assert(offsetEndPage > 0, "The pagination stream is corrupt.");
            byte b = reader.ReadByte();

            while (b != 255 && reader.BaseStream.Position <= offsetEndPage)
            {
                item.ProcessPageItemToken(b, reader, offsetEndPage);
                b = reader.ReadByte();
            }
            if (reader.BaseStream.Position <= offsetEndPage)
            {
                return;
            }
            throw new InvalidDataException(SPBRes.InvalidPaginationStream);
        }
        private static void ReadSubReportProperties(PageItemHelper item, BinaryReader reader, long offsetEndPage)
        {
            RSTrace.RenderingTracer.Assert(item != null, "The item helper is null.");
            RSTrace.RenderingTracer.Assert(reader != null, "The pagination stream is null.");
            RSTrace.RenderingTracer.Assert(offsetEndPage > 0, "The pagination stream is corrupt.");
            byte b = reader.ReadByte();

            while (b != 255 && reader.BaseStream.Position <= offsetEndPage)
            {
                switch (b)
                {
                case 23:
                    item.BodyIndex = reader.ReadInt32();
                    break;

                case 11:
                    item.PrevPageEnd = reader.ReadDouble();
                    break;

                case 19:
                {
                    byte b2 = reader.ReadByte();
                    if (b2 != 7)
                    {
                        throw new InvalidDataException(SPBRes.InvalidTokenPaginationItems(b2.ToString("x", CultureInfo.InvariantCulture)));
                    }
                    PageItemContainerHelper pageItemContainerHelper = new PageItemContainerHelper(b2);
                    PageItemHelper.ReadPageItemContainerProperties(pageItemContainerHelper, reader, offsetEndPage);
                    item.ChildPage = pageItemContainerHelper;
                    break;
                }

                default:
                    item.ProcessPageItemToken(b, reader, offsetEndPage);
                    break;
                }
                b = reader.ReadByte();
            }
            if (reader.BaseStream.Position <= offsetEndPage)
            {
                return;
            }
            throw new InvalidDataException(SPBRes.InvalidPaginationStream);
        }