public void Serialize(IntermediateFormatWriter writer)
        {
            writer.RegisterDeclaration(m_Declaration);
            while (writer.NextMember())
            {
                switch (writer.CurrentMember.MemberName)
                {
                case MemberName.Name:
                    writer.Write(m_name);
                    break;

                case MemberName.ID:
                    writer.Write(m_ID);
                    break;

                case MemberName.GroupExpressions:
                    writer.Write(m_groupExpressions);
                    break;

                case MemberName.GroupLabel:
                    writer.Write(m_groupLabel);
                    break;

                case MemberName.SortDirections:
                    writer.WriteListOfPrimitives(m_sortDirections);
                    break;

                case MemberName.Aggregates:
                    writer.Write(m_aggregates);
                    break;

                case MemberName.GroupAndSort:
                    writer.Write(m_groupAndSort);
                    break;

                case MemberName.Filters:
                    writer.Write(m_filters);
                    break;

                case MemberName.ReportItemsWithHideDuplicates:
                    writer.WriteListOfReferences(m_reportItemsWithHideDuplicates);
                    break;

                case MemberName.Parent:
                    writer.Write(m_parent);
                    break;

                case MemberName.RecursiveAggregates:
                    writer.Write(m_recursiveAggregates);
                    break;

                case MemberName.PostSortAggregates:
                    writer.Write(m_postSortAggregates);
                    break;

                case MemberName.DataElementName:
                    writer.Write(m_dataElementName);
                    break;

                case MemberName.DataElementOutput:
                    writer.WriteEnum((int)m_dataElementOutput);
                    break;

                case MemberName.SaveGroupExprValues:
                    writer.Write(m_saveGroupExprValues);
                    break;

                case MemberName.UserSortExpressions:
                    writer.Write(m_userSortExpressions);
                    break;

                case MemberName.NonDetailSortFiltersInScope:
                    writer.WriteInt32PrimitiveListHashtable <int>(m_nonDetailSortFiltersInScope);
                    break;

                case MemberName.DetailSortFiltersInScope:
                    writer.WriteInt32PrimitiveListHashtable <int>(m_detailSortFiltersInScope);
                    break;

                case MemberName.Variables:
                    writer.Write(m_variables);
                    break;

                case MemberName.PageBreak:
                    writer.Write(m_pageBreak);
                    break;

                case MemberName.PageName:
                    writer.Write(m_pageName);
                    break;

                case MemberName.DomainScope:
                    writer.Write(m_domainScope);
                    break;

                case MemberName.ScopeIDForDomainScope:
                    writer.Write(m_scopeIDForDomainScope);
                    break;

                case MemberName.NaturalGroup:
                    writer.Write(m_naturalGroup);
                    break;

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