/// <summary>
        /// The process codelist map.
        /// </summary>
        /// <param name="structureSetType">
        /// The structure set type.
        /// </param>
        /// <param name="buildFrom">
        /// The build from.
        /// </param>
        private void ProcessCodelistMap(StructureSetType structureSetType, IItemSchemeMapObject buildFrom)
        {
            var codelistMap = new CodelistMapType();
            structureSetType.CodelistMap = codelistMap;

            string str0 = buildFrom.Id;
            if (!string.IsNullOrWhiteSpace(str0))
            {
                codelistMap.id = buildFrom.Id;
            }

            IList<ITextTypeWrapper> names = buildFrom.Names;
            if (ObjectUtil.ValidCollection(names))
            {
                codelistMap.Name = this.GetTextType(names);
            }

            IList<ITextTypeWrapper> descriptions = buildFrom.Descriptions;
            if (ObjectUtil.ValidCollection(descriptions))
            {
                codelistMap.Description = this.GetTextType(descriptions);
            }

            if (buildFrom.SourceRef != null)
            {
                if (buildFrom.SourceRef.TargetReference.EnumType == SdmxStructureEnumType.CodeList)
                {
                    var refType = new CodelistRefType();
                    codelistMap.CodelistRef = refType;
                    SetCodelistRefAttributes(refType, buildFrom.SourceRef);
                }
                else if (buildFrom.SourceRef.TargetReference.EnumType == SdmxStructureEnumType.HierarchicalCodelist)
                {
                    var refType0 = new HierarchicalCodelistRefType();
                    codelistMap.HierarchicalCodelistRef = refType0;
                    SetHclRefAttributes(refType0, buildFrom.SourceRef);
                }
            }

            if (buildFrom.TargetRef != null)
            {
                if (buildFrom.TargetRef.TargetReference.EnumType == SdmxStructureEnumType.CodeList)
                {
                    var refType1 = new CodelistRefType();
                    codelistMap.TargetCodelistRef = refType1;
                    SetCodelistRefAttributes(refType1, buildFrom.TargetRef);
                }
                else if (buildFrom.TargetRef.TargetReference.EnumType == SdmxStructureEnumType.HierarchicalCodelist)
                {
                    var refType2 = new HierarchicalCodelistRefType();
                    codelistMap.TargetHierarchicalCodelistRef = refType2;
                    SetHclRefAttributes(refType2, buildFrom.TargetRef);
                }
            }

            IList<IItemMap> itemMapBeans = buildFrom.Items;
            if (ObjectUtil.ValidCollection(itemMapBeans))
            {
                /* foreach */
                foreach (IItemMap itemMapBean in itemMapBeans)
                {
                    var codeMaptype = new CodeMapType();
                    codelistMap.CodeMap.Add(codeMaptype);
                    string value1 = itemMapBean.SourceId;
                    if (!string.IsNullOrWhiteSpace(value1))
                    {
                        codeMaptype.MapCodeRef = itemMapBean.SourceId;
                    }

                    string value = itemMapBean.TargetId;
                    if (!string.IsNullOrWhiteSpace(value))
                    {
                        codeMaptype.MapTargetCodeRef = itemMapBean.TargetId;
                    }
                }
            }

            if (this.HasAnnotations(buildFrom))
            {
                codelistMap.Annotations = this.GetAnnotationsType(buildFrom);
            }
        }
        /// <summary>
        /// Adds new codelist ref submission result.
        /// </summary>
        /// <param name="returnType">
        /// The return type.
        /// </param>
        /// <param name="structureReference">
        /// The structure reference
        /// </param>
        /// <param name="exception">
        /// The exception.
        /// </param>
        private static void AddNewCodelistRefSubmissionResult(
            SubmitStructureResponseType returnType, IStructureReference structureReference, Exception exception)
        {
            SubmissionResultType result = GetNewSubmissionResultType(returnType, exception);
            var submittedStructure = new SubmittedStructureType();
            result.SubmittedStructure = submittedStructure;
            var refType = new CodelistRefType();
            submittedStructure.CodelistRef = refType;

            IMaintainableRefObject maintainableReference = structureReference.MaintainableReference;
            refType.AgencyID = maintainableReference.AgencyId;
            refType.CodelistID = maintainableReference.MaintainableId;
            if (ObjectUtil.ValidString(structureReference.MaintainableUrn))
            {
                refType.URN = structureReference.MaintainableUrn;
            }

            if (!string.IsNullOrWhiteSpace(maintainableReference.Version))
            {
                refType.Version = maintainableReference.Version;
            }
        }
        /// <summary>
        /// The set codelist ref attributes.
        /// </summary>
        /// <param name="refType">
        /// The ref type.
        /// </param>
        /// <param name="xref">
        /// The crossReference.
        /// </param>
        private static void SetCodelistRefAttributes(CodelistRefType refType, IStructureReference xref)
        {
            IMaintainableRefObject maintainableReference = xref.MaintainableReference;
            string str0 = maintainableReference.AgencyId;
            if (!string.IsNullOrWhiteSpace(str0))
            {
                refType.AgencyID = maintainableReference.AgencyId;
            }

            string str1 = maintainableReference.MaintainableId;
            if (!string.IsNullOrWhiteSpace(str1))
            {
                refType.CodelistID = maintainableReference.MaintainableId;
            }

            refType.URN = xref.TargetUrn;

            string str3 = maintainableReference.Version;
            if (!string.IsNullOrWhiteSpace(str3))
            {
                refType.Version = maintainableReference.Version;
            }
        }