/// <summary>
        /// Initializes a new instance of the <see cref="ComplexIdentifiableReferenceCore"/> class.
        /// </summary>
        /// <param name="id">
        /// The id. 
        /// </param>
        /// <param name="structureType">
        /// The structure type. 
        /// </param>
        /// <param name="annotationRef">
        /// The annotation ref. 
        /// </param> 
        /// <param name="nameRef">
        /// The name ref. 
        /// </param>
        /// <param name="descriptionRef">
        /// The description ref. 
        /// </param>
        /// <param name="childReference">
        /// The child reference. 
        /// </param> 
        public ComplexIdentifiableReferenceCore(IComplexTextReference id, SdmxStructureType structureType,
			IComplexAnnotationReference annotationRef, IComplexTextReference nameRef, IComplexTextReference descriptionRef,
			IComplexIdentifiableReferenceObject childReference) 
	    	: base(structureType, annotationRef, nameRef, descriptionRef)
	    {	
	        	this._id = id;
	        	this._childReference = childReference;
	    }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComplexStructureReferenceCore"/> class.
        /// </summary>
        /// <param name="agencyId">
        /// The agency id. 
        /// </param>
        /// <param name="id">
        /// The id. 
        /// </param>
        /// <param name="versionRef">
        /// The version ref. 
        /// </param>
        /// <param name="structureType">
        /// The structure type. 
        /// </param>
        /// <param name="annotationRef">
        /// The annotation ref. 
        /// </param>
        /// <param name="nameRef">
        /// The name ref. 
        /// </param>
        /// <param name="descriptionRef">
        /// The description ref. 
        /// </param>
        /// <param name="childRef">
        /// The child ref. 
        /// </param>
        public ComplexStructureReferenceCore(IComplexTextReference agencyId, IComplexTextReference id,
            IComplexVersionReference versionRef, SdmxStructureType structureType, IComplexAnnotationReference annotationRef,
			IComplexTextReference nameRef, IComplexTextReference descriptionRef, IComplexIdentifiableReferenceObject childRef) 
		: base(structureType, annotationRef, nameRef, descriptionRef)
		{
		this._id = id;
		this._agencyId = agencyId;
		this._versionRef = versionRef;
		//TODO childRef defaults && null check...
		this._childRef = childRef;
	    }
       /// <summary>
       /// Initializes a new instance of the <see cref="ComplexNameableReferenceCore"/> class.
       /// </summary>
       /// <param name="structureType">
       /// The structure type. 
       /// </param>
       /// <param name="annotationRef">
       /// The annotation ref. 
       /// </param>
       /// <param name="nameRef">
       /// The name ref. 
       /// </param>
       /// <param name="descriptionRef">
       /// The description ref. 
       /// </param>
        public ComplexNameableReferenceCore(SdmxStructureType structureType, IComplexAnnotationReference annotationRef,
			IComplexTextReference nameRef, IComplexTextReference descriptionRef)
        {
		
	  	   if ( structureType == null )
           {
		    	throw new SdmxSemmanticException("Null structure type provided for reference in query.");
		   }
		
		   this._structureType = structureType;	
		   if (annotationRef != null) 
           {
		    	this._annotationRef = annotationRef;
		   }
	  	   if (nameRef != null) 
           {
		    	this._nameRef = nameRef;	
		   }
		   if (descriptionRef != null) 
           {
			    this._descriptionRef = descriptionRef;
		   }
	  }
 /// <summary>
 /// Initializes a new instance of the <see cref="ComplexAnnotationReferenceCore"/> class.
 /// </summary>
 /// <param name="typeRef">
 /// The type ref. 
 /// </param>
 /// <param name="titleRef">
 /// The title ref. 
 /// </param>
 /// <param name="textRef">
 /// The text ref. 
 /// </param>
 public ComplexAnnotationReferenceCore(IComplexTextReference typeRef, IComplexTextReference titleRef, IComplexTextReference textRef)
 {
     this._typeRef = typeRef;
     this._titleRef = titleRef;
     this._textRef = textRef;
 }