public MaintainableMutableObjectBaseCore(IMaintainableObjectBase maintainable) : base(maintainable) {
			this._agencyId = maintainable.AgencyId;
			this._version = maintainable.Version;
		    this._isIsFinal = maintainable.Final;
			this._isStub = maintainable.Stub;
		}
        /// <summary>
        /// The add maintainable.
        /// </summary>
        /// <param name="maintainableObject">
        /// The categorySchemeObject.
        /// </param>
	    public void AddMaintainable(IMaintainableObjectBase maintainableObject)
        {
		    switch(maintainableObject.BuiltFrom.StructureType.EnumType) 
            {
		        case SdmxStructureEnumType.CategoryScheme : 
                    AddCategoryScheme((ICategorySchemeObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.CodeList : 
                    AddCodelist((ICodelistObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.ConceptScheme : 
                    AddConceptScheme((IConceptSchemeObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.Dataflow : 
                    AddDataflow((IDataflowObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.HierarchicalCodelist : 
                    AddHierarchicalCodelist((IHierarchicalCodelistObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.Dsd : 
                    AddDataStructure((IDataStructureObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.Process : 
                    AddProcess((IProcessObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.ProvisionAgreement : 
                    AddHierarchicalCodelist((IHierarchicalCodelistObjectBase)maintainableObject);
		            break;

		        case SdmxStructureEnumType.Registration : 
                    AddRegistration((IRegistrationObjectBase)maintainableObject);
		            break;

		        default: 
                    throw new SdmxNotImplementedException("SuperBeansImpl.addMaintainable of type : " + maintainableObject.BuiltFrom.StructureType.StructureType);
		    }
	    }