///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM IMMUTABLE OBJECT                 //////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="KeyValuesMutableImpl"/> class.
        /// </summary>
        /// <param name="immutable">
        /// The immutable. 
        /// </param>
        public KeyValuesMutableImpl(IKeyValues immutable)
            : base(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.KeyValues))
        {
            this.values = new List<string>(immutable.Values);
            this.cascadeList = new List<string>();
            this.id = immutable.Id;
            
            foreach (string each in this.values)
            {
                if (immutable.IsCascadeValue(each))
                {
                    this.cascadeList.Add(each);
                }
            }

            if (immutable.TimeRange != null)
            {
                this.timeRange = new TimeRangeMutableCore(immutable.TimeRange);
            }
        }