///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM MUTABLE OBJECTS              //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        #region Constructors and Destructors

        /// <summary>
        /// Initializes a new instance of the <see cref="GroupCore"/> class.
        /// </summary>
        /// <param name="itemMutableObject">
        /// The agencyScheme. 
        /// </param>
        /// <param name="parent">
        /// The parent. 
        /// </param>
        public GroupCore(IGroupMutableObject itemMutableObject, ISdmxStructure parent)
            : base(itemMutableObject, parent)
        {
            this.dimensionRef = new List<string>();
            if (itemMutableObject.AttachmentConstraintRef != null)
            {
                this.attachmentConstraintRef = new CrossReferenceImpl(this, itemMutableObject.AttachmentConstraintRef);
            }

            if (itemMutableObject.DimensionRef != null)
            {
                this.dimensionRef = new List<string>(itemMutableObject.DimensionRef);
            }

            this.ValidateGroupAttributes();
        }
        /// <summary>
        /// Write a KeyFamily/Components/Group element from a IGroupMutableObject
        /// </summary>
        /// <param name="group">
        /// The IGroupMutableObject object to write
        /// </param>
        private void WriteGroup(IGroupMutableObject group)
        {
            this.WriteStartElement(this.DefaultPrefix, ElementNameTable.Group);
            this.WriteAttributeString(AttributeNameTable.id, group.Id);

            foreach (string dim in group.DimensionRef)
            {
                this.TryToWriteElement(this.DefaultPrefix, ElementNameTable.DimensionRef, dim);
            }

            ////TryToWriteElement(this.DefaultPrefix, ElementNameTable.DimensionRefs, group.AttachmentConstraintRef);
            this.WriteEndElement();
        }
        /// <summary>
        /// Handles the Group element child elements
        /// </summary>
        /// <param name="parent">
        /// The parent IGroupMutableObject object
        /// </param>
        /// <param name="localName">
        /// The name of the current xml element
        /// </param>
        private void HandleTextChildElement(IGroupMutableObject parent, object localName)
        {
            if (NameTableCache.IsElement(localName, ElementNameTable.DimensionRef))
            {
                parent.DimensionRef.Add(this.Text);
            }

            //// NOTE SDMX v2  supported in Commo
            ////else if (NameTableCache.IsElement(localName, ElementNameTable.AttachmentConstraintRef))
            ////{
            ////    parent.AttachmentConstraintRef = this.Text;
            ////}
        }