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

        /// <summary>
        /// Initializes a new instance of the <see cref="ReportPeriodTargetCore"/> class.
        /// </summary>
        /// <param name="parent">
        /// The parent. 
        /// </param>
        /// <param name="itemMutableObject">
        /// The sdmxObject. 
        /// </param>
        /// <exception cref="SdmxSemmanticException">
        /// Throws Validate exception.
        /// </exception>
        public ReportPeriodTargetCore(IIdentifiableObject parent, IReportPeriodTargetMutableObject itemMutableObject)
            : base(itemMutableObject, parent)
        {
            this.textType = TextType.GetFromEnum(TextEnumType.ObservationalTimePeriod);
            if (itemMutableObject.StartTime != null)
            {
                this.startTime = new SdmxDateCore(itemMutableObject.StartTime, TimeFormatEnumType.DateTime);
            }

            if (itemMutableObject.EndTime != null)
            {
                this.endTime = new SdmxDateCore(itemMutableObject.EndTime, TimeFormatEnumType.DateTime);
            }

            if (itemMutableObject.TextType != null)
            {
                this.textType = itemMutableObject.TextType;
            }

            try
            {
                this.Validate();
            }
            catch (SdmxSemmanticException e)
            {
                throw new SdmxSemmanticException(e, ExceptionCode.FailValidation, this);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MetadataTargetMutableCore"/> class.
        /// </summary>
        /// <param name="objTarget">
        /// The obj target.
        /// </param>
        public MetadataTargetMutableCore(IMetadataTarget objTarget)
            : base(objTarget)
        {
            this._identifiableTarget = new List<IIdentifiableTargetMutableObject>();
            if (objTarget.KeyDescriptorValuesTarget != null)
            {
                this._keyDescriptorValuesTarget =
                    new KeyDescriptorValuesTargetMutableCore(objTarget.KeyDescriptorValuesTarget);
            }

            if (objTarget.DataSetTarget != null)
            {
                this._dataSetTarget = new DataSetTargetMutableCore(objTarget.DataSetTarget);
            }

            if (objTarget.ReportPeriodTarget != null)
            {
                this._reportPeriodTarget = new ReportPeriodTargetMutableCore(objTarget.ReportPeriodTarget);
            }

            if (objTarget.ConstraintContentTarget != null)
            {
                this._constraintContentTarget = new ConstraintContentTargetMutableCore(
                    objTarget.ConstraintContentTarget);
            }

            if (objTarget.IdentifiableTarget != null)
            {
                foreach (IIdentifiableTarget identifiableTarget in objTarget.IdentifiableTarget)
                {
                    this._identifiableTarget.Add(new IdentifiableTargetMutableCore(identifiableTarget));
                }
            }
        }