/// <summary>
        ///     Builds the cross DSD.
        /// </summary>
        /// <returns>The XS DSD</returns>
        private static ICrossSectionalDataStructureObject BuildCrossDsdNoTimeMeasure()
        {
            ICrossSectionalDataStructureMutableObject dsdMutableObject = new CrossSectionalDataStructureMutableCore { AgencyId = "TEST", Id = "TEST_DSD", Version = "1.0" };

            dsdMutableObject.AddName("en", "Test data");

            // FREQ="Q" ADJUSTMENT="N" STS_ACTIVITY="A" 
            dsdMutableObject.AddDimension(
                new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "FREQ"), 
                new StructureReferenceImpl("SDMX", "CL_FREQ", "1.0", SdmxStructureEnumType.CodeList));
            dsdMutableObject.AddDimension(
                new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "ADJUSTMENT"), 
                new StructureReferenceImpl("SDMX", "CL_ADJUSTMENT", "1.0", SdmxStructureEnumType.CodeList));
            dsdMutableObject.AddDimension(
                new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "STS_ACTIVITY"), 
                new StructureReferenceImpl("STS", "CL_STS_ACTIVITY", "1.0", SdmxStructureEnumType.CodeList)).MeasureDimension = true;

            dsdMutableObject.AddPrimaryMeasure(new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "OBS_VALUE"));
            dsdMutableObject.AddCrossSectionalMeasures(
                new CrossSectionalMeasureMutableCore
                    {
                        Code = "A", 
                        ConceptRef = new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "A"), 
                        MeasureDimension = "STS_ACTIVITY"
                    });
            dsdMutableObject.AddCrossSectionalMeasures(
                new CrossSectionalMeasureMutableCore
                    {
                        Code = "B", 
                        ConceptRef = new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "B"), 
                        MeasureDimension = "STS_ACTIVITY"
                    });
            dsdMutableObject.AddCrossSectionalAttachGroup("FREQ");
            dsdMutableObject.AddCrossSectionalAttachSection("ADJUSTMENT");
            var attributeMutableObject = dsdMutableObject.AddAttribute(
                new StructureReferenceImpl("TEST", "TEST_CS", "1.0", SdmxStructureEnumType.Concept, "DECIMALS"), 
                new StructureReferenceImpl("STS", "CL_DECIMALS", "1.0", SdmxStructureEnumType.CodeList));
            dsdMutableObject.AddCrossSectionalAttachObservation("DECIMALS");
            attributeMutableObject.AttachmentLevel = AttributeAttachmentLevel.Observation;
            attributeMutableObject.AssignmentStatus = "Mandatory";
            return dsdMutableObject.ImmutableInstance;
        }
        /// <summary>
        /// Handles the Structure top level elements
        ///     This includes Codelist
        /// </summary>
        /// <param name="parent">
        /// The parent <see cref="IMutableObjects"/>
        /// </param>
        /// <param name="localName">
        /// The name of the current xml element
        /// </param>
        /// <returns>
        /// The <see cref="StructureReaderBaseV20.ElementActions"/>.
        /// </returns>
        protected override ElementActions HandleTopLevel(IMutableObjects parent, object localName)
        {
            ElementActions actions = null;
            if (NameTableCache.IsElement(localName, ElementNameTable.KeyFamily))
            {
                var kf = new CrossSectionalDataStructureMutableCore();
                ParseAttributes(kf, this.Attributes);

                //// NOTE this is handled at HandleEndElement because we need to decide if it will remain a XS DSD or should it be converted to a non XS (2.0) one.
                //// parent.AddDataStructure(kf);
                this._currentDsd = kf;
                actions = this.AddNameableAction(kf, this.HandleChildElements);
            }

            return actions;
        }